上证50与中证500总体走势关联性较强,而由于市场风格和喜好,两者的相对走势往往在一个相对固定的范围内上下波动,我们可以通过回溯得到一个大概的阈值窗口,当两者的价值比例向上或者向下突破这个窗口时,我们可以开仓,在走势回归窗口时平仓,实现套利。
而如何去量化上证50与中证500的价值比例是本策略的一个难点。一开始我选择去计算上证50与中证500的平均市盈率,每天去计算两者市盈率之比,并根据每日的比值进行回溯,实践后发现此比值不够连续,导致多次出现错误的交易信号,大大影响了策略的可行性。
通过学习配对交易策略,通过计算上证50与中证500的z-score也称标准化变量,是一个数与平均数的差再除以标准差的过程,理论上其符合正态分布。该值能较为准确地衡量上证50与中证500的相对价值比例,且连续性强,能发出较为清晰的交易信号。
通过计算z-score,我们得到了5个交易信号,如下:
#如果大于正标准差
if z_score > 1.5:
# 状态为做多50,做空500
return('buy1')
# 如果小于负标准差
if z_score < -3.0:
# 状态为做多500,做空50
return('buy2')
# 如果在正负标准差之间,平掉所有仓位
if -1.8 <= z_score <= 0.9:
return('mid')
# 平掉500的空仓
if 0.9 < z_score <= 1.5:
return('sell1')
# 平掉50的空仓
if -3.0<= z_score < -1.8:
return('sell2')
最后的回测结果看出本策略空仓的时间较多,其实这也跟正态分布的特点吻合,在大多数情况下都分布在正负标准差之间,此时本策略是选择平掉所有仓位。
如果想要使得收益曲线更为平顺,可以更为细化地去控制仓位,将交易信号细化为更多段,核心思想是越接近正态分布的对称轴,仓位越低。