【量化】基差策略(以甲醇为例)
文字介绍与顺基差思路来源于 @Jerry Ma 大佬,向大佬学习!顺基差交易基差变化交易分位数交易构建布林带辅助现有策略顺基差辅助基差
文字介绍与顺基差思路来源于 @Jerry Ma 大佬,向大佬学习!
- 顺基差交易
- 基差变化交易
- 分位数交易
- 构建布林带
- 辅助现有策略
- 顺基差辅助
- 基差变化辅助
基差
基差:是指现货价格减去期货价格。其本质上反映了三个价差:时间价差、品质价差和地区价差。
时间价差是指未来距离当下这段时间存在诸多不确定性,由于这种不确定性带来的预期溢价或折价就是时间价差;品质价差是指期货交割品和现货的品质区别,因为期货盘面反映的是标准品的价格,而替代品与其之间存在品质差别,所以交易所一般会设置升贴水;地区价差是指由于基准交割库所在地与非基准交割库所在地的价格不同,哪个地区交割库交割量更大更能反映盘面的期货价格。
严格来讲,计算基差的时候应该把现货价格折成盘面价格再减去期货价格,这步就是在处理品质、地区价差的问题。如计算华东地区螺纹钢基差时会用现货价格/0.97,因为螺纹钢交割采用过磅交割需要处理磅差问题,华北地区螺纹钢同样需要/0.97,因为华北交割库存在贴水交割问题;铁矿石则需要把湿吨变为干吨再计算品质价差等。
现货价格>期货价格,为正基差或现货升水,当现货开始强于期货从而导致现货升水幅度越来越大或贴水幅度越来越小时称为基差走强;反之为负基差或现货贴水,以及基差走弱。
顺基差交易,即期货升水做空,期货贴水做多。
顺基差交易可以带来客观的高盈亏比。基差修复的方向有两种,一种是期货上涨来修复基差,另一种是现货下跌来修复基差。通过基本面分析或者技术分析,更多的是主观判断基差修复的方向,从而提高交易的胜率。
假设,现在螺纹钢现货价格是4000元/吨,期货价格是3700元/吨,假设修复基差两种方式的概率都是50%,如果顺基差交易做多期货,如果做对了,最终期货和现货价格都是4100元/吨,那么可以赚400元/吨;如果做错了,最终期货和现货价格都是3600元/吨,那么亏损100元/吨。因此,这笔交易的盈亏比就是4∶1。
但基差只是判断一个相对有利的交易方向,并不能保证较高的交易胜率。如当市场预期较乐观的时候,即使期货升水,也会出现期货引领现货价格上涨的情况,2017年橡胶期货,一直是期货升水现货,结果期货价格上涨把升水幅度拉大,然后现货跟涨进行基差修复。又比如市场预期较悲观的时候,即使期货贴水,也会出现期货引领现货价格下跌的情况,2018年的螺纹钢,一直是期货贴水现货,当时RB1801追随现货上涨,最终发生了逼仓行情,RB1805没跟涨反而下跌,结果期货价格下跌把贴水幅度拉大,然后现货跟跌,进行基差修复。
量化验证
总结:
- 顺基差交易本身并没有太大的帮助,无法找到行情拐点、且现货易被期货带着走的特性,导致顺基差策略既无法保持相对高胜率、也无法保证相对高盈亏比,甚至逆基差交易效果比顺基差要好。
- 基差环比变化是一个不错的交易指标,该策略无需参数担心过拟合的影响,能达到相对高的收益和相对低的回撤,但需要事先回测不同地区基差的影响如何,如甲醇的鲁南基差效果远好于江苏基差。
- 将过去几日的基差划分层次的策略,效果好的参数本质上类似于基差环比变化策略。
- 将基差作为数据源构建自适应布林带,无论是江苏基差还是鲁南基差均可以获取相对较好的收益,且可以较好控制回撤,平均持仓周期3-6日可以给予操作者正反馈,但60%的胜率手动操作还是反人性的,不管怎样,相对极小的回撤使得基差布林线策略远好于以收盘价构建的布林线策略。
- 辅助现有策略并不能显著提升效果,思考原因大概率是因为我们用基差优化了入场,出场没有得到优化,因此使一些参数范围提高了胜率,但盈利后的利润回吐问题并没有解决。与其辅助现有策略,不如将基差作为数据源构建CTA策略。
顺基差交易
品种:甲醇
交易时间:20150101-2022-03-31
资金使用率:10%
基差选取:江苏、鲁南
定义策略:
基差上穿0,做多;基差下穿0,做空。
江苏结果:
累积净值 0.78
年化收益 -3.42%
最大回撤 -46.75%
最大回撤开始时间 2016-07-29 00:00:00
最大回撤结束时间 2021-10-20 00:00:00
年化收益/回撤比 0.07
盈利笔数 85
亏损笔数 61
胜率 58.22%
每笔交易平均盈亏 -0.11%
盈亏收益比 0.64
单笔最大盈利 8.69%
单笔最大亏损 -19.19%
单笔最长持有时间 329 天 0 小时 0 分钟
单笔最短持有时间 0 天 0 小时 0 分钟
平均持仓周期 16 天 9 小时 12 分钟
最大连续盈利笔数 7
最大连续亏损笔数 5
鲁南结果:
累积净值 0.71
年化收益 -4.62%
最大回撤 -43.32%
最大回撤开始时间 2015-12-01 00:00:00
最大回撤结束时间 2022-03-08 00:00:00
年化收益/回撤比 0.11
盈利笔数 70
亏损笔数 47
胜率 59.83%
每笔交易平均盈亏 -0.22%
盈亏收益比 0.56
单笔最大盈利 9.53%
单笔最大亏损 -15.47%
单笔最长持有时间 345 天 0 小时 0 分钟
单笔最短持有时间 0 天 0 小时 0 分钟
平均持仓周期 19 天 14 小时 58 分钟
最大连续盈利笔数 9
最大连续亏损笔数 4
可以看到针对一些行情是可以抓住的,胜率维持在55%-60%。
但缺点也比较明显,第一是较难抓住拐点,可能是在反转途中期货表现领先于现货,比如鲁南15年年底,基差为负,但价格已经开始上涨,进行了回撤,又比如江苏17年初,价格已经开始跌了但基差依然为正;第二是大趋势来临时往往期货领先于现货,比如鲁南21年年中一直是期货领涨现货,基差为负,等到9月份基差才为正,但接下来又因为抓不到拐点回吐利润,同样18年年中期货领涨现货,基差为负,等到11月份基差为正后又期货领跌,同样16年底也是如此。
但是逆基差交易不一定差....以下分别是江苏、鲁南的结果:
基差变化交易
定义策略:
基差环比>0且上一期基差环比<=0做多,基差环比<0且上一期基差环比>=0做空
江苏结果:
累积净值 1.03
年化收益 0.37%
最大回撤 -43.25%
最大回撤开始时间 2017-10-29 00:00:00
最大回撤结束时间 2021-09-16 00:00:00
年化收益/回撤比 0.01
盈利笔数 546
亏损笔数 454
胜率 54.60%
每笔交易平均盈亏 0.01%
盈亏收益比 0.85
单笔最大盈利 10.65%
单笔最大亏损 -6.46%
单笔最长持有时间 12 天 0 小时 0 分钟
单笔最短持有时间 0 天 0 小时 0 分钟
平均持仓周期 1 天 7 小时 24 分钟
最大连续盈利笔数 14
最大连续亏损笔数 6
鲁南结果:
累积净值 2.79
年化收益 15.26%
最大回撤 -24.23%
最大回撤开始时间 2016-03-21 00:00:00
最大回撤结束时间 2017-04-13 00:00:00
年化收益/回撤比 0.63
盈利笔数 524
亏损笔数 376
胜率 58.22%
每笔交易平均盈亏 0.12%
盈亏收益比 0.93
单笔最大盈利 6.60%
单笔最大亏损 -5.35%
单笔最长持有时间 14 天 0 小时 0 分钟
单笔最短持有时间 0 天 0 小时 0 分钟
平均持仓周期 1 天 14 小时 3 分钟
最大连续盈利笔数 9
最大连续亏损笔数 6
该策略效果明显比顺基差交易效果好得多,尤其是鲁南基差,最大回撤仅24.23%,对于单参数策略来说是非常有效的一个标志,且单笔持有最长时间为14天,相对较为短期,适合辅助交易者操作,但是也存在一直做错的环节,如要实盘,需进行更深层次的研究。
逆着做效果不好,不再赘述。
分位数交易
定义策略:
设置分位数m,将过去n天的基差值根据分位数算出高分位数和低分位数两个值。假设为25%分位数,即得到高分位数为过去n天75%分位值、低分位数为过去n天25%分位值。前一日小于高分位数、今日大于高分位数做多,前一日大于低分位、今日小于低分位做空。
江苏结果:
结果显示江苏基差的280-465日、1分位数的结果最好。
但下面的[280, 1]参数结果说明该策略开仓次数太少,难以给人参考。
取表现最好的[280, 1]参数,结果如下:
累积净值 2.89
年化收益 15.84%
最大回撤 -21.90%
最大回撤开始时间 2017-05-10 00:00:00
最大回撤结束时间 2018-10-14 00:00:00
年化收益/回撤比 0.72
盈利笔数 5
亏损笔数 1
胜率 83.33%
每笔交易平均盈亏 21.74%
盈亏收益比 4.95
单笔最大盈利 75.15%
单笔最大亏损 -5.49%
单笔最长持有时间 739 天 0 小时 0 分钟
单笔最短持有时间 146 天 0 小时 0 分钟
平均持仓周期 366 天 4 小时 0 分钟
最大连续盈利笔数 3
最大连续亏损笔数 1
鲁南结果:
结果显示鲁南基差的5-10日、3-8分位数的结果最好,这或许也能侧面佐证为什么根据基差变化方向可以得到比较好的收益。
下面的[15, 2]参数策略不论是资金曲线、开仓点还是最终结果都与上文基差变化策略相似,细想之下其实逻辑有着相似之处,即基差变化的方向在短期就会改变,而该策略也是取十几个周期值比较基差大小。
取表现最好的[15, 2]参数,结果如下:
累积净值 2.7
年化收益 14.74%
最大回撤 -17.88%
最大回撤开始时间 2016-03-21 00:00:00
最大回撤结束时间 2016-11-01 00:00:00
年化收益/回撤比 0.82
盈利笔数 205
亏损笔数 133
胜率 60.65%
每笔交易平均盈亏 0.32%
盈亏收益比 0.97
单笔最大盈利 14.83%
单笔最大亏损 -7.76%
单笔最长持有时间 36 天 0 小时 0 分钟
单笔最短持有时间 0 天 0 小时 0 分钟
平均持仓周期 6 天 10 小时 4 分钟
最大连续盈利笔数 8
最大连续亏损笔数 5
构建布林带
定义策略:
使用基差构建自适应布林带,突破上轨做多,突破下轨做空,到达中轨平仓。
江苏结果:
取表现最好的[6]参数,发现表现并不好,或许回测周期缩短会有更好的效果,同时参数表现好的集中在短周期,说明基差还是应该与最近几日进行比较效果更好:
累积净值 1.57
年化收益 6.47%
最大回撤 -13.81%
最大回撤开始时间 2019-03-12 00:00:00
最大回撤结束时间 2020-04-01 00:00:00
年化收益/回撤比 0.47
盈利笔数 116
亏损笔数 105
胜率 52.49%
每笔交易平均盈亏 0.22%
盈亏收益比 1.29
单笔最大盈利 7.18%
单笔最大亏损 -4.61%
单笔最长持有时间 19 天 0 小时 0 分钟
单笔最短持有时间 0 天 0 小时 0 分钟
平均持仓周期 3 天 13 小时 40 分钟
最大连续盈利笔数 6
最大连续亏损笔数 6
鲁南结果:
参数范围与江苏大致相同,但表现明显更好,从以上四个策略看来,不同地区的基差参考价值也是不同的。
取表现最好的参数[9],回撤极小,结果较好,胜率也达到了60%:
累积净值 1.78
年化收益 8.29%
最大回撤 -8.23%
最大回撤开始时间 2015-07-29 00:00:00
最大回撤结束时间 2015-08-26 00:00:00
年化收益/回撤比 1.01
盈利笔数 93
亏损笔数 61
胜率 60.39%
每笔交易平均盈亏 0.40%
盈亏收益比 1.08
单笔最大盈利 8.87%
单笔最大亏损 -4.72%
单笔最长持有时间 21 天 0 小时 0 分钟
单笔最短持有时间 0 天 0 小时 0 分钟
平均持仓周期 6 天 1 小时 42 分钟
最大连续盈利笔数 7
最大连续亏损笔数 5
将资金使用率提高到50%,回撤达到了37%,净值到了9.11,卡玛比在0.96,一定程度上可以将其作为主观决策的辅助策略,同时后续可以作为其它策略辅助开仓的指标。
辅助现有策略
定义策略:
设定自适应布林策略,添加基差的上述策略,查看是否会提升自适应布林策略效果。
自适应布林策略原结果:
rule_type | leverage | 年化收益回撤比 | 累计净值 | 年化收益 | 最大回撤 |
---|---|---|---|---|---|
1D | 1 | 0.56 | 1.18 | 0.03 | -0.11 |
1H | 1 | 0.54 | 1.32 | 0.06 | -0.13 |
5T | 1 | 0.57 | 1.29 | 0.05 | -0.11 |
顺基差辅助
定义策略:在原策略的基础上,基差为正才开多单,基差为负才开空单。
江苏结果:
rule_type | leverage | 年化收益回撤比 | 累计净值 | 年化收益 | 最大回撤 |
---|---|---|---|---|---|
1D | 1 | -0.10 | 0.77 | -0.04 | -0.32 |
1H | 1 | 0.01 | 1.00 | 0.00 | -0.18 |
5T | 1 | 0.03 | 0.98 | -0.01 | -0.19 |
我们取每个周期里表现最好的参数与原版策略进行对比:
策略 | 累积净值 | 年化收益 | 最大回撤 | 年化收益/回撤比 | 胜率 |
---|---|---|---|---|---|
原-1D-13 | 1.28 | 3.46% | -18.98% | 0.18 | 40.00% |
顺基差-1D-13 | 1.07 | 0.94% | -17.94% | 0.05 | 41.03% |
原-1H-59 | 1.3 | 3.68% | -16.35% | 0.23 | 37.76% |
顺基差-1H-59 | 1.23 | 2.92% | -13.03% | 0.22 | 45.00% |
原-5T-111 | 1.05 | 0.74% | -20.79% | 0.04 | 35.52% |
顺基差-5T-111 | 1.2 | 2.59% | -9.34% | 0.28 | 37.57% |
可以看到该方法并不能显著提高收益和胜率,仅在5T周期相对提高了收益,但胜率也没显著提升,而整体均不如原版策略。
鲁南结果:
rule_type | leverage | 年化收益回撤比 | 累计净值 | 年化收益 | 最大回撤 |
---|---|---|---|---|---|
1D | 1 | -0.09 | 0.84 | -0.03 | -0.25 |
1H | 1 | -0.05 | 0.92 | -0.01 | -0.21 |
5T | 1 | -0.01 | 0.95 | -0.01 | -0.22 |
我们取每个周期里表现最好的参数与原版策略进行对比:
策略 | 累积净值 | 年化收益 | 最大回撤 | 年化收益/回撤比 | 胜率 |
---|---|---|---|---|---|
原-1D-60 | 1.25 | 3.11% | -19.66% | 0.16 | 50.00% |
顺基差-1D-60 | 1.03 | 0.41% | -15.40% | 0.03 | 55.36% |
原-1H-61 | 1.19 | 2.39% | -19.85% | 0.12 | 37.23% |
顺基差-1H-61 | 1.14 | 1.88% | -15.22% | 0.12 | 32.79% |
原-5T-152 | 1.59 | 6.63% | -13.71% | 0.48 | 38.07% |
顺基差-5T-152 | 1.22 | 2.77% | -13.03% | 0.21 | 36.43% |
结论是整体不如原版策略,且不如江苏基差策略。
基差变化辅助
定义策略:在原策略的基础上,基差环比为正才开多单,基差环比为负才开空单。
江苏结果:
rule_type | leverage | 年化收益回撤比 | 累计净值 | 年化收益 | 最大回撤 |
---|---|---|---|---|---|
1D | 1 | -0.06 | 0.87 | -0.02 | -0.27 |
1H | 1 | -0.01 | 0.96 | -0.01 | -0.19 |
5T | 1 | 0.08 | 1.01 | 0.00 | -0.19 |
由于效果不好,就不再对比。
鲁南结果:
rule_type | leverage | 年化收益回撤比 | 累计净值 | 年化收益 | 最大回撤 |
---|---|---|---|---|---|
1D | 1 | 0.03 | 1.01 | 0.00 | -0.22 |
1H | 1 | 0.00 | 0.99 | 0.00 | -0.08 |
5T | 1 | 0.03 | 1.00 | 0.00 | -0.01 |
我们取每个周期里表现最好的参数与原版策略进行对比:
策略 | 累积净值 | 年化收益 | 最大回撤 | 年化收益/回撤比 | 胜率 |
---|---|---|---|---|---|
原-1D-3 | 0.66 | -5.57% | -40.66% | 0.14 | 35.28% |
顺基差-1D-3 | 1.4 | 4.78% | -7.25% | 0.66 | 45.07% |
原-1H-48 | 1.14 | 1.85% | -18.50% | 0.1 | 36.41% |
顺基差-1H-48 | 1.36 | 4.33% | -8.55% | 0.51 | 39.73% |
原-5T-152 | 1.59 | 6.63% | -13.71% | 0.48 | 38.07% |
顺基差-5T-152 | 1.37 | 4.41% | -9.72% | 0.45 | 37.80% |
整体效果很差,尽管在一些参数上提升了效果,但也比不上单纯使用基差策略,原因可能是该方法只优化了入场点、相对提高了胜率,但出场点依然由原策略控制,导致出场位置依然不好。