量化投资速成营(入门课程)
Python股票量化投资
Python期货量化投资
Python数字货币量化投资
C++语言CTP期货交易系统开发
数字货币JavaScript语言量化交易系统开发
更多精彩内容,欢迎关注公众号:数量技术宅
近日来,由于对国际上新冠肺炎疫情二次爆发的担忧,全球股市、大宗商品,走出了一波持续的下跌,这不免让人想起了今年3月份,新冠肺炎第一次在全球大规模蔓延期间,全球市场的大幅杀跌,大宗商品的代表原油,更是跌到了史无前例的负油价的位置。然而从事后来看,3月份的下跌,恰恰是给了投资者抄底的机会。近期大宗商品的二次杀跌,有粉丝私信到技术宅,表达了想要抄底的想法。于是,技术宅做了这一期的专题,从数据分析的视角告诉大家,如何正确抄底大宗商品(期货)。
抄底大宗商品,我们在国内市场,主要有两种渠道:第一是买入某个商品对应的期货,第二是买入某个商品对应的ETF。但这两种抄底的方式(渠道)都有可能会出现这样的问题:你想要抄底的标的最终上涨了,然后你的账户却没有赚钱,甚至是亏损,也就是我们通常所说的“看对行情,没赚到钱”。
为什么会出现上述的情况?这是因为,不论是商品期货不同到期月合约的价格、还是商品ETF的价格,都与对应的大宗商品价格,存在着折溢价。我们以原油为例
这是某一天美原油市场各到期月合约的交易价格,我们假定原油2006合约最接近当时的现货价格,而原油2105合约,相对于2006合约,溢价了26%。这意味着,如果我们在今年6月的时候看多原油,买入美原油合约,不断移仓到明年5月,如果原油现货涨幅小于26%,我们持有的仓位将会是亏损的,原油现货涨幅等于26%,我们的仓位不赚不赔,如果原油现货涨幅达到50%,我们只能获利24%。这样远月到期月合约价格在近月到期月合约之上的商品期货市场结构,会极大的降低我们抄底获利的概率。
我们再来看另一个市场,原油基金所对应的ETF,也存在着同样的问题,市场上交易标的的价格,大幅溢价于标的本身的资产价格。按照这3只原油基金ETF的溢价率意味着,如果我们不慎在场内买入了以上3只原油基金,买入后将立即亏损38%-70%不等。溢价率70%指的是,我们买入170元的资产,其背后对应的实际资产价值只有100元。
技术宅通过大规律的历史数据验证,通常在某个大宗商品处于历史大底部的时候,该商品对应的期货、ETF,其在市场上交易的价格,相比较现货价格,往往都存在着一定的溢价。其背后的逻辑是:此时所有人都预期未来该商品会上涨,没有人愿意在代表未来的远期期货合约,贱卖该商品。
我们来看两个大宗商品实际的例子:棉花期货、橡胶期货。棉花、橡胶从11年顶点3万、4万的价格,跌至目前1万左右的价格,近两年一直在1万多的底部区域盘整。不少投资者认为棉花、橡胶的价格底部到了,进去做多,长线持有。然而棉花、橡胶的期货市场面临的问题,和我们上文中举例的原油市场一样,远月交易的商品期货价格,相比较近月交易的期货价格,有着明显的溢价。
我们在交易软件中看到的期货主力价格,在切换主力月合约的时候,存在着价格的跳变。上图的橡胶期货,如果此时主力合约从2101切换到2105,我们跟随主力合约切换,就需要在低价(12625)卖出2101的合约,而高价(12780)买入2105合约,虽然现货标的的价格没变,但我们在这一卖一买的过程中,亏损了155(12780-12625)个点。每次换月,我们都需要进行这样一次交易,在远月溢价近月的市场,每次换月都将带来确定性的亏损,抬高我们的持仓成本。
我们来计算一下,如果近几年,我们按照做多期货合约、不断切换主力月的方式分别抄底棉花、橡胶,最终会形成什么样的收益。图中的绿色线是我们实际的收益,红色线可以理解为对应大宗商品的现货价格。
从图中我们可以明确看到,由于远期合约溢价,带来每次移仓换月的损失,做多期货的收益率,大幅低于对应的大宗商品现货。现货资产价格变化不大,而期货头寸已经亏损不少。因此,我们迫切需要引入一个商品期货抄底“性价比”的指标。
通过数据分析已经知道,如果我们按照最新交易日所有期货品种的价格做多,并在该品种主力合约切换的时候,同步移仓换月。由于移仓换月过程中,近月价格比远月价格高,会产生盈利,而反过来,远月价格比近月价格高,就会带来亏损。
于是,我们可以将近月价格与远月价格高低的比率,按照远近月到期时间的差值,折算成年化收益率。由此判断,每个期货品种滚动移仓做多,在现货价格不变的前提下,会产生多少的年化盈利率或者亏损率。
我们定义一个计算抄底性价比指标的Python函数,该函数实现方法如下:
按照某个期货品种所有正在交易合约的持仓量排序,选出持仓量最大的三个到期月合约,并按到期月重新排序
计算两两合约间的移仓收益率,并根据到期交割月份的差异,将移仓收益率折算为年化移仓收益率
计算年化移仓收益率的均值,作为该品种的抄底性价比指标
我们通过tushare pro的数据接口,每日读取最新的商品期货数据,支持在每个交易日自动更新所有期货品种的抄底性价比指标,并且,我们还对该指标按照排序,进行了可视化,下图是我们按照最新交易日数据,所自动生成的。
图中按照全期货品种,从左至右,做多对我们有利到不利,按顺序排列。其中,红柱代表做多移仓换月对我们有利,而绿柱代表做多移仓换月对我们不利,绿柱的后3位:JD(鸡蛋)、SC(原油)、AP(苹果)如果做多,需要损失30%-80%的年化收益率,可谓是极不划算,很可能出现“看对行情,没赚到钱”的情况。
从前文的数据验证、分析逻辑衍生,我们很容易得到一个结论:不考虑其他干扰因素的前提下,我们应该选择抄底性价比指标为正,数值较大的品种,并且最好是该指标长期为正、数值较大,这样我们就能在持有多头的过程中,每次都享受到期货移仓换月带来的收益,而不是像绿柱品种那样,带来的亏损。
我们以商品期货中最典型的例子:螺纹钢期货为例,近几年的螺纹钢期货,每次换月的新主力合约都会大幅低于现货价格,给了很大的做多收益率。我们按照不断换月、滚动做多螺纹钢期货测试,即使对应现货标的未涨,期货做多3年来收益颇丰。
同样典型的例子,发生的股指期货市场,IC股指期货(中证500指数对应的股指期货)每月的主力合约都低于股票现货指数约15-20%年化收益率的幅度,我们选择滚动做多IC,当测算到19年末,指数5000点左右,我们实际的头寸相对指数,已经盈利了1000-2000点。而随着今年中证500指数的上涨,策略收益也更为可观。
对于这个抄底性价比指标,技术宅有一些额外的思考,供读者参考。
第一,我们想要做多某个大宗商品对应期货的时候,计算该指标,能清楚的告诉我们,时间是站在我们这边,还是对手盘那边,我们长期持有,是享受额外的收益,还是带来额外的成本。我们更建议大家,在选择做多标的的时候,选择那些远月合约价格持续低于近月(现货)价格、并且基本面尚可的品种。做空标的,反之亦然。
第二,远月期货合约相比较近月(现货)价格的折价、溢价,实际反应的是市场整体对于该商品在未来价格走势的预期,而我们所能交易的,并不单纯是这个商品未来上涨、或是下跌,而是未来上涨、下跌幅度,相对于市场目前一致预期的预期差,只有预测对了预期差,我们才能在长线持有中盈利。
第三,我们是否可以做多抄底性价比指标高的品种,而做空多抄底性价比指标低的品种,让多、空的时间收益,都站在我们这边?这其实是期货市场(特别是美国期货市场)的一个重要的策略,名称叫Structure,我们将在后续的分享中,为大家进一步详解。
如果对本次技术宅分享的自动计算抄底性价比指标的Python代码感兴趣,欢迎加小编微信(sljsz01)
【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略
【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫