总览方法论
本文是研究微观市场结构的,侧重点在微观市场的frictions上;采用机器学习的随机森林的方法来完成in-sample的分类任务,从而得出用于解释微观市场的frictions的有用指标
本文的作者是Marcos López de Prado,最出名的还是那本 Advances in Financial Machine Learning
而在之前的一篇论文精读中,就引用了他这本书中为什么放弃使用Time-base的烛图,而使用Tick bar与Volume and dollar bar的建议。当然啦,在这篇文章中,他也采用了Volume and dollar bar的数据构造方式
这篇Paper不讲故事,不采用计量模型去估计参数,只是强调的说明研究微观市场结构,特别是在算法交易背景下,使用Machine Learning研究微观市场结构是有意义的
微观市场结构与高频交易
经典的经济学理论讲的是供需关系决定价格,一般会画两条曲线分别表示供需双方,曲线交点处就是市场价格。这种理论相对来说是很宏观的,因为它只能告诉你根据计算市场价格应该是什么,但不会告诉你这个价格在真实的市场上是怎么形成的。在真实世界,显然不会有人在做买卖之前会先拿出一张白纸往上画供需曲线然后求价格,实际上大家是通过一系列的协商和交互才能最终确定价格。市场微结构就是对交易市场的规则和交易过程的研究,目的是从微观层面上理解价格形成的过程,以及市场规则和结构对交易的影响。
微观市场结构的系列论文、著作(以后填坑)
- Market microstructure
- Maureen O'Hara 《Market Microstructure Theory》
- Joel Hasbrouck《Empirical Market Microstructure : The Institutions, Economics, And Econometrics of Securities Trading》
- High Frequency Market Microstructure
- Queuing Uncertainty
- Market Microstructure in Practice
所以很显然,微观市场结构的出现先于算法交易; 而微观市场结构的研究往往用于做高频交易,用于预测价格和流动性的变化; 在高频跨市场交易的当下,采用经典简单的微观市场结构分析方法已经不适用了,需要更复杂的分析方法; 但是该Paper也没有使用很复杂的方法来研究他,而是采用了Random forest来分析各个指标
相关论文
- Varian [2014], Abadie and Kasy [2017], and Mullainathan and Spiess [2017]讨论了怎么将机器学习算法应用在大数据环境下的经济问题
- Clarke-Joseph and Ye [2018]用LASSO提前1分钟进行股票回报率预测
- Rossi [2018]用 boosted regression trees对股票波动和回报做了预测
- Krauss, Do, and Huck [2017]用机器学习对 S&P 500 进行统计套利
- Gu, Kelly and Xiu [2018]对资产定价采用多元机器学习,发现非线性的回归方法比计量模型的$R^2$更大
- 还有就是 López de Prado [2018] 的 Advances in Financial Machine Learning
变量说明
输入变量
- Roll measure
- Roll Impact
- $Kyle’s \lambda$
- Amihud measure
- VPIN (the volume synchronized probability of informed trading)
预测变量
using a one-week forecast horizon:
- the sign of change of the bid-ask spread
选择买卖价差变化符号的目的:如果预期买卖价差扩大,那么现在多交易,如果预期买卖价差缩小,现在少交易 解释: 因为算法交易往往希望先于市场行动,预期买卖价差扩大表示有新信息进入
- sign of change in realized volatility 选择实际波动大小变化符号的目的: 预期波动性高的时候多交易,预期波动性低的时候少交易
- sign of change in Jacques-Bera statistic 选择JB统计量变化符号的目的: (站在风控经理角度)JB统计量是用于检验回报是否正态的,回报是否正态对风控经理的选择有关
- sign of change in sequential correlation of realized returns 选择收益的序列相关变化符号的目的: (站在基金经理角度)当出现收益序列相关(因为收益理应是序列无关的),就有可能导致大量回撤(leads to greater potential drawdowns and time underwater)
- sign of changes in absolute skewness of returns
- sign of changes in kurtosis of realized returns 选择峰度、偏度变化符号的目的: 回报从正态分布转换成非正态的原因有两个,一个是偏度变化,偏度是回报的单向变化,就比如收益分布从正态转为负偏,那么就可能存在知情者交易; 二是峰度变化,峰度是双向变化,就比如收益分布的峰度变小,那么有可能是因为预期新信息到来导致dealer减少报价规模,导致收益趋于两个极端(因为想卖的没有来得及卖)
随机森林变量重要性衡量指标
- MDI(Mean-Decreased Impurity)
- MDA(Mean-Decreased Accuracy)
数据集 -- 迄今为止用于microstructure研究最大的数据集
87种流动性最好的期货合约(股指期货, 外汇期货, 利率期货, 大宗商品)
tick data from the 87 most liquid futures traded globally (including indices, currencies, commodities, short rates, and fixed income instruments)
Microstructure研究的三代模型
- 只使用价格信息来预测Bid-Ask Spread
- 使用价量信息来预测$Kyle’s lambda$等
- Kyle [1985] lambda, the Amihud [2002] measure, and Hasbrouck’s [2009] lambda
- 使用交易数据来预测PIN,VPIN
- PIN, the probability of informed trading(Easley et al [1996])
- VPIN,the volume-synchronized probability of informed trading(Easley et al [2011])
但是这些模型都有着简单的假定,都是在标准的计量模型下得出的结论;在本文的背景下,这些方法都不够'有效',因为各种变量互相影响,真正想指明关系是非常困难的,所以这篇论文才用的ML方法
Ramdom Forest
论文中使用的随机森林与平常用的没有本质区别
论文中对随机森林做了如下两点改进
- 改进了抽样方法:采用了Boostrapped的方法给每个小树训练
- 改进了分裂指标: 在每颗小树的每个分裂节点处,概率化选择两个特征做分裂(2的依据是$sqrt{6} approx 2$)
之所以要概率论抽取: 是因为A指标能在一次分裂中,将信息增益做到最大;同时B指标也可以做到差不多的效果,只不过信息增益略小于前者;如果一味采用贪婪的方式选取分裂指标,就会导致特征的重要性相差甚远(即使他们实际上差不太多)
特征评价指标
MDI(in-sample method): 依据信息增益评价, p(t)是一个归一化因子,能使得所有指标MDI累加为1,那这个指标当然是越大越好
MDA(out-of-sample method): 先用训练集训练模型,将测试集中的一个特征打乱扔掉,然后再对测试集进行预测,下图是计算公式,$P_0$表示训练集的准确度,$P_i$表示被打乱的特征所在训练集的准确度;这个指标也是越大越好
预测准确性
除了做特征评价外,de Prado等人还对序列数据做了10折交叉验证,值得注意的是,在做交叉验证的时候,将于测试集有连续性的数据给剔除掉了,如下图
数据处理
- 在价量数据上,没有采用Time-base的烛图图,而采用Volume and dollar bar的方式构造烛图
- 在期货合约上, 对期货的价格采用了ETF的形式标价,重新的标价表示从起始持有1单位美元的期货的累计收益曲线
注意
之所以采用这样的方式是因为: 如果我们始终持有某一个期货,那么在到期的时候,就必须卖掉这个期货,然后买入下一个(三月后到期的)期货, 卖出到期的期货的价格与买入下一个期货的价格显然是不同的,但是卖出得到的与买入所花费的Cash是一致的;如果只采用价格的话,会导致ML在某几个特定的节点产生错误的判断;而采用累积收益的形式则不会有上述问题
下图是对ESI index的期货合约采用累积收益的方式,他基本上track了ETF构造的ESI index的期货合约
指标处理
对输入数据的处理,其实都是比较Common的统计指标处理,虽然计算公式比较复杂,但这不是我们关注的重点;只要知道处理的时候用的是Volume and dollar bar 而不是我们常见的Time-base Bar即可;
对结果的label的标注,也是根据研究目的进行设置的,看其中一个JB统计量的标注吧
模型结果
左侧是MDI(in-sample)的结果,右边是MDA(out-of-sample)的结果,每一行分别代表一个预测指标,纵向来看,在in-sample中Amihud measure更重要,而在out-of-sample中,VPIN更加重要
Random forest与Logistics比较
- 在MDA指标重要性上
Random forest给出的结果与Logistics的基本一致,
- 在分类准确度方面
Random forest比Logistics只高出了0.04(虽然有理相信这0.04不是由于噪声影响的,因为数据集非常大)
最后我不得不说: 尽管研究团队采用了最大量的数据集,得出的分类任务的准确率也才56.4%,即便随便猜一个,正确结果也有50%, 更别说去预测合约的价格; 另一方面,正是这样的结果才更鼓舞人心,因为机器学习采用的数据是过去的数据,过去的数据不能预测未来,这不正是我们心心念念的有效市场假说吗? 但事实上,正是市场的不完善,存在了比随便猜一个更优秀的结果;这也给了我一个启示,以后做模拟的时候,别看到50%+的准确率就放弃, 可能穷尽一切也不能得到这个数值
Volume and Dollar Bar与Time-Base bar比较
理论上采用Volume and Dallar Bar应该比Time-Base bar更有效,但是在Bid-Ask spread的预测准确度却有大约3%的劣势,原文中没有讲到这一点,但是可能Bid-Ask Price是人为定制的? 所以更适合采用Time-Base bar?(我的推测是基于原文(贴在最后)中关于峰度变化的可能原因,他认为Market maker会因为attention的原因减少报价,只有人类才是有限attention的吧...maybe)
总结
本文大体上想说明两点
- 在算法交易盛行的背景下,传统的Microstructure分析方法已经不适用了,ML可能是一种简洁有效的方法
- 市场是不完美的,是存在frictions(因为预测的准确率还是比50%要高), 而VPIN是有效衡量样本外摩擦的指标