投研机构对商品期货价格变化的研究,无不是以商品基本面分析作为出发点,但通常没有给出明确的交易建议,所以效果难以被观测。本文以经济学基本原理为基础,赋予基本面数据的合理算法,结合对期货交易过程中的量化控制,设计成集基本面分析和交易于一体的量化交易模型,以模拟交易效果证明基本面分析的有效性。
[量化交易的基本概念]
投资者参与期货交易的目的并不相同,有投机、套保、套利或者其他,虽然投资者也可以运用其他金融工具实现自己的目的,但所有的工具都是中性的,金融工具的多样化、复杂化,只不过给了投资者更多的选择,以满足他们不同的需求偏好。然而,无论投资者追求大概率的小回报,还是追求小概率的大回报,都必须在价格运行方向或区间判断上具有优势,使交易结果的数学期望值为正才能获利。虽然加大杠杆倍数会使可能的收益放大,但同时也会使可能的亏损放大,对增加收益的数学期望值于事无补。
一般而言,行情分析方法大致分为三类:基本面分析、盘面技术分析以及两者的结合。投资者在做分析时考虑的因素和具体方法各不相同,但效果到底如何呢?投资者可以用真金白银去试,从实践中去总结。不过,对量化交易者来说,总是要把影响价格变化的各种因素进行量化(数字化、指标化)分析,用历史数据来模拟交易,检验其交易结果,评估其可行性。
量化交易是在量化分析的基础上,建立标准化的交易策略或规范,对实时接收到的数据信息进行运算,给出明确交易指令的交易模式,其中还包括对交易过程和交易结果的量化控制。量化交易策略可以很简单,也可以很复杂,其特点是可测量、可复现、可预期等。量化交易不一定是自动化(程序化)交易,也可以手动下单,重点是分析要量化,交易要系统化、标准化,形成不被人情绪所左右的规范。
[宏观对商品价格的影响]
下面重点说明基于供需基本面量化交易模型的研究思路,并展示其验证过程和模拟效果。量化交易本身是一种研究方法,量化分析和模拟交易结果的统计,能够帮助我们了解各种分析方法的效果,提高我们对交易的认识。
在这里有必要谈一下宏观面对商品价格的影响,因为宏观面对商品价格的影响最大,包括持续时间长久、影响范围宽广。宏观经济分析中最重要的理论之一是周期论,我们生活在周期中,大的周期长达几十年甚至上百年,而在有生之年,我们的生活会怎么样,是越来越好,还是停滞不前,甚至越来越差,这除了与我们的自身努力以及各种机缘巧合相关外,更重要的是我们生活在什么地方、生活在什么年代,处于什么样的大经济周期中。由于小的经济周期是5—10年(当然这个时间跨度是难以被准确测量的),叠加在大的经济周期上,所以即便是经济持续增长,增长速度也有快有慢,整体呈现周期性的波动。长期经济增长由生产力提高决定,生产力提高包括技术革新、资本设备投入增加、劳动力人口增加等。
下面用同比指标过滤掉经济长期增长趋势,可以清晰看到小经济周期的波动,如图所示:
图为名义GDP增长与GDP增长同比
图中灰色曲线是名义国内生产总值(GDP),显示我国经济长期增长;黑色曲线是GDP季度同比增长,反映经济增长速度的变化。
重要的经济周期有信贷周期、库存周期、产能周期和房地产周期等。其中,最重要的是信贷周期,被称为“周期之父”,其他周期都与之有关联。下面重点看一下信贷周期对商品价格的影响。
如下图所示,商品价格同比波动较M1同比稍微滞后,但步调基本保持一致,除了图中圈标的那一段时间,橡胶和铜的价格波动与M1出入较大。这可能是外部原因造成的,因为这两种商品生产所需的原材料都严重依赖进口。另外,橡胶既是工业原材料,同时又是农产品,所以橡胶的周期可能与其农产品特性有关。
图为M1变化与商品价格变化
由此可以得出,宏观经济增长、资产价格、商品价格都呈周期性波动。无论是投资还是投机,我们尤其要关注信贷周期和房地产周期。除了制度性改革外,政府和央行为实现宏观经济增长各项指标,会通过财政和货币政策对宏观经济周期进行调控。因此,金融机构在做宏观经济分析时,会密切关注和预测世界各国政府及央行的举动。
周期如此重要,但应用起来却很困难,因为周期的拐点难以被准确预测,而且期货交易是杠杆交易,交易者难以忍受大周期中的次级反向波动。笔者认为,周期在交易中的应用,可以体现在对交易品种净头寸以及产品或资产账户整体头寸配置的管理方面。
[微观对商品价格的影响]
如果说宏观研究能描绘出商品价格波动的大致轮廓,那么要想提高分辨率把这个轮廓看得更清楚一些,就要研究商品的供需关系,这是微观经济的范畴。决定一种商品价格的因素非常复杂,我们只能先进行简化,找到其中最关键的三个要素——价格、供给量、需求量。
图为供给曲线变化
商品供给量是价格的函数,供给曲线S的线性函数表达式为QS=-δ+γ×P。其中,QS是商品供给量,P为商品价格,δ、γ为常数。供给函数描述的是价格越高,商品供给量越大,所以供给曲线是一条向右上倾斜的曲线。我们也可以用非线性函数来描述供给量和价格之间的关系,不过无论是线性函数还是非线性函数,都不能准确计算其数值,这里面有大量的假设和无法确定数值的参数。不过,我们只需要表达因变量跟随自变量是正向变动关系还是反向变动关系,不影响分析结果。
商品需求量也是价格的函数,表达式为Qd=α-β×P。其中,Qd为商品需求量,P为商品价格,α、β为常数。需求函数描述的是价格越高,需求量越小,所以需求曲线D是一条向右下倾斜的曲线。供给曲线和需求曲线所表达的供给量和需求量与价格之间的关系,与我们的经验和直觉完全一致。
供给曲线S和需求曲线D相交于E点,此处QS=?Qd,则-δ+γ×P=α-β×P,解方程求价格为Pe=(α+δ)/(β+γ)。Pe即为均衡价格,是商品的市场需求量和市场供给量相等时的价格,此时市场出清。通常市场并不知道均衡价格是多少,市场价格是买方和卖方交易的结果,偏离均衡价格是常态,但市场价格会有自动向均衡价格回归的倾向。当均衡价格不变时,市场价格以均衡价格为中心,上下振荡。
上述是一个商品定价的静态模型,?α、β、δ、γ都被设定为常数不变,用静态分析方法,可以得到商品的均衡价格。实际上α、β、δ、γ这几个参数是可变的,可以称之为可变的常数,是外生变量。当商品的供给和需求(注意不是供给量和需求量,这是内生变量)发生变化时,至少会改变α和δ的值,即改变供给曲线和需求曲线的截距,使供给曲线和需求曲线发生平移。
比如,价格变化影响钢厂的利润,进而影响钢材的供给量,此时供给曲线不会移动,价格变化可以解释供给量的变化,但如果是技术进步、设备投入造成产能扩张,此时供给增加不能被价格变化解释,是δ值发生改变,供给曲线整体向右平移。同时,房地产开发投资对钢材需求量的价格弹性也很小,它的变化使α值发生变化,需求曲线整体向右或者向左平移。供给曲线移动和需求曲线移动会在新的位置发生交叉,如上图中虚线所示,这个交叉点所对应的价格就是新的均衡价格,均衡价格运动,市场价格也会随着进行趋势运动。
[静态定价模型初级检验]
综上所述,商品价格波动可以解释为,跟随均衡价格变化的趋势和围绕均衡价格振荡的叠加。行情研究的重点在于商品均衡价格的运动方向,即市场价格变化趋势。道理很简单,现在我们用历史数据来验证,根据上述分析方法模拟商品价格的变化,与实际价格变化是否吻合。事实上,大部分有关商品基本面的研究,最后都会归集在商品的供需变化之上,如果供需原理不能得到实际价格的验证,那问题就大了。首先来看螺纹钢价格走势:
图为线材模型价格与现货价格
这张图的数据长达17年,其中用线材现货价格代替了螺纹钢现货价格,因为线材现货价格数据的历史更长,并且和螺纹钢价格的变化几乎完全一致。可以看到,除了受2008年金融危机及之后4万亿元投资托底经济政策的影响,螺纹钢实际价格变化领先于模型价格(因为模型没有表达金融危机对价格的影响)外,其他时间段模型的价格变化与实际价格变化的步调一致。
再来看铁矿石的静态定价模拟情况:
图为铁矿石模型价格与现货价格
基本上,模型价格变化和进口铁矿石实际价格变化步调一致,区别在于波动幅度不同。铁矿石比螺纹钢复杂得多,而且其供给基本上被寡头垄断,模型在计算时对数据进行了筛选,才有了图中这个效果。
接下来看动力煤的静态定价模拟情况:
图为动力煤模型价格与现货价格
圈标的那一段时间,模型无法解释现货实际价格走势,模型价格变化与实际价格走势严重背离,但如果把模型这一段由向上改为向下,就会发现模型整体的价格变化与实际价格变化极为相似。
最后来看橡胶的静态定价模拟情况:
图为橡胶模型价格与期货价格
结果如上,有两处明显不一致,其他时间段在变化方向和转折时点上基本吻合。变化幅度没办法对比,因为模型算不出绝对价格。
从以上分析可以看到,在用不同商品对模型算法进行验证的过程中,模型的价格变化多少都出现了与实际价格不符的情况,这可能与数据质量有关系,也可能有更深层次的原因。在微观上,不同行业、不同商品有不同的基本面特点,所谓隔行如隔山,这就要求我们对不同商品的基本面做到足够专业,才能找到有效的数据和合理的算法,尤其是农产品的生产周期很长,用静态定价模型来解释其波动可能是行不通的。
不过,虽然我们无法算出商品均衡价格的绝对值(这个对理论和数据质量都是巨大挑战,但也不是不可以研究),但可以大致推算出其变化方向、模型的价格变化方向以及上述商品实际价格变化方向和关键转折点基本吻合。由此可以证明,商品供需变化对价格趋势变化起着决定性的影响,模型算法基本合理。
[静态定价模型测试效果]
有了对基本面的量化研究和预测,我们就对价格变化方向有了基本的判断,不会涨时看涨、跌时看跌,这样就可以解决交易问题了。
虽然上述用供需因子变化来解释商品实际价格变化轨迹,采用的是月频数据,分辨率仍然不高,难以满足期货交易的要求,同时基本面的数据大多滞后很长时间才能公布出来,这些数据只能做历史分析和检测,而要做交易必须对这些数据进行预估,这对量化交易来说有点麻烦,因为量化交易是以客观事实为基础的,而对未来数据进行预估则存在很强的主观性,但我们可以通过得到的高频数据,比如,周频甚至日频数据,提前推算出我们所需要的低频数据,这种方法不仅可行,而且是必须的。
此外,期货交易不是只有涨跌逻辑,还有预期和现实的拉锯,以及成本、利润、期现、跨期、上下游及相关品种的关系等逻辑,不同的逻辑决定了不同的交易行为,由此对期货价格构成了影响。这些因子和逻辑都属于理性范畴,可以纳入模型进行计算,提高模型对价格波动的解释能力。
不过,价格是交易的结果,人们完全可能对信息产生误判,加上资金的博弈、群众心理的变化,这些都会使市场价格出现错误或非理性波动。因此,假设存在完美正确的理论和模型,由于它是理性的,所以必定不能解释错误的、非理性的价格波动。
对于解释不了的东西,我们还有最后一道防线——对亏损的控制。以上种种分析都是在寻找影响价格变化的原因,以此来预测价格运动方向,但所有模型最终都必须把市场实际价格变化考虑在内,因为如果模型预测是正确的,但被错误的市场价格运动消灭了或损失惨重,那么对这种正确的坚持,就是错误的,何况我们又何以断定模型预测一定是正确的呢?因此,在价格实际运动方向与模型判断相反时,等待;在交易出现亏损时,离场。于是,模型在交易过程中为控制风险,会不可避免地产生损耗(保护性止损),这便是量化交易的成本。主观交易同理。
下面来展示一下基于供需基本面和数据挖掘的交易模型的测试业绩图,以螺纹钢期货为例:
图为螺纹钢基本面因子交易模型业绩曲线1、2
需要说明的是,虽然我们是自上而下设计模型,但没办法一蹴而就,不可避免地要对算法和参数进行调试,这便产生了拟合。为避免过度拟合,先在一个商品上做实验和调试,然后照搬到其他商品上进行样本外检测,最后要求算法和参数对同类商品普遍适用,或者与行业基本面分析习惯保持一致。
虽然看上去资金曲线不错,但实际上这是用时间堆积起来的效果。可以放大看一下2019年的交易信号,如下图所示:
图为螺纹钢基本面因子交易模型信号片段
资金曲线马上就不平滑了,我们利用这个图来说明交易过程中的资金损耗。2019年春节后,模型以看空螺纹钢为主,但也发生了几次反复,这实际上说明了价格往上和往下的驱动都不足,市场情绪对价格的影响更大,模型在交易过程中出现了大量损耗,利润回吐。在2019年6月下旬短暂做多略有盈利后,又在7月试空几次终获成功,资金曲线再创新高。因此,量化交易模型并非通过神奇而又恰到好处地捕捉到最佳交易时点而获利,而是通过长时间的坚持和重复试错,才能发挥其判断上的优势,取得正收益。总之,确定性的交易机会,主观交易做不到,量化交易更做不到。
注:本文转载自 期货日报
推荐阅读:
1.一个量化策略师的自白(好文强烈推荐)
2.股票期货经典的量化交易策略都在这里了!(源码)
3.期货/股票数据大全查询(历史/实时/Tick/财务等)
4.当真躺着赚钱?量化交易的十大难题
5.从量化到高频交易,不可不读的五本书
6.如何有效的规避量化交易中的滑点?