【点宽专栏】基于贝叶斯统计的套利策略(上)
作者:互联网
一、基本原理
均值回复,市场价格将回复到它的长期的均值水平。买进表现相对较差的金融产品,同时卖出表现较好的,当未来两者价格的背离得到纠正,那么进行相反的平仓操作,获利结算。
数学定义
S.Hogan (2003) 对统计套利进行了精确的数学定义,他们强调统计套利是具有零初始成本,自融资的交易策略,用(x(t):t0)表示,并且累计的折现值为v(t),满足如下条件:
条件1:表明零初始成本以及自融资的交易策略。
条件2:意味着利润的现值为正,即统计套利有条件地向纯套利收敛。
条件3:说明时间平均的方差趋近于0。
条件4:表示出现亏损的概率接近于0,这一点可以通过组合的重新调整或者控制空头和多头头寸的总额来避免过度的净头寸暴露。
二、价差套利
价差套利的本质为配对交易,产生配对相关性的原因是因为远期和当期合约的差价应该收敛在某个范围,否则套利者会直接持有仓单到下月交割,或者卖空当期合约提前交割。
实际步骤:
(1)筛选价差稳定、流动性好的期货合约配对
(2)估计稳健的价差预期
(3)偏离长期均衡关系一定程度买入,回复卖出
(4)给出买入、止损、卖出区间
对于价差套利,最为核心的部分在于第2步价差估计,本文就是以贝叶斯估计的视角来看价差变化这个问题。
传统价差估计主要分2个参数估计:(1)价差均值(2)价差方差估计。
其目的在于:(1)找到均衡点(2)找到非正常偏离范围。
价差均值和方差估计可以采用很多数理方法,如滚动平均MA、滚动加权平均EMA、GARCH等,这里不再赘述。
三、贝叶斯推导与案例
除去繁杂头疼的数学推导,贝叶斯的思想本质十分简单:
(1)原有样本对于某个随机变量参数进行了估计,或者我有一组预先知道的参数(先验参数);
(2)现在获得了新的样本;
(3)对原有的参数估计进行更新。
在第3步,如果采用贝叶斯估计方法进行参数修正,那么就是贝叶斯统计,当然也有些人把所有样本都拿到一起重新估计,这也可以,但是可能会影响效率,或者有时候参数是先验给出的,没办法把原有数据拿出来一起估计。此外,在满足一些条件下,贝叶斯估计就是在把所有样本拿出来一起重新估计(如研报里的假定方差不变,参数符合共轭分布)。下面我们展示正式化的推导。
贝叶斯估计步骤:
(1)形成先验分布图片,即参数的分布,如正态分布里均值方差的分布,比如图片符合图片样本分布图片,给定参数样本的分布,如给定方差和均值,符合正态分布样本的概率密度函数。
(2)根据贝叶斯公式计算后验分布图片,给定样本下,参数的分布。
其可以概括为:(1)原有的参数(符合某个分布)计算现在样本的概率分布(2)计算新数据下现估计参数的分布(3)求期望知道更新后参数的分布(包括期望和均值)。
案例
图
请注意,方差不变下的高斯分布估计,就是在滚动平均!这和我们平时思考没有本质区别,传统价差估计采用滚动方法就是在贝叶斯估计——用新数据更新旧估计。例如在贝叶斯思想里,我用t-30至t-11的数据先估计出先验的价差均值u和方差v,而参数分布的参数就为均值u和方差v/20。然后用新来的t-10至t-1数据对原有参数进行更新,那么其新的参数分布参数就是二者加权平均,即均值u1/3020+u2/3010,方差v不变。这和直接用过去30个数据合在一起直接估计没有区别。
四、铜合约差价
我们提取铜合约20170301至20170401时间段内CU主力合约和次主力的5分钟数据,计算5分钟级别上,两个合约的价差,其表现如下:
根据上述贝叶斯思想,我们采取方差不变假设,对价差均值进行滚动估计,图1中绿线为我们的预期价差,蓝线为实际价差,随后我们把实际价差与预期价差之间的差额历史分布绘制出来,如图2。
可以看出,我们滚动估计的价差和实际价差较为吻合,二者差额在正负40点内波动。铜合约CU的交易单位为5吨/手,最小变动单位为10元/吨,保证金比例5%,一手合约最低保证金3000055%=7500元,1个跳价5*10=50元,约50/7500=0.67%。因此捕捉到单个跳价(10点)的收益按合约价格30000元来算,满杠杆收益率为0.67%,当合约价格继续上涨,收益率可能会下降。为了保证去除套利滑点、手续费、杠杆等因素仍具有套利空间,我们假设实际价差与估计价差差额偏离达到2个跳价时才开仓套利。
数据提取代码
clear,clc
[time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(‘SHFE’,‘CU0000’,‘min’,5,20170301,20170401,true,‘NA’);
cu0 = [time,open,high,low,close,volume,turnover,openinterest];
[time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(‘SHFE’,‘CU0001’,‘min’,5,20170301,20170401,true,‘NA’);
cu1 = [time,open,high,low,close,volume,turnover,openinterest];
save(‘data’,‘cu0’,‘cu1’)
价差表现代码
clear,clc
load data
close0 = cu0(:,5);
close1 = cu1(:,5);
spread = close0-close1;
method1_T = 30;
spread = repmat(spread,1,2);
for i=(method1_T+1):tradeMin
sample = spread(i-method1_T:i-1,1);
spread(i,2) = mean(sample);
end
figure
plot(spread)
xlim([1 tradeMin])
figure
hist(spread(:,2)-spread(:,1))
小结
本篇梳理了贝叶斯估计和统计套利的思想,下篇会用几种方法,测试收益结果。
参考
1.《广发证券》套利策略研究之五——基于贝叶斯统计的套利策略
2.《时间序列》汉密尔顿
3.对外经济贸易大学金融专硕(量化)课件《统计套利》
4.对外经济贸易大学金融专硕(量化)课件《时间序列》
附录
方差不变高斯分布贝叶斯估计
方差变化下高斯分布均值和方差贝叶斯估计
标签:方差,价差,套利,贝叶斯,估计,专栏,参数 来源: https://blog.51cto.com/u_14793075/2781003