聚类分析上证50成分股

2020年3月10日是个划时代的日子,在全球主要市场一片惨淡的时刻,我们的大A终于走出了独立行情。

为了纪念这一天,我决定用EM聚类算法对上证50的成分股做一次聚类,将其划分为十类。

然后,我将从每类中随机选一只,打包一个投资组合,以上帝视角回测一下,PK一下ETF指数基金。

数据为10日收盘时,50只成分股收盘时的涨跌幅、成交额、大单流入额等指标。

数据加载

原始数据我已经清洗完毕,大家可以在 GitHub 上下载:https://github.com/juhengzhe/fintech

使用pandas直接加载csv文件

data=pd.read_csv("data/train_data_for_50.csv",encoding="utf-8")

特征选择与规范化

可以通过相关性分析,精简特征数据,在这里我只是剔除了股票代码和股票名称两列数据。

train_data=data.drop(columns=['代码','名称'],inplace=False)
# 用热力图呈现特征字段之间的相关性
corr = train_data.corr()
# annot=True显示每个方格的数据
a=sns.heatmap(corr,annot=True)

# 规范化
train_data=StandardScaler().fit_transform(train_data)

相关性热力图

聚类分析上证50成分股_第1张图片

EM聚类训练和预测

在这里,我使用GMM 高斯混合模型来进行训练和预测,sklearn里的GaussianMixture实现了EM聚类框架。大家也可以使用其他聚类算法。

gm = GaussianMixture(n_components=10)
gm.fit(train_data)
labels=gm.predict(train_data)

聚类结果见文章末尾

模拟创建一只基金并进行回测

50十只股票被分成了10组,从每组中随机选出一只,组成一个有十支股票的投资组合,模拟构造一只基金。

假如初始资金是一千万,每只股票投资一百万,即每只股票一次性买入一百万的市值,并于2019年3月8号完成建仓。

通过模拟回测,可以看出我们构造的这支基金一年的大概收益。

聚类分析上证50成分股_第2张图片

收益率很高,从某宝上查看,截至11日上证50相关基金近一年平均收益在15.36%。

本次回测是在某量化平台进行的,很多先决条件很理想化,例如一次全部买入,从不调仓,而且用的是最新的成分股,成分股并不是固定的,交易所会适时调整,基金经理也会及时调仓,毕竟运作一个基金是很复杂的事情。

结语:本次聚类练习,主要提供一个思路,尽量挑选不相关的股票构造一个投资组合,从而降低投资风险。

 

聚类结果

序号 名称 类别

0   贵州茅台       3
1   中信证券       8
2   中国平安       7
3   三安光电       2
4   中信建投       4
5   海螺水泥       1
6   恒瑞医药       5
7   红塔证券       9
8   招商银行       0
9   华泰证券       1
10  山东黄金       5
11  伊利股份       1
12  中国铁建       1
13  海通证券       1
14  中国建筑       1
15  隆基股份       1
16  中国联通       1
17  工商银行       0
18  兴业银行       6
19  三一重工       1
20  中国石化       0
21  药明康德       5
22  保利地产       1
23  工业富联       1
24  中国太保       6
25  复星医药       6
26  洛阳钼业       1
27  万华化学       6
28  国泰君安       1
29  中国国旅       1
30  中国国航       6
31  海尔智家       6
32  建设银行       0
33  上海机场       6
34  中国中铁       1
35  交通银行       6
36  农业银行       0
37  中国石油       0
38  上汽集团       1
39  民生银行       6
40  中国人保       6
41  中国中车       6
42  新华保险       6
43  浦发银行       6
44  光大银行       6
45  中国人寿       6
46  中国重工       6
47  中国神华       6
48  中国银行       0
49  华夏幸福       6

你可能感兴趣的:(数据分析,数据挖掘)