在聚宽社区,有人分享了一套商品期货动量模型,今天借聚宽量化实验室分享该策略给各位读者们:
什么是动量效应
这种类似惯性方向运动的价格变化现象被称作动量效应。比较专业地说:动量效应是由Jegadeesh和Titman(1993)提出的,是指股票的收益率有延续原来的运动方向的趋势,即过去一段时间收益率较高的股票在未来获得的收益率仍会高于过去收益率较低的股票。
美股市场,热门股票和市场指数都呈现很强的动量效应
我们尝试过通过均线、高低点突破、通道等方式捕捉动量,让模型在动量产生时候入场,在动量衰竭或已经呈现反向运行(反转)时候出场。其中均线表达了最近的平均波动,高低点突破表达了一个价格区间被突破后,交易者是否会一致认为价格继续运行,通道突破更大的含义在乎过滤噪音,在通道内部的动量我们确认为不被信任的动量,必须突破通道的上下轨,我们才开仓交易。
动量是可以分析观测,并且把握的,而反转虽然也有办法捕捉,并转化成收益,但是它更倾向于随机。随机波动非常可怕,这是我们大部分利润被消耗的核心原因,所以做模型,选品种,选周期一定要尽可能避免随机波动,且建模数据量尽可能大,这样才能准确观测把握动量波动。
为什么会产生动量
今天我们主要介绍时间序列动量的最原始验证和捕捉方法。但是在此之前,我想再说一点题外话,为什么会存在动量效应。股票市场上的这些动量效应和反转效应,来源于投资者的心理认知偏差,比如:
(1)过度自信
人们在决策中总是倾向于过高估计自己的判断力和决策力,进而容易忽视情况变化造成决策失误。
(2)后悔厌恶
后悔厌恶指当人们做出错误的决策时,对自己的行为感到痛苦。
(3)损失厌恶
损失厌恶是指人们面对同样数量的收益和损失时,感到损失比收益更加令他们难以忍受。
(4)锚定效应
锚定效应是指人们在对某人某事做出决策时,易受第一印象或者第一信息支配,人们在接受决策时,会不自觉地给予最初信息过多的关注。
(5)从众心理
当人们发现自己与多数人的判断不一致时,感受到一定的压力,从而改变原来自己正确的判断。
图片来自《大数投资》
这些心理的认知偏差影响了投资者的决策行为,从而使股票市场对某种趋势反应过度或者反应不足,并最终导致动量效应和反转效应。
时间序列动量模型原理
根据海通证券研报,Moskowitz, Ooi 和 Pedersen(2012)使用 1985 年至 2009 年间 58 个商品期货品种的数据研究发现,商品期货具有明显的时间序列动量效应,做多前期上涨的品种,做空前期下跌的品种构建的多品种投资组合可以取得持续稳定的超额收益。我们使用我国商品期货品种来验证该策略的有效性。
策略逻辑:
做多前 R 个交易日上涨的品种,
做空前 R 个交易日下跌的品种,
每隔 H 个交易日调整一次;
回测时间:2005/01/04 – 2017/01/26;
品种选取:调仓日选取上市满半年,同时主力合约前 20 个交易日日均成交量大于1 万手的期货品种作为可选标的;
参数:
排序期 R 和持有期 H:10 个交易日;
仓位:50%;
保证金:20%;
交易成本:单边万分之三;
备注:避免起点日期的影响,将初始资金等权分配到 10 个账户中,每个账户初始
日期相差一个交易日,将 10 个账户里的资金汇总计算每日的净值。
如此简单的策略,可以取得23.58%的年化收益率,收益风险比和calmar 比率分别为1.15和0.96。而同期等权做多策略年化收益率仅为-1.76%,最大回撤高达88%。这说明了静态持有大宗商品肯定是不行的,这不是一种投资思路,大宗商品的价格具有极大的不确定性。
首先设计模型第一部分,做回测的环境设置,需要注意我们在这里使用了定时运行函数run_weekly,大致来完成每5个交易日的调仓效果,为什么不用计数器每过5天定期调仓呢,之后为大家解读。
时间序列动量测试效果
之前说过,我们使用了定时函数完成回测工作,而没有采用日期计数器模式。因为在测试中我们发现,时间序列动量模型会存在较为严重的路径依赖。
何为路径依赖?
比如我们从2017年1月2日和1月16日,两个不同的回测周期运行模型,会得到不一样的结果,在某些品种上差异还挺大。实际上我们发现,上图中下半部分回测只不过是错过了关键的一两次开仓,导致整体收益大幅度落后上图。这属于测试中的重要误差。
所以解决此问题方法有两种:
1、将调仓分散:比如T日开始,每隔5天调仓,则在T日,T 1日,T 2日,T 3日,T 4日,每天都运行模型,分配20%资金交易。这样基本上避免了路径依赖问题,但是较为消耗资金,股票类模型尤其如此。
2、使用定时函数:5日的调仓变为run_weekly驱动的每周调仓,这样还能避免因为3天、7天的节假日造成的某些周日期较少,但是依然间隔周末的问题。因为每隔一个周末,交易者心态都会发生较大变化,市场资金面也是一样,所以理论上的每5日调仓,应该等同于每周调仓。在资金非常充裕的情况下,要分配到周1~周5,资金不足可以不分配。
按照研报上推荐的周期,10日计算动量,5日调仓,我们获得此绩效如上图。看起来资金曲线很棒,说明期货动量效应确实显著,但是如果变化调仓期,到半个月(等效10日)效果就不行了(下图),看来还是需要以较快的频度调仓。
需要注意的是,下图的多组资金曲线的回测,是通过【研究】调用【回测】得到的,具体过程在这里讲过:
https://www.joinquant.com/post/4351?tag=algorithm
上图为持有期半个月,无ATR的资金曲线
切换回到5日调仓,以等资金模式测试,变化动量计算周期参数,得到下图。直观感受是,盈利更高了,回撤更小了,在2016年之后模型的盈利保持情况较好:
上图为等资金仓位,5日调仓的效果
然后我们注释掉等资金模块,打开ATR倒数头寸模块,得到多组测试绩效如下:
两组看上去差异不大,实际上,我们通过导出绩效到Excel仔细观察后发现显然ATR组的收益风险比或者说Calmar比率(Calmar Ratio,收益和最大回撤之间的关系)要更好:
以研报和我们实测最佳参数来看,的确是ATR的回撤要更小,在商品期货这种杠杆市场,更小的回撤,意味着我们可以以更大的杠杆比率去交易,所以一定要多关注最大回撤这个绩效指标。在这个很小范围内(5组)的参数变化测试中,等资金组的Calmar比率是3.99,ATR倒数(等波动率)组的Calmar比率是2.66,提升比率达到50%左右。
我们想告诉各位读者,商品期货上,做序列动量交易,来实现中长期的盈利,忍受略长时间(半年左右)的回撤,是绝对没错的。
点击“原文链接”,在这里可以找到本策略对应的完整源码。动量效应真的如此有效?快来试试吧,它可不像小市值因子那样脆弱。


雷达卡





京公网安备 11010802022788号







