社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

机器学习应用在市场微观结构和高频交易的思考

量化投资与机器学习 • 2 年前 • 360 次点击  

量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据领域的主流自媒体公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,荣获2021年度AMMA优秀品牌力、优秀洞察力大奖,连续2年被腾讯云+社区评选为“年度最佳作者”。


核心观点

短期涨跌的预测相比长期更容易,但覆盖交易成本后再获利的难度更大。所以在高频交易场景,机器学习更适合有限状态下的订单执行。而对于长期的预测,机器学习的训练目标可以不是评估在给定状态下的每股总利润或买入行为的回报,而是监控在该状态下买入与在所有可能状态下买入的相对盈利能力。


Michael Kearns在2010年的关于讨论机器学习在高频交易应用的论文中,提出了很多机器学习应用与高频交易的限制,很多思考放到现在都值得我们去学习。机器学习在高频交易中主要有两个方向,一是订单的执行优化,二是高频涨跌方向的预测。这两者本质的区别是执行优化是在一个确定性的空间寻找最优解,即交易量方向都确定的基础上如何最小化交易成本。而涨跌方向的预测,是以盈利最大化为目标,相对前者存在更多的不确定性。

用于机器学习的高频数据

机器学习在HFT的主要挑战通常源于更细的数据的颗粒度-通常包括订单,(部分)成交,隐藏流动性及撤单数据,以及如何理解这些级别的数据及怎样产生交易信号。比如,在许多HFT问题中可能没有任何先验的知识关于订单簿中的流动性分配与未来的价格变动相关(如果有的话)。因此,特征选择或特征工程成为HFT机器学习的重要过程,也是本文的核心主题之一。
高频交易的定义仍然是主观的,对其所包含的活动的基本属性没有广泛的共识,包括持仓时间、订单类型(例如被动与积极)和策略(动量或逆转、方向性交易或流动性供应等)。然而,对高频交易的大多数技术性处理似乎都认为,驱动高频交易的数据往往是最细粒度的。通常,这是直接来自交易所的微观结构数据,其中详细描述了每一个下单、每一次执行和每一次撤单,因此允许完整地重建(至少对于股票)完整的限价订单簿,包括历史和实时的。
微观结构数据带来的两个最大挑战是其规模和解释。在规模方面,像苹果这样的高流动性股票一天的微观结构数据是用千兆字节来衡量的。存储这些历史数据都需要使用压缩和大量的磁盘,即使这样,有效地处理该数据通常也需要通过每次只解压缩少量数据来进行数据流处理。但这些仅仅是技术上的挑战,解读的挑战更为重大。微观结构数据中包含了什么系统信号或信息?用机器学习的语言来说,我们可以从这些极细粒度、较低级别的数据中提取出哪些“特征”或变量,从而有助于为手头的交易问题构建预测模型?
这个问题并不是高频交易机器学习所特有的,但似乎特别紧迫。与更传统、更长期的低频市场和非市场数据来源相比,微观结构数据的意义似乎相对不透明。每天的开盘价和收盘价通常汇总了市场活动,整合了许多参与者的信息;未能实现盈利目标或分析师上调评级,都提供了有关某只股票表现或某个人观点的相对明确的信号。对于大量微观结构数据中的单笔下单,或者对盘中订单的快照,我们能给出什么解释呢?特别是考虑到提交方可以在执行前的任何时间取消任何未执行订单的事实。
为了提供一个类比,考虑现在机器学习在自然语言处理(NLP)和计算机视觉问题上的普遍应用。这两个领域都非常具有挑战性。但在NLP中,至少可以清楚地看到,数据中的基本意义单位是单词,这是数字文档表示和处理的方式。相比之下,数字图像是在像素级别上表示的,但这肯定不是视觉应用程序中有意义的信息单位——对象是,但从图像中提取对象的算法仍然是一个困难的问题。在微观结构数据中,意义或可操作信息的单位甚至更难识别,而且可能比其他机器学习领域的噪音更大。在我们进行案例研究的过程中,我们将研究从微观结构数据中提取的有用特征,但需要强调的是,这些只是建议,随着该领域的成熟,几乎肯定会得到改进和替换。

使用订单簿数据预测价格走势

本案例研究展示了机器学习方法解决纯执行问题的潜力:我们考虑了带有高度约束的降低交易成本的问题,并表明机器学习方法可以为这种努力提供重要工具。
当然,人们自然会问,类似的方法能否有效地应用于开发利用微观结构特征产生盈利的交易模型。换句话说,我们不寻求降低执行给定交易的成本,而是希望学习模型,这些模型本身就可以产生alpha。从概念上(仅从概念上),我们可以将这项工作分为两个部分:
1、构建可靠的、能够预测未来资产价格变动方向的特征。我们所说的“可靠”并不是指高准确度,而是刚好能让我们的盈利交易超过那些无利可图的交易。
2、开发用于执行的学习算法。以足够低的交易成本捕获这种可预测性或阿尔法。
也就是说我们必须能够发现盈利的交易信号,而且必须能够覆盖交易成本。前者比较容易达成,但后者(覆盖交易成本)更有难度。值得注意的是,在优化执行的场景,我们没有考虑许多直接捕捉执行价格近期方向变化的特征;这是因为考虑到的问题本身已经明确了交易需求,并指定了方向和交易量,因此动量信号不如捕捉潜在交易成本的信号重要。然而,对于alpha生成来说,方向预测可能更为重要。因此,我们使用了以下维度的特征:
1、Bid-Ask Spread: Similar to that used in Section 3.
2、Price: A feature measuring the recent directional movement of executed prices.
3、Smart Price: A variation on mid-price where the average of the bid and ask prices is weighted according to their inverse volume.
4、Trade Sign: A feature measuring whether buyers or sellers crossed the spread more frequently in recent executions.
5、Bid-Ask Volume Imbalance: A signed quantity indicating the number of shares at the bid minus the number of shares at the ask in the current order books.
6、Signed Transaction Volume: A signed quantity indicating the number of shares bought in the last 15 seconds minus the number of shares sold in the last 15 seconds.
因此,我们保留了优化执行研究中的大多数特征(变种),并添加了捕捉执行价格、买入/卖出压力和买卖中间价运动方向的特征。以上所有的特征都以一种标准的方式进行了归一化,即减去它们的均值,除以它们的标准差,并在最近的一段时间内进行时间平均。为了获得有限的状态空间,将特征离散到多个标准差单位的箱中。
我们只考虑学习算法可采用的两种理想操作:在买卖中间价买入1股,并持有该头寸t秒,然后在中间价卖出该头寸;反过来,我们在中间价卖出,t秒后买入。在我们描述的第一组实验中,我们考虑了t = 10秒的短时间。需要注意的是,在中间价执行的假设下,两个操作中的一个或另一个总是有利可图的——如果中间价上升,则在t秒后买进卖出,如果中间价下降,则反向操作。当我们考虑更现实的执行假设时,这将不再成立。
这种方法现在可以总结如下:
1、对于实验的19个股票,在历史数据上执行订单簿重构。(包括这19个股票AAPL, ADBE, AMGN, AMZN, BIIB, CELG, COST, CSCO, DELL, EBAY, ESRX, GILD, GOOG, INTC, MSFT, ORCL, QCOM, SCHW, YHOO.)
2、在每个交易机会中,计算当前状态(上述六个微观结构特征的值),并通过订单簿模拟将两个操作(先买后卖,先卖后买)的收益率。
3、使用2008年所有的训练数据对每个股票进行学习。
4、使用2009年的所有数据对每个股票的学习策略进行测试。
这项研究的两个最重要的发现是,学习持续产生的策略在测试集中是有利可图的,并且(正如在优化执行研究中),这些策略在股票中广泛相似。关于第一个发现,对于所有19个股票,学习的测试集盈利是正的。关于第二个发现,虽然在六维状态空间中可视化学习到的策略是不可行的,但我们可以将策略投射到每个单独的特征上,并探索特征和学习到的行为之间的关系是什么。在图4中,对于19个策略中的每一个和6个状态特征中的每一个,我们绘制了一个柱状图来显示特征值和学到的动作之间的相关性,按照惯例,我们将值赋为+1,表示先买后卖,将值赋为-1,表示先卖后买。对于几乎每一个特性,我们可以看到所有策略的相关性符号都是相同的。然而,就像在优化执行研究中一样,不同股票之间的相关性数值差别很大。这再次说明了学习方法的优势——这些策略都是“合理的”,在质量上相似,但学习在特定股票的基础上执行显著的定量优化。
图4显示,从广义上讲,我们已经学习了基于动量的策略:例如,对于包含方向性信息的四个特征(价格、智能价格、交易符号、买卖成交量不平衡和交易量)中的每一个,特征值越高(它们都表明执行价格上升、中间点上升或以价差交叉形式出现的买入压力),在学习过的策略中买入频率越高。 然而,我们应该强调的是,将策略投射到单个特征上并不能公正地对待关于特征之间交互的学习的微妙之处。举个简单的例子,如果我们不是以一个具有高价值的单一定向特征为条件条件,而是以几个具有高价值的定向特征为条件条件,那么与购买的相关性就会比任何孤立特征都要强得多。
研究哪些特性对盈利能力的信息量或预测性更大、更多或更少,也是有指导意义的。从下图可以看出:
使用所有六个特征比使用任何一个特征更能获得盈利。
Smart Price似乎是最好的单一特征,通常比所有特征一起使用略好,这是训练中轻度过拟合的迹象。
Spread似乎是一个不太有用的特征,但它确实在少数股票上获得了可观的盈利。

是否真的能够盈利?

将机器学习应用于高频数据时必须考虑的两个方面:潜在价格形成过程的性质,以及学习算法本身的作用和限制。在第一类中,当我们观察价格在毫秒到秒之间的演变时,我们可能会看到大量可售订单与订单簿相互作用,产生方向压力。几分钟后,我们看到了这个过程的另一面:当流动性需求者将价格推得离均衡状态太远时,就会出现逆转。在更长的时间尺度上,我们基于微观结构的变量信息量更少,显然失去了解释力。
一方面,我们可能很容易简单地得出这样的结论:就较长期而言,微观结构特征对价格形成过程无关紧要,但更长的持有期对我们特别有兴趣。正如我们在高频交易盈利能力研究中所指出的,在较短的持有时间和克服交易成本(特别是买卖价差)的能力之间存在紧张关系。虽然在非常短的时间间隔内,价格走势最容易预测,但这些预测的幅度——以及允许投资者支付交易成本的保证金——会随着持有时间的增加而增加。理想情况下,我们希望找到一个折衷的水平,它足够长以允许价格充分演变以击败价差,但又足够短以使微观结构特征能够提供方向运动的信息。
为了减少任何长期定向价格漂移的影响,我们可以调整学习算法来考虑它。我们不是评估在给定状态下的每股总利润或买入行为的回报,而是监控在该状态下买入与在所有可能状态下买入的相对盈利能力。例如,假设S状态下的买入行为平均每笔交易收益0.03美分;虽然这个数字是正的,但假设总是买入(也就是说,在每个状态)平均每笔交易能产生0.07美分的收益(大概是因为价格在整个期间都在上涨),因此这个状态的买入相对来说不那么有利。然后我们将- 0.04 = 0.03 - 0.07作为该状态下的买入值。相反地,可能存在一个状态,在训练期间与之相关的支出为负,但如果该行动在所有状态中平均时更无利可图(同样,可能是由于长期价格漂移),则该状态-行动对被分配为正值。从概念上讲,这种“均值调整”可以让我们过滤掉价格趋势,专注于微观结构方面,这也使得学到的政策在样本外表现得更加稳健。从经验上讲,由此产生的学习政策恢复了预期的对称性,如果一个极端状态学会购买,另一个极端状态学会出售——注意从图6(c)到图6(d)的转换,在图6(c)中我们再次见证了均值回归。
虽然我们清楚地看到了短期价格形成过程中的模式,并成功地识别了有助于预测未来回报的状态变量,但从这种可预测性中获利绝非易事。从本节的结果中可以清楚地看到,我们的预测的幅度不到一美分,而美国流动性股票中最接近的差距是一美分。因此,无论如何不应将这些结果解释为盈利的秘诀:即使我们在这里列举的所有特征都是未来回报的真正预测器,即使所有特征都刚好符合最大的利润率,人们仍然不能证明积极交易和支付买卖价差是合理的,因为可预测性的程度不足以支付交易成本。
那么我们能做些什么呢?我们基本上看到了三种可能性。首先,就像我们之前提到的,我们可以长时间持有头寸,这样价格变化就会大于价差,给我们带来更高的利润。然而,正如我们所看到的,持有期越长,市场微观结构方面的直接信息似乎就越少,从而使预测更加困难。其次,我们可以用限价单交易,希望避免支付差价。这绝对是一个富有成效的方向,人们共同估计未来的回报和被填满的概率,然后必须权衡逆向选择(只有在预测被证明是错误的情况下执行的概率)。这是一个困难得多的问题,超出了本文的范围。最后,第三个选择是找到或设计更好的特征,带来更大的可预测性,足以克服交易成本。
现在应该清楚的是,机器学习方法不提供简单的盈利途径。市场竞争激烈,找到真正的盈利来源极其困难。也就是说,以原则性的方式寻找潜在利润来源的框架——通过定义状态空间、检查潜在特征及其相互作用、使用训练-测试集方法、引入合理的价值函数等——这应该是量化专业人员武库的一部分,这样我们至少可以用一种共同的语言讨论这些问题。
参考文献
A. Kulesza, M. Kearns, and Y. Nevmyvaka. Empirical Limitations on High Frequency Trading Profitability. Journal of Trading, 5(4):50–62, 2010.

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/148226
 
360 次点击