社区所有版块导航
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学习  »  机器学习算法

一文了解机器学习LOB策略

QuantML • 2 周前 • 96 次点击  

本文旨在深入探讨如何利用市场数据,特别是限价订单簿(LOB)数据,来预测股票价格变化。

一、引言:股票价格预测的挑战与机遇

自股票市场诞生以来,投资者就一直在试图预测股价走势。然而,早期可用的数据有限,相应的数据处理方法也较为简单。随着时间的推移,投资者可获取的数据量呈指数级增长,新的数据处理方法也随之涌现。

尽管技术进步和先进的交易算法层出不穷,但准确预测股票价格走势对大多数研究人员和投资者来说仍然是一项极具挑战性的任务。传统基于基本面分析、技术分析和统计方法(例如回归分析)的模型,往往无法充分捕捉问题的复杂性,尤其是在处理高基数数据(如限价订单簿数据)时显得力不从心。

近年来,机器学习方法的进步以及市场数据、基本面数据和另类数据的数字化普及,促使人们尝试将这些模型应用于股票价格预测任务。一些研究人员已经能够在这领域取得相当令人印象深刻的结果,特别是使用限价订单簿数据作为主要信息来源。

本文将重点对基于限价订单簿数据的最新机器学习和深度学习模型在股票价格预测中的实际效用进行批判性评估。

二、基于市场数据的股票预测策略概述

2.1 输入数据:市场数据成为核心

股票交易策略的源数据大致可分为三大类:

(1) 基本面数据:

  • 公司特定基本面数据: 包括收入、利润、自由现金流等,用于定义特定公司的股票价值。
  • 外部基本面数据:  包括与所选公司相关的宏观经济和行业指标,例如公司运营所在国的国内生产总值 (GDP) 或钢铁生产公司的铁矿石价格。

基于基本面数据的交易策略的主要假设是,股票价格将朝着由上述因素确定的公允价值收敛。例如,研究表明,后收益公告漂移现象是由不成熟的投资者对新信息反应迟钝造成的。这表明交易策略可以利用这种市场低效性,通过快速正确地响应新的基本面数据流来产生超额收益。

(2) 另类数据:

互联网的普及和近年来大量数字数据的产生,为洞察潜在股价走势提供了极具价值的来源。这种另类数据的种类前所未有,它可以是关于公司的任何有见地的信息,从公司网站上的公告、新闻博客和社交媒体上的谣言等显而易见的事例,到更奇特的数据,例如公司招聘版块上发布的新职位数量、在线商店的访问者数量,甚至是公司商店附近停车场的卫星照片或粮食生产公司的田地。

例如,研究人员得出结论,公司商店附近停车场的卫星照片为评估零售商业绩提供了有用的信息。根据研究人员的说法,利用这些数据的交易策略可以利用信息不对称的优势,在基于收益公告进行投资决策的较少知情市场参与者身上获利。这是因为只有部分投资者可以独家访问这些信息,而其他人则不得不依赖官方财务业绩公告,与几乎实时的卫星照片收集相比,这些公告存在相当长的时间滞后。

(3) 市场数据:

市场数据包括从交易所或其他交易平台收集的所有与交易相关的统计数据,例如订单流、股票价格和交易量。这种类型的数据在日内交易中起着至关重要的作用,尤其是在高频交易 (HFT) 中。近年来,高频交易公司获得了巨额利润,这为市场数据值得研究人员关注提供了经验证据。此外,这种市场数据通常以极高的精细度提供。时间序列间隔可以小于 1 毫秒,即使对于像一天这样的短周期,也可以收集到足够数量的分析点。

考虑到上述因素,本文将重点关注市场数据作为股票价格预测模型的核心输入源。

2.2 市场数据分类:类型、频率和深度

本文对市场数据的定义较为狭窄,指的是可以从交易所或其他交易平台收集的与股票交易相关的统计数据,例如股票报价、交易价格和成交量。

  • 类型:  从技术角度来看,市场数据的类型可以被视为特征。最基本的市场数据类型是股票价格和成交量。更高级的类型可能是有关特定订单的信息,例如订单类型、买卖指示符、时间戳等。
  • 频率:   市场数据的频率是根据数据点之间的时间段来定义的。这个时间段越短,数据的频率就越高。最高频率的市场数据是逐笔数据,这意味着数据点之间的时间间隔可以非常小(低于 1 毫秒),由报价更新、订单提交、交易等记录的时间戳定义。通常,日内市场数据以较低频率提供,并以预定义的时间间隔记录,例如 10 秒或 1 分钟。最常见的非日内市场数据示例是收盘价和成交量,仅每天提供一次。
  • 深度:  市场数据深度的概念主要与限价订单簿 (LOB) 数据相关,它包括买卖限价订单价格和数量,最高可达一定水平。例如,最浅的 Level 1 数据仅提供股票的最佳买卖报价及其数量。相比之下,最深的市场数据可能是完整的 LOB,包括所有限价订单的价格和数量数据。

2.3 基于市场数据的交易方法及其演变

基于市场数据的交易策略利用上述数据来推断预期的股票价格变化。为了确定最有前途的市场数据类型以及用于股票价格走势预测的实验方法和模型,本文对这一领域的最新研究进行了分析。

(1) 模型演变:

早期研究主要采用经典数学和统计模型,例如隐马尔可夫模型 (HMM) 或线性回归,以及一些基本的机器学习模型,例如反向传播神经网络 (BPNN) 和支持向量机 (SVM)。此外,遗传算法 (GA),例如传统的/分层 GA、改进的细菌趋化性优化 (IBCO) 或细菌觅食优化 (BFO) 也被广泛用于股票价格预测。

随着时间的推移,应用于股票预测的模型逐渐演变为具有更复杂结构的更深层机器学习模型。基本的机器学习模型,例如 SVM,被更深的机器学习架构,例如卷积神经网络 (CNN) 和长短期记忆网络 (LSTM) 所取代。在更近期的研究中,作者们提出了由不同类型层组成的定制深度学习模型,例如将卷积层和 LSTM 层相结合。据称,与早期的浅层模型相比,这些模型应该可以提高股票价格预测的性能。然而,更复杂的模型也更容易过拟合,这可能会大大限制其泛化能力。

(2) 数据演变:

早期研究主要使用低频数据,通常是每日数据,有时甚至是每周或每月数据。数据样本也相对较小,通常在 500 到 2500 个数据点之间。

近年来,研究趋势转向高频市场数据,并更深入地探索这些数据。例如,不再仅仅依赖于 Level 1 数据,而是使用了多达 10 个级别的 LOB 数据。平均数据样本大小也大幅增加,从数千个数据点增加到数十万个。一些研究使用了包含超过一百万个数据点甚至超过一亿个数据点的数据集。这种趋势可以解释为,随着所应用的模型变得越来越复杂,需要更大的数据集来正确训练它们。

(3) 实验设置、结果可比性、实用性和可重复性:

早期研究主要使用不同的数据集、实验设置,甚至是衡量模型性能的指标,这些指标差异很大。所有这些因素都使得它们几乎不可比。由于只有少数研究公开了数据集和代码,许多此类实验的可重复性也很差。

这种情况在 2017 年第一个公开的基准 LOB 数据集发布后有所改善。该工作通过允许实验设置和性能指标更大的标准化以及基准 LOB 数据集本身,为该领域的研究建立了一个共同平台。最近的最先进的研究经常使用这个数据集来与其他模型比较结果。

然而,只有少数作者使用他们的模型进行交易模拟,例如在这些研究中,并计算基于模型预测的策略的潜在利润。因此,可以评估的模型的实际价值很少。影响这些研究实用性的另一个问题是,即使进行交易模拟,通常也不会考虑交易成本,少数例外情况除外。

影响这些研究实用性的另一个不切实际的假设是,交易可以在中间价执行。中间价只是实际执行价格的一个简化近似值。前者是最佳买卖报价的平均值,而后者将使用市价订单进行购买的最佳报价和进行卖出的最佳出价。使用这种类型的订单是为了确保及时执行。很明显,无论是在买入最佳出价和卖出最佳报价的方向上进行往返交易,还是反之,都会导致比假设中间价执行时更大的价差相关交易成本。

2.4 关键要点

对先前研究的分析表明,使用高频和高深度市场数据(例如 LOB 数据)的机器/深度学习模型是股票价格预测研究领域最有前途的方向,这就是为什么本文在后续章节中对其进行了探索。由于最近该研究领域的最先进模型通常在上述基准 LOB 数据集上进行训练,这有助于大大提高其预测性能的可比性,因此决定在下一章重点回顾利用该数据集的研究,以确定最有前途的研究。

三、对基准 LOB 数据集实验的批判性审查

3.1 基准 LOB 数据集

上述基准 LOB 数据集包含五只股票(Kesko、Outokumpu、Sampo、Rautaruukki、Wartsila)在赫尔辛基证券交易所 10 个交易日(2010 年 6 月 1 日至 2010 年 6 月 14 日)的日内 LOB 数据。

预处理的 LOB 数据集包含前 10 个级别的买卖双方的时机、数量和价格信息。数据集中包含的时间戳以毫秒为单位,从 1970 年 1 月 1 日开始。价格以欧元为单位,小数点后有 4 位数字。除了上述特征外,数据集还包含 1、2、3、5 和 10 个预测范围的标签。标签值为 1(向上移动)、2(无移动)或 3(向下移动)。

该数据集的发布成为该研究领域的一个重要里程碑,为其他作者提供了公开可用的输入数据,并使他们能够对模型的性能进行基准测试。

然而,在我们的实证分析过程中,我们发现该数据集存在一系列问题和局限性,这些问题和局限性可能会在使用它时使结果产生偏差或降低其实用性。

3.2 基于基准 LOB 数据集的 ML/DL 模型比较与批判性评估

本文对表 3 中列出的几种最先进的模型进行了比较,比较基于相同的基准数据集,使用准确性、精确度、召回率和 F1 分数等统计指标。所有考虑的模型都使用数据集前 7 天的数据进行训练,至少训练 150 个周期,并在最后 3 天进行测试。选定的预测范围是 10 个 LOB 事件。

从表 3 和图 4 可以看出,随着时间的推移,随着应用越来越复杂的模型,F1 分数、准确性、精确度和召回率的性能逐渐提高。对于基本的线性和非线性分类(岭回归 (RR) 和支持向量机 (SVM))模型,F1 分数约为 40%。浅层神经网络架构,例如多层感知器 (MLP) 将 F1 分数提高到接近 50%。深度学习模型,例如长短期记忆 (LSTM) 进一步提高了 F1 分数。

在这些深度学习模型中,DeepLOB 和 TransLOB 架构表现最佳。根据其作者的说法,每一个都表现出远高于 80% 的准确性和 F1 分数。如果这些结果在真实股票交易中可重复,这些模型可能会被做市商用来设定他们的买卖报价。

然而,我们感兴趣的是评估这些模型是否可用于生成买入和卖出信号,这些信号可以纳入活跃交易者的交易策略。因此,问题是这些模型是否可以用来制定有利可图的套利策略。在实践中,人们严重怀疑这是否可能。首先,由于前面描述的基准数据集的问题。其次,由于实验设置中可能存在的缺陷。第三,由于忽略了交易成本和假设的中间价执行,基于这些模型的交易策略的预期盈利能力可能被高估。

3.3 早期 LOB 预测的可重复性

3.3.1 模型、实验设置和结果分析

DeepLOB 工作展示了最佳的预测性能之一,其代码可供公众使用。作者的实验在特斯拉 V100 上使用提供的代码并输入基准 LOB 数据集进行重复。该数据集包含五只股票连续 10 天的 LOB 数据。该模型在前 7 天的数据上进行训练,训练 200 个周期,并基于最后 3 天的数据进行了测试。预测范围假设为 5 个事件。

对于训练和验证数据集,分别计算了每个训练周期的 F1 分数、准确性、精确度和召回率。通常,它们与作者在其论文中声称的一致。此外,为了更好地了解每个标签类别(向上、“平坦”、向下)的性能,分别构建了训练和验证数据集的混淆矩阵。

从图 6 可以看出,在最初的 50 个周期之后,随着验证准确性、F1 分数、精确度和召回率的下降以及分类交叉熵损失的上升,过拟合开始发生,而相应的训练指标继续改善:分类交叉熵损失减少,而准确性、F1 分数、精确度和召回率增加。

为了避免过拟合,可以考虑以下操作:

  • 增加数据集的大小。
  • 删除一些特征,优化特征空间。
  • 模型简化。
  • 引入提前停止机制。
  • 保存训练过程中模型的最佳权重。
  • 应用 dropout。
3.3.2 模型的交易实用价值

作者还进行了简单的交易模拟,以测试 DeepLOB 模型是否真的可以盈利。该模拟包括在伦敦证券交易所交易的 10 只股票,分别是:劳埃德银行、巴克莱银行、特易购、沃达丰、汇丰银行、嘉能可、森特拉卡、英国电信、英国石油公司和 ITV。

交易策略如下:当 DeepLOB 模型的输出为向上时,相应股票被收购并持有头寸,直到模型发出向下信号,然后将其卖出。对于卖空,则采用相反策略。在每个交易日结束时,所有头寸都关闭,不允许在拍卖期间进行交易。

然而,他们做出了两个不切实际的假设。首先是没有交易成本。其次是他们可以在中间价买卖股票。

根据股票类型和预测范围,上述交易模拟的平均每笔交易利润在 GBX(英镑便士)-0.01 到 0.03 之间,中位数约为 GBX 0.01。例如,对于特易购股票,平均每笔交易利润接近中位数 GBX 0.01。在撰写本文时,该股票的价差(最佳买卖报价之间的差异)约为 GBX 0.1。假设价差稳定在这个水平,并且交易者必须在规定的时间范围内使用市价订单执行预期交易,即使忽略经纪商费用,这个 GBX 0.1 也成为额外的成本。这比特易购的平均每笔交易利润高出十倍以上。对于其他九只股票,这个价差至少比作者计算的每笔交易平均利润高出几倍。

另一个可以进一步改进此交易模拟的领域是,除了个别股票外,还可以对股票指数交易所交易基金进行交易模拟。由于其多样化的性质,股票指数交易所交易基金比个别股票波动性更小。探索较低的波动性将如何影响该策略的盈利能力将会很有趣。

因此,即使 DeepLOB 模型在预测测试数据集的股票价格走势方面表现出有希望的性能,就其目前的形态和基本的交易策略而言,它不太可能在活跃的股票交易中产生持续利润。 DeepLOB 模型也容易过拟合,正如在重复实验中发现的,因此通过应用上述方法可以提高该模型的泛化能力。

四、结论与未来方向

在过去十年中,限价订单簿作为日内股票价格预测的输入数据已受到大量学术关注,并被证明是特征提取的最有价值的数据源之一。自 2017 年第一个基准 LOB 数据集发布以来,研究数量及其可比性大幅增加。然而,该数据集存在一些问题,例如信息过时、三类之间固有的不平衡分布、数据集中包含的五只股票无法区分、潜在的处理问题以及嵌入在类标签中的不切实际的中间价执行假设。所有这些都可能会大大扭曲使用该数据集进行的实验结果。

尽管如此,一些深度学习模型在标准统计指标(例如准确性、精确度、召回率和 F1 分数)方面表现出强大的性能。然而,进一步的分析表明,基于这些模型的策略只有在假设一些不切实际的条件下才能产生持续利润。其中之一是没有交易成本,第二个是中间价执行。此外,注意到其中一些深度学习模型容易过拟合,这限制了它们的泛化能力。上述数据、模型和实验设置中的问题表明,在每个领域都有进一步研究的余地。

在输入数据方面,建议采取以下步骤:

  • 使用最新的 LOB 数据作为输入特征;
  • 不要隐含假设中间价执行;
  • 为了正确训练深度学习模型,应使用庞大的数据集,否则过拟合问题可能会变得严重;
  • 应执行仔细的预处理,以过滤掉错误数据;
  • 数据集中不同的股票应该是可区分的;
  • 最近的研究中的一些作者主张,除了 LOB 数据外,订单流也可以稍微提高股票价格预测模型的性能。

就模型架构而言,很明显,深度学习架构比经典模型表现出更强的性能。然而,它们也更容易过拟合。因此,应通过以下方法解决此问题:

  • 删除相对不太重要的特征,优化特征空间;
  • 优化模型架构。这可以通过限制神经元数量和删除相对不太关键的层来实现;应用 dropout 功能以在训练期间概率性地删除输入。

多年来,LSTM 模型一直是时间序列预测的标准方法,并被证明特别适用于股票价格预测。这些研究的作者也建议将 CNN 与 LSTM 相结合可以进一步提高性能。新的深度学习架构 Transformer 在翻译问题上表现出比 LSTM 更好的性能。 Wallbridge 开发了适用于基于 LOB 的股票价格预测的 Transformer 版本,并声称它在基准 LOB 数据集上表现出最佳性能。

为了开发下一代最先进的模型,可以采取两个广泛的方向,要么找到改进上述模型的方法,要么提出一种新的模型架构,或者至少是一种尚未用于此类问题但可以表现出优越性能的模型架构,而不会遭受过拟合。

实验设置在获得的研究结果的质素中起着至关重要的作用。特别是,可以对其进行一些改进以解决前面提到的过拟合问题:

  • 增加数据样本的大小;
  • 在模型训练中引入提前停止机制;
  • 保存训练过程中模型的最佳权重。

同样重要的是,对样本外数据而不是仅对训练过程中已经用于寻找最优模型参数的验证数据进行测试。如果不这样做,现有的过拟合问题可能会被隐藏。

对于股票预测任务,至关重要的是不要将实验仅限于标准统计性能指标,例如准确性、F1 分数等,而且还应进行交易模拟。利润是这些算法的最终成功指标,如果模型无法在包括交易成本、买卖价差和市场影响在内的真实市场条件下帮助持续产生利润,那么其实用价值相当有限。






更多资源见星球,加入QuantML星球,与星主和800+专业人士一起交流学习:


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