基于相关性的配对交易策略

剑_雪 2016-12-17 15:00:43

浏览量: 977

            均值回归(mean-reversion)与动量(momentum)是α策略的两种思路(或者理想),在目前的行情中, 基于均值回归的策略可能会比较受到投资者们的关注。 对于这种思路很多大神早就开发了比较稳定的模型,比如×思录上面的分级A轮动策略。


思路:

1、找到两只相关性强的股票。

2、研究数据确定二者具有较稳定的关系。

3、根据上面的关系建立策略。

4、对策略进行调试、优化。

三、步骤(以下步骤在[研究]中进行)

# 1、找到两只相关性很强的股票,这里我在50指数里找。

panel = get_price(get_index_constituents('000016.SH'),start_date='2015-01-01', end_date='2015-12-31', frequency='1d') 
df = panel['close']

#数据非常好,京东已经返回了一个Pandas,省了很多事。
#下面我们计算出相关系数
#取上证50指数数据,返回一个[pandas.Panel]

dfcorr = df.corr().replace(1, 0)

这里的corr就是计算相关系数。

#找出相关系数最大的两个品种
pair = dfcorr[dfcorr == dfcorr.max().max()].count()
pair = pair[pair == 1].index.tolist()

已经把50成份股里面相关性最大的两只股票找出来了。

我们画个图来看所有的数据。

#把图画出来,看看两者的价格比是不是在一个稳定的区间
df['pairRatio'] = df[pair[0]] / df[pair[1]]
df['pairRatioMean'] = df.pairRatio.describe()['mean']
df['pairRatioHighSigma'] = df.pairRatio.describe()['mean'] + df.pairRatio.describe()['std']
df['pairRatioLowSigma'] = df.pairRatio.describe()['mean'] - df.pairRatio.describe()['std']


fig = plt.figure(figsize = (20, 20*0.618))
ax = fig.add_subplot('110')
ax0 = df[pair].plot(ax = ax)

ax1 = df.pairRatio.plot(linestyle = '--', secondary_y= True, legend= True)
ax2 = df.pairRatioMean.plot(linestyle = '--', color = 'grey', secondary_y= True, legend= True)
ax3 = df.pairRatioHighSigma.plot(linestyle = '-.', color = 'grey', secondary_y= True, legend= True)
ax4 = df.pairRatioLowSigma.plot(linestyle = '-.', color = 'grey', secondary_y= True, legend= True)

从图中看出一些规律:

1、601377的价格大部分时间要高于601901;

2、双方的比价正常区间大概范围是1.02-1.12

于是我们可以去写策略了。(略)

2、

3条回复 添加回复
小鹏北京

厉害了。


2016-12-19 09:41:29
小鹏北京

用get_price会报错。555


2016-12-19 11:37:07
gguava

找出相关性高的pairs 之后怎么赢利啊?


2017-07-11 17:16:44
1
提交
Copyright © 2004-2017 京东JD.com 版权所有 | 投资有风险,购买需谨慎