更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。
为何统计商品期货的月度效应
为什么选择统计商品期货,而非股票,或是数字货币的月度效应?这是因为,相比较其他金融资产,商品期货背后所对应的是实物资产,比如农产品、工业品,而这些实物资产,都存在着一些明确的随季节变化的供需规律。
对于工业品,由于需求端的变化会产生季节性及对应的月度效应。以螺纹钢为例,螺纹钢下游主要是房地产、基建,需求有明显的淡季旺季之分,每年的9、10月份是旺季(对应地产的金九银十),而每年的春节、7、8月份是淡季(对应春节放假、夏季工地停工),而商品的现货价格也将对淡季、旺季的需求有上下波动的反应。
我们再来看农产品,农产破的供应端播种收获呈现显著季节性的特征,而需求端也会因为节假日呈现明显的节日效应。以鸡蛋为例,每年的中秋、春节,是鸡蛋消费的旺季,特别是中秋,鸡蛋是月饼的主要原料,往往是年内价格的最高以及次高点。而非节日,消费则相对平稳,价格也相应有所回落。
由于商品期货背后的季节性、月度效应是有其逻辑支持的,我们可以统计各个品种历史上的月度平均收益率,从数据来检验,季节性的逻辑是否成立。
商品、板块月度统计的Python实现
我们利用Python来实现商品期货月度效应的统计,并将统计的结果以用户友好的方式,呈现出来。
第一步,使用Wind API获取商品各个品种指数的数据(我们以南华指数为例)。之所以使用指数数据,是为了避免换月影响,综合计算各到期月合约的加权收益率,能更好的反应期货品种实际的涨跌幅。
第二步,按商品品种循环,对获取到的数据进行时间日期格式的标准化,并按照所得到的月份,分组计算均值。
第三步,对统计结果进行可视化,按照红绿柱,划分月度的涨跌,也就是我们在文章开头看到的可视化效果。我们抽取了此前提到的螺纹钢、鸡蛋,来为大家展示效果。
可以看到,螺纹钢有显著的淡旺季,比如每年的2、3月,春节附近、天气寒冷,需求减弱,价格降低;而每年的8、9月,天气炎热,价格同样处于低谷。
而对于鸡蛋来说,我们在图中可以看到一个显著的旺季,就是10月,10月对应着中秋国庆,前文的逻辑分析,也在此处的数据中得到了验证。
月度效应的时变性
虽然我们统计得到了全历史的月度效应特征,但是,随着期货市场的成熟、市场效率提高,传统淡旺季的预期,将会提前反应在不同到期月合约的价格中,最终造成旺季不旺、淡季不淡的现象。我们统计得到的螺纹钢、鸡蛋的月度效应,也有一些收益数据,是与逻辑相违背的。
因此,我们再按照年度分段统计,以5年为一个周期,统计按5年计算的月度平均收益率。我们按照年度切分原始数据,再按月计算每个品种月涨跌幅的均值,并绘图。
有一些品种的季节性,基本上不随时间变化,表现出较为稳定的规律,比如白糖,按照以5年为间隔切分历史数据,计算得到的月度效应,基本都呈现出1、2、10月左右旺季,而3至7月淡季的月度规律。
再比如螺纹钢,我们就可以看到,随着时间的推移、市场的成熟,与早期明显的淡旺季相比,近几年开始呈现出旺季不旺、淡季不淡的特征。
月度效应对交易的指导
我们统计月度效应,最终的目的必然是要落实到交易。月度效应可以作为交易的主信号,或是辅助信号。而不同品种用于月度效应规律的交易,需要确认的最重要的条件是,首先要警惕月度效应不稳定的品种。因为月度效应不稳定的品种,它的市场结构、成熟度往往还在发生着较为显著的变化,此时所得到的规律,极有可能在未来再次发生改变。
而对于月度效应较为稳定的品种,比如我们前文举例的白糖,我们有两种使用月度效应统计结果的方式:
-
作为交易主信号,即根据月度效应方向进行交易
-
作为辅助信号,比如结合商品趋势策略的信号,当月度效应方向与趋势策略主信号方向相反时,减小交易头寸或过滤交易信号,而当月度效应方向与趋势策略主信号方向相同时,增加交易头寸或开启交易信号,此类辅助信号是否有效,我们可以在挑选主信号后,比较容易地测试出结果。
想要获取本次分享的完整代码,或是任何关于数据分析、量化投资的问题,欢迎添加技术宅微信:sljsz01,与我交流
往期干货分享推荐阅读
Omega System Trading and Development Club内部分享策略Easylanguage源码
【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略
AMA指标原作者Perry Kaufman 100+套交易策略源码分享
【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单
【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略
【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数
商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享
【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品