策略原理:展期策略主要是基于商品或者金融期货的期现结构进行构建,当期货远月价格高于近月价格时,商品远期曲线呈现为contango结构,当期货远月价格小于近月价格时,商品远期曲线呈现为backwardation结构。当商品处于contango结构时,往往是近弱远强,这种情况就可以对商品进行做空,然后不断展期从而得到rolling收益。当商品处于back结构时,则对商品进行做多并展期。在计算出商品的展期收益率后,我们对其进行排序,主要策略是做空前N%的contango结构商品并做多前N%的back结构的商品。
展期因子算法:展期收益计算方法比较简单,只需要有近月期货价格、远月期货价格以及距离交割日天数即可。假设Pt,n是t 时刻近月合约的价格,Pt,d是t时刻远月合约的价格,Nt,n是近月合约在t时刻距离交割日的天数,Nt,n是远月合约在t时刻距离交割日的天数。则展期收益率 Rt为:
数据选择及止损:期货品种基本上涵盖所有商品,但剔除了金融期货。此外有些成交量比较低的品种也剔除在外。这些品种主要是['IC','IF','TF','T','IH','BB','FB','RR','WH','PM','RI','LR','JR','RS',WR]。策略中添加止损,止损方式主要是移动止损法,添加两个止损幅度,分别是7%与10%,当亏损大于10%时全部清仓,当亏损位于7%至10%时,清仓一半。
回测参数:初始分配资金为10000000,利用全仓资金进行回测。保证金比例设置为0.15。滑点设置为万分之5。开平仓(平今)手续费为万分之5。测试时间从2012年1月1日开始至2020年2月7日截止。收益基准对比选取的是货币基金指数。策略信号给出的卖出或者买入的期货品种按照等资金比例分配,也就是如果信号给出10个品种,利用仓位资金除以10便可以得到每个品种分配的资金。调仓频率设置为一个月进行rebalance一次。每个月月末对展期收益率重新计算并更换商品组合。
风险提示:滑点设置过小引发无法成交,系统性风险及基本面重大变化风险出现。
一、构建连续期货价格序列
针对展期收益因子进行构建策略时,首先需要对期货价格数据进行处理,期货合约选择一般会用到主力合约指数和合约加权指数,但计算收益率时候,如果用主力合约指数就会存在一定问题,因为不同主力合约换月期间会存在一定跳空价差,计算动量、展期因子等收益率就会出现误差,跳空期间的收益率是不准确的,这部分收益率投资者并未真正得到。采用合约加权指数更不可取,主要是计算策略信号会出现很多假信号。在这里我们采取了4种通用的办法来解决,将不同月份的期货合约进行拼接得到连续的期货价格。分别是向后和向前加减调整以及向后和向前比例调整。
1.向后和向前加减调整(forward_add and backward_add)
向后加减法,即保持当前主力合约的价格水平不变,将旧主力合约价格按照缺口幅度调整到当前水平,其中缺口等于新合约价格减去旧合约价格。向前加减法与其相反。向后加减法通过调整历史主力合约,虽然能保持当前合约价格水平不变,但每次有新的主力合约产生时,所有历史价格需要重算,这样就给策略计算收益率带来诸多不便,维护起来比较麻烦。向前加减法调整同样也存在一定问题,当新主力与初始主力缺口很大时,当处于上涨阶段,向前调整容易产生负值。这两种办法虽然能够将主力合约缺口处进行拼接,但在计算投资者收益率时仍不准确。
2.向后和向前比例调整(forward_prop and backward_prop)
向后比例法,即保持最新主力合约价格不变,将历史主力价格按照缺口比例调整到当前水平,其中比例为新合约价格除以历史合约价格。向前比例法与之相反。两种比例法计算的连续价格除了能够保证序列的平滑,还能用来测算真实收益率,向后比例法同样存在一定问题,当新主力合约出现时,需要重新计算历史合约,不好维护。因此采取向前比例法来对连续期货价格进行拼接。
我们不直接使用wind数据里面提供的主力合约或者期货指数数据,主要也是由于这类型数据所测算的收益率并不准确,缺口处所计算的收益率并不是投资者真正能够享受到,因此需要我们自己采取向前比例法构建连续期货价格序列,并利用该序列构建期货收益率指数,这样在后期应用期货策略时才不会出错。例如使用常规的动量策略、展期策略、期货基本面多因子挖掘时,也都会用到收益率进行回测。
二、展期收益因子回测情况
1.期现结构
当期货价格呈现近低远高时,则表现为contango结构,比如下图中的棉花期货。当期货价格呈现近高远低时,则表现为back结构,如下图中的铁矿石期货。商品的展期收益反映了持有商品现货的净收益(即便利收益减去储蓄、运输和保险等成本)。当展期收益0时,持有商品收益小于成本,商品曲线呈contango形态;当展期收益0时,持有商品收益高于成本,商品呈backward形态。
一般商品处于back结构时,往往现货走势相对较强,但若出现深度back结构时,需要对比此时商品所处的绝对价位,如果价格较高,则大概率是短期的高点。比如WTI原油,当三月与九月价差超过3美金/桶时,油价如果处于短期高点,则后市大概率下跌,且跌幅巨大。当根据期现结构做相应策略时,需要考虑绝对价格的高低,并且最好能测试不同升贴水程度对短期价格的影响。
2.多空对冲组合构建
实际上根据展期收益因子构建多空组合时,有两种策略,一种是直接做多展期收益率排名前N%的商品,并做空展期收益率排名后N%的商品。这种情况虽然可取,但实际上并未考虑到真正的展期收益率绝对值大小。如果某个时期,大部分商品展期收益率可能仅在-3%+3%左右,这样构建的组合可能达不到预期效果。因为3%收益率可能还不能cover住无风险利率。因此本文主要采取第二种策略,通过做多大于6%展期收益率的商品,同时再做空小于-6%的商品。商品池主要选择流动性好,成交量大的商品。为了方便实施策略,我们对所有商品合约进行提取,仅排除了['IC','IF','TF','T','IH','BB','FB','RR','WH','PM','RI','LR','JR','RS',WR]。这里面也包含金融期货和其他不活跃的商品。
当提取所有的商品价格数据后,我们需要按照前一步的方法对商品价格进行拼接,构建连续的期货价格序列。然后通过展期收益率公式计算各商品展期收益率,并进行排序,选择做多展期收益率大于6%并同时做空展期收益率小于-6%的商品。这里为何选择6%,实际上是需要对参数进行调优,但肯定是需要大于3%才合适。此外我们还需要增加移动止损策略,若亏损大于10%则直接清仓,若亏损在10%7%以内,则清仓一半。这里止损率也可以进行调节。
通过回测结果得到,策略从2012年1月1日开始,截止至2020年2月7号为止,总体收益率高到10倍左右,年化收益率约为36%,夏普比率稍微偏低,为1.118,最大回撤幅度较大,约为55.81%。总体来看,策略仍有改进的需求,主要是前面提到在深度back或者深度contango结构时,需要考虑绝对价格值,然后采取反向策略进行回测,可能回撤幅度更小。
3.归因分析
策略表现最好的阶段为2012年、2013年、2014年、2016年以及2019年,策略表现较差的阶段为2015年。2015年至2016年收益率大幅回撤,且持续振荡时间较长。在2015年以前,大部分商品都是大跌状态,包括国际油价、所有能化品种以及黑色品种。长期下跌的品种期现结构都呈现为深度的contango结构,因为近月极其悲观,远月价格偏强。而我们的策略主要是做空contango结构的品种,这种情况在2015年就不太适用。也与前面分析一致,在深度contango或者深度back结构时,需要考虑绝对价格,然后更改策略。
从策略收益率分布直方图来看,展期收益率因子表现为左偏图形,这与动量策略类似,但这里主要是有个60%收益率干扰。若去除这个60%收益率来看,策略可能整体呈现为标准的正太分布(均值为0),并不存在左偏现象。未避免该收益率可能不真实,我们对交易情况进行调查,我们发现该收益率是从2016年9月30日开始,到2016年12月1日截止,总体时间不超过2个月。且收益来源主要是黑色品种,以房地产和基建产业链商品为主,例如铁矿、焦炭、焦煤以及PVC。大部分商品1701合约在12月份前均平仓,后面从日线图也能看到,如果继续持有多单则面临较大亏损,证明展期收益因子在该时间段的确有较好的应用性。
三、参数调优测试
我们对不同滑点进行测试,若选取32bp的滑点,则对策略收益率影响非常大,而本文主要选取的5bp的滑点,一般来说,最大滑点也不会超过7bp,因此5bp并没有过分夸大策略收益率。
若没有更好更多的信息时,等权重是一个较优秀选择。另外,也可以用因子值进行加权,即期限曲线越倾斜,相应的权重应该越大;曲线越平坦,权重越小。我们这里主要为了回测方便,选择使用了等权分配。
由于不同展期收益率对策略影响效果不同,我们选取了4%、5%、6%、7%、8%进行回测,最后得到6%收益率最高,夏普率也最高。最大回撤幅度中等,若选取4%展期收益率进行回测,则回撤幅度会更小,但收益率偏低。
后期改进方向,可以选择深度期现结构时反向策略进行回测,通过对展期收益率进行分组,4%6%一组做多,叠加6%8%一组做空,同时对-4%-6%一组做空,叠加-6%-8%一组做多。
展期收益因子策略与动量策略相关性不强,因此作为商品配置策略其中的一种,仍具有较强的分散风险能力。可以为多元化组合提供新的收益来源。