HMM这样一个发明至今已有50年的经典模型,已经实现的应用之深广,无所谓前景不前景的了。但这不代表它没有生命力,所以你们不可以嘲笑它。因为HMM能够给你的不仅仅是几套算法,而更多地是一种研究问题的工具性视角,帮助你更加灵活自如地实现理论世界-现实世界的镜像转换。
其实HMM的应用除了题主所提到的两个方面之外还有很多,尤其是当我们可以掌握的数据更加丰富多元的时候,更多的场景下我们可以拿来用HMM。我就简要说一些相关的hypothesis,不会涉及到具体模型和策略,但我会尽可能地把框架讲清楚。
就先拿题主提到的统计套利来说吧。我们都知道理论上你所构建出的“协整组合[注1]”形成的价差应服从OU过程,但即便价差服从OU过程,一个实际价差也可能存在若干个不同的理论价差,也就是若干个参数不同的OU过程。如果这些参数还是动态的,那么用一个HMM很容易解决问题。
, (1) hidden state process;
, (2) state process;
, (3) observation process
(2)是OU过程的离散形式,三个系数的具体表示请自行推导。注意这里的是服从OU过程的理论价差,可以拿来和你用你的仿射变换得到的实际价差做比较,如果实际价差高于理论价差,就short你的协整组合;反之则long你的协整组合。当然为了减少交易成本,你也可以设置触发交易信号的阈值。
当然还有一种思路,你也可以把假设放宽,不再假设理论价差服从OU过程,而是直接重新表示你的实际价差。比如在你看来,你的协整价差有两个states,一个state代表随机游走(random walk),一个state代表均值回归(mean reversion),也就是说你的价差并不是每时每刻都服从OU过程那么乖乖地往均值上靠,相反,它有时候会翻脸变成随机游走拦也拦不住。这两个过程的参数的状态转移过程就是hidden state process,实际价差就是observation process。这个时候你就要根据转移矩阵的概率判断当前的regime是否符合统计套利的环境。
第一种思路就是题主所提到的经典思路,但可以有多种多样的扩展,比如将HMM和状态空间模型结合,或者重新定义价差的hidden states(如上面提到的第二种思路)。其实用HMM做统计套利的建模过程并不难,但参数估计是个大坑。这里常用的方法就是EM算法了。说句题外话,我个人十分喜欢EM算法,喜欢它在计算上的简洁和鲁棒。特别是牛顿方法废掉的时候更显EM的神采。但包括HMM的初始状态和转移矩阵等初始估计就是另外一个故事了,目前还真没什么好办法,一般就用样本内数据做MLE。加之模型里面涉及的参数个数也不少,过拟合也是个大问题。
简单说一下题主提到的量化择时。因为答主工作中研究趋势交易不多,所以仅围绕HMM的特点谈其应用。其实学过Probabilistic Graphical Model的都知道,HMM就是Bayesian Network的一个特例,具体说是Dynamic Bayesian Network(DBN,不要跟深度神经网络里面的DBN搞混)的一个特例,也有人称之为Hierarchical HMM。就用DBN来说一下题主提到的量化择时。我拍脑袋举个栗子,我们可以在头一层设置5个hidden states,大熊(strong bear)、弱熊(weak bear)、随机游走(random walk)、弱牛(weak bull, wu)、大牛(strong bull, su)。然后在每个市场趋势下还可能有若干种features,可以是基本面消息也可以是技术指标,这就考验市场直觉和特征工程的功夫了。最后observation可以简单地使用收益率来表示。根据预测出的收益率进行择时判断。
因为择时交易归根结底就是预测,而市场在不同的regime下一定有不同的走势特点。HMM就正好可以用来描述和预测不同regime下的不同反应。这样设计下来模型就呈现出这样(其中白色单层圆圈就是hidden state,灰色圆圈就是observation):
像这种“拜占庭风格”的模型似乎有点令人啼笑皆非,至于它们到底好不好用、该怎么用之类的问题纯属见仁见智,过拟合的可能性很大,但我还是建议有的人不要一上来就以一副“老子当年小米加步枪就能让他老蒋的精锐部队跪了你服不服”的样子对待那些看上去复杂的模型。因为这些模型的思路其实很可能会给你提供新的视角和见解,让你最终建立出简洁的模型。就像你盖房子的“脚手架”,脚手架搭建得繁复冗余也没有关系,随时可以修改,但最后要盖出线条优美又结构稳固的房子出来。
如果真要说前景的话,HMM在算法交易和高频交易上的应用可以算得上,虽然以间接的方式。HMM主要是可以基于tick数据研究股票价格的日内动态变化,特别是在市场日内的不同状态下的变化,比如接下来要说到的price revision、order arrival、duration等等,这属于市场微观结构的内容。计量经济学家常用ACD模型研究tick data,但使用HMM可以得到具有state-dependent特点的比如price revision和duration的分布,从而根据这些市场微观结构的观察结果又将便于算法交易和高频交易策略的构建。
我们可以用一个有限状态{1, ..., K}的离散马尔科夫链作为hidden state process,转移矩阵为。时间t对应某一交易日内第t笔交易。至于observation process那边则有price revision和duration,就像这样:
其中为第t笔交易发生的价格变动,为第t笔交易距离上一笔的duration。的计算可以根据由指数幂律分布拟合的order arrival rate来计算,可以用一个结合了价格零变动的离散pdf和价格非零变动连续pdf的mixture model求积分来计算。
如果你带入数据的话,通常可以得出一个stylized fact:在state 1,trade duration很短,价格变动也很小;在state 2,trade duration长,价格变动的方差也就很大。同时状态转回到state 1的速度比回到state 2要快得多。这与我们的直觉相符合。
单就这一方面,HMM的应用就可以很丰富。算法交易的一个重要方面就是如何处理刚到来的信息,这写信息既包括价格、成交量、duration、买压卖压等交易信息,也包括公司公告、行业动态和宏观经济等消息信息,如果你以一个机器学习的视角看的话,HMM可以作为一个在线学习(online learning)算法,因为它可以online地学习市场状态和得到与price revision、duration和状态转移概率等模型参数。所以HMM非常适合用来设计交易算法。
比如基于限价单的算法交易。
这个思路是从Avellaneda[注2]那里得到的启发。我们假设mid-price就是一个有若干regime的布朗运动,即,其中,是个连续有限状态的马尔科夫链,决定着mid-price revision的波动率的regime switching。注意离散的HMM用在实证研究上没问题,但算法交易常常用到随机最优控制或者动态规划,所以要映射成连续的HMM。
限价买单指令价格和限价卖单指令价格,其中 就是到mid-price的距离,我们费半天劲也就是为了得到的最优解 。限价单的执行速率(rate of execution)就显得格外关键,代表rate of order arrival,但交易执行的问题是:order离mid-price越远,指令的执行速率就越低,而且是以指数级下降。那么我们就在order arrival的基础上再乘以一个指数函数,,其中是个常数,用来控制限价单到mid-price的距离的尺度,可以用个启发式算法计算。你也注意到了,这里price revision和duration不是相互独立的,因为都对其有影响,至多算是条件独立。另外,算法交易里的限价单最怕的就是你的order迟迟得不到执行,得不到执行的原因不是regime发生的变化就是有更有利的order arrival。所以当你在regime发生转换的概率较低的情况下发出一个immediate-or-cancel的指令,如果这时候突然regime变了或者有简单粗暴的市价单闯进来,你这个指令就很难得以执行。换言之,rate of order arrival和price revision的波动率都是决定你的交易算法选择怎样的 的因素。那么剩下的工作就是在你的效用函数中求取关于的最优解了。由此你可以决定最优的下单时机,或者赚取bid-ask spread,等等。
比如高频交易中的返佣(rebate)。
先举个例子说一下什么是返佣:如果一个限价单filled,提供流动性的一方可以得到0.25分/每股的返佣,而吸收流动性的对手方要支付更高的交易费用。高频交易者求返佣的其中一个方法就是观察被拆分成若干小单的机构大买单的出现。如果某股票当前价格为10.00元/每股,高频交易者利用速度优势放出一个10.01元/每股的买单——这就是在提供流动性了,所以这个买单很快会被那些试图以10.00元/每股卖给这家大机构的交易者hit。此时的股票价格就是10.01元/每股了,大机构的小买单也随之跟进到这个价位。然后高频交易者立马调头放出一个10.01元/每股的卖单——这同样是在提供流动性。这样一个来回,高频交易者虽然没有从股票价格中赚钱,但赚到了0.5分/每股的返佣,不亦快哉。
返佣策略当然不是无风险的空手套白狼,高频交易者就怕价格朝着不利于自己的方向走。所以我们的HMM就派上用场了,它可以告诉我们一组返佣策略是不是能赚到钱。比如在state 1里,每笔交易之间的duration很短,价格变动的方差也很小,非常适合高频交易者拿返佣。高频交易者要考虑至少三个问题:1)这样的state的持续性怎么样?(从转移矩阵里可以看到);2)在这个state内,价格零变动的概率是多少?(从Xt的参数里可以看到);3)如果价格非零变动,那么价格变动的波动率是多少?(从Xt的参数里可以看到)。所以说HMM放在这儿就是一个online learning algorithm,可以动态学习我们想要知道的市场微观结构方面的当前状态。
其实HMM可应用的范围依然很广,绝不仅限于我上面提到的这几方面。只要你发现你的研究对象里清晰地呈现出不止一个regime的形态,并且能从逻辑上确定observation和hidden state的镜像关系,那么HMM就是一个比较好用的模型了。顺便再举个小栗子,就比如那些衡量市场信息不对称特征的指标,比如PIN(Probability of INformed trading)和PSOS(Probability of Symmetric Order-flow Shocks),也可以用上HMM。你可以拿HMM估计PIN和PSOS的值,以此观察一个重大消息发布前后的市场信息环境或者市场情绪的变化,因为private information或者informed trader对市场的影响和public information或者noise trader对市场的影响完全会是两种形态。经验表明HMM算法可以得到比经典的EHO法、EEOW法、DY法[注3] 更好的估计值。
但是,在没有对所要解决的问题有深刻认识之前,甚至在寻找到合适的问题之前,不要有任何幻觉,不要强套任何模型或算法,不要把自己像买彩票似的两块两块地消耗殆尽,那样你不会有任何收获。只有在对模型的深入探索和对市场的深刻洞察的时候,你才可以目不识丁而经纶满腹,足不出户而情满江湖。
[注1] 这里的协整不单单指的是大家所熟悉的时间序列教材里的协整检验,统计套利中的协整有更严格的内含,同时可以有更宽广的外延。详见「
统计套利中的「协整」是什么意思? - 郭小贤的回答」
[注2] M. Avellaneda and S. Stoikov, High-frequency trading in a limit order book. Quantitative Finance, Vol. 8, No. 3, April 2008, 217–224.
https://www. math.nyu.edu/faculty/av ellane/HighFrequencyTrading.pdf[注3] 这三种方法分别以作者姓氏首字母组合命名的,EEOW为Easley, Engle, O'Hara and Wu,DY为Duarte and Young,EHO为Easley, Hvidkjaer, and O'Hara.