使用tushare我们可以获取上证50成分股历史数据,使用covariance对其历史数据进行聚类分析,我们可以得到其相关强度,对此,在其相关股价显著变化的时候,我们就可以根据其相关性进行套利赚钱。当然这只是理论分析而已。
tushare工具:http://tushare.org/
结果分析:
Cluster 1: 中国石化, 中国石油
Cluster 2: 保利地产, 华夏幸福
Cluster 3: 山东黄金
Cluster 4: 恒瑞医药, 贵州茅台, 青岛海尔, 伊利股份
Cluster 5: 中信证券, 万华化学, 东方证券, 招商证券, 国泰君安, 华泰证券
Cluster 6: 宝钢股份, 海螺水泥, 中国神华
Cluster 7: 中国联通, 中国铁建, 中国中铁, 中国建筑, 中国中车, 中国交建
Cluster 8: 上海银行
Cluster 9: 三六零
Cluster 10: 招商银行, 中国平安, 新华保险, 中国太保, 中国人寿
Cluster 11: 浦发银行, 民生银行, 上汽集团, 大秦铁路, 兴业银行, 北京银行, 农业银行, 交通银行, 工商银行, 光大银行, 中国银行
Cluster 12: 浙商证券, 中国银河
Cluster 13: 南方航空, 北方稀土, 绿地控股, 三安光电, 中国重工, 洛阳钼业结果分析:
绘图:
源码(供参考):
from __future__ import print_function import sqlite3 import sys from datetime import datetime import time import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.collections import LineCollection from six.moves.urllib.request import urlopen from six.moves.urllib.parse import urlencode from sklearn import cluster, covariance, manifold global eng plt.rcParams['font.sans-serif'] = u'STKAITI' plt.rcParams['axes.unicode_minus'] = False start_date = datetime.strptime("2015-06-29", "%Y-%m-%d") end_date = datetime.strptime("2018-06-29", "%Y-%m-%d") eng = sqlite3.connect(