首先,历史前五日的Pearson相关系数若大于给定的阈值。
如果两只股票走势趋同,则按上涨(下跌)趋势买入(卖出)股票。
如果两只股票走势背离,则买入下跌股票,卖出上涨股票。
首先需要在A股中寻找走势相关性很大的股票,这是一项很繁复的工作。为简单起见,这里直接使用了一个现成的结果:000159和000967在2012年的走势十分相似,这一点可以通过复权收盘价曲线来验证。
df = DataAPI.MktEqudAdjGet(secID = '000159.XSHE', field = 'closePrice', beginDate = '20120101', endDate = '20130101')
df['000159'] = df['closePrice']
df = df.loc[:, ['000159']].reset_index()
df2 = DataAPI.MktEqudAdjGet(secID = '000967.XSHE', field = 'closePrice', beginDate = '20120101', endDate = '20130101')
df2['000967'] = df2['closePrice']
df2 = df2.loc[:, ['000967']].reset_index()
df = df.merge(df2, left_on=['index'], right_on=['index'])
df = df.loc[:, ['000159', '000967']]
df.plot()
df['000159'] = df['closePrice']
df = df.loc[:, ['000159']].reset_index()
df2 = DataAPI.MktEqudAdjGet(secID = '000967.XSHE', field = 'closePrice', beginDate = '20120101', endDate = '20130101')
df2['000967'] = df2['closePrice']
df2 = df2.loc[:, ['000967']].reset_index()
df = df.merge(df2, left_on=['index'], right_on=['index'])
df = df.loc[:, ['000159', '000967']]
df.plot()
回测:
from scipy.stats.stats import pearsonr
start = '2013-01-01'
end = '2014-01-01'
benchmark = 'HS300'
universe = ['000159.XSHE', '000967.XSHE']
capital_base = 1000000
end = '2014-01-01'
benchmark = 'HS300'
universe = ['000159.XSHE', '000967.XSHE']
capital_base = 1000000
def initialize(account):
account.cutoff = 0.9
account.prev_prc1 = 0
account.prev_prc2 = 0
account.prev_prcb = 0
account.cutoff = 0.9
account.prev_prc1 = 0
account.prev_prc2 = 0
account.prev_prcb = 0
def handle_data(account):
if len(account.universe) < 2: return
clsp = account.get_attribute_history('closePrice', 5)
stk1, stk2 = universe
px1, px2 = clsp[stk1], clsp[stk2]
prc1, prc2 = px1[-1], px2[-1]
prcb = account.get_symbol_history('benchmark', 1)['return'][0]
if account.prev_prc1 == 0:
if len(account.universe) < 2: return
clsp = account.get_attribute_history('closePrice', 5)
stk1, stk2 = universe
px1, px2 = clsp[stk1], clsp[stk2]
prc1, prc2 = px1[-1], px2[-1]
prcb = account.get_symbol_history('benchmark', 1)['return'][0]
if account.prev_prc1 == 0:
本文介绍了一种基于两只高度相关的股票进行配对交易的策略。该策略利用Pearson相关系数评估股票价格的相关性,并据此做出买入或卖出决策。文中通过实际案例——000159和000967两只股票在2012年的价格走势——演示了如何实现这一策略。
2151





