写在前面
以下文章的内容主要来自发表TechRxiv 的一篇Preprint文章《Order Flow, Technical Analysis And Neural Network: Predicting Short-term Direction Of Futures Contract》。本文提出了一种针对期货数据的短期预测模型,用于处理技术分析和订单流的一系列特征项目TabNet实验结果证实,提出的模型在期货价格波动方向上的预测可以达到60%的准确率。
1
摘要
由于其价格通常受到各种复杂动态环境的影响,因此如何预测期货合约的短期趋势具有挑战性。本文提出了期货合约价格短期运动的预测方法。本文从技术分析、订单流和订单记录数据中选取并构建了一系列特征。然后利用这些特点深入学习神经网络TabNet进行训练。在实验验证部分,上海期货交易所上市的白银期货合约用于培训模型。在选定时间内,模型预测方向发生变化。当预测模型与基本交易策略相结合时,可在两个月内获得24.08%的利润。
总之,本文的主要贡献是:(1) 从订单、时间和交易中提取特征。
(2) 整合常规技术分析特征和高频订单数据技术分析特征。
(3) 使用过滤器来区分机构交易者和散户投资者。
与传统的交叉验证相比,模型的特征建模采用了Purged Group Time Series Split防止未来数据泄漏和过拟合的策略。
(5)虽然模型的准确性不是最先进的,但预测精度在整个时间跨度内相对一致,无论市场情况如何。
(6)提出的模型可以结合一些基本的交易策略,在选定的时间跨度上获得更高的回报。
2
数据收集和预处理
本文利用2018/1/1到2021/12/31的白银近月期货数据进行实验。所选实验数据的趋势如下图所示。
文章的目标是预测未来15分钟期货合约的波动方向。为了使目标更加稳定,文章使用了2分钟的移动窗口来计算VWAP定义如下:
之后,以平稳的价格计算15分钟log收益率:
预测的target标注收益率的正负:
在实践中,较小的收入波动可能会产生噪音,影响培训目标,因此在实际市场条件下是不实用的。因此,为了解决这个问题,文章为收益率设定了阈值过滤小收入。这样,总样本的数量从38294652减少到24347353。target分布基本均匀,如下表所示。
从原始的市场信息源出发,文中计算了几个特征,这些特征需要进行预处理以便于进一步的特征工程。
对于第时间快照、交易量和头寸变化的计算如下:
基于交易量和头寸的变化,可以得到:
从而得到第一时刻快照的开仓量和平仓量:
根据价格和头寸的变化,第时刻快照又分为了四类,如下图所示:
Type 1 snapshot这意味着快照的价格高于前一张快照,未平仓头寸增加。据推测,头寸增加是由市场参与者做多引起的。Type 2 snapshot表示快照价格低于前一张快照,未平仓头寸增加,推测市场参与者做空头寸增加。Type 3 snapshot这意味着快照的价格高于前一张快照,未平仓头寸减少。据推测,市场参与者寸减少。Type 4 snapshot表示快照价格低于前一个快照价格,未平仓头寸减少,推测是市场参与者做空头寸减少造成的。
OHLCV(Open, High, Low, CLose, Volume)图显示了每个时期的开盘、高、低、收盘价和总成交量。在文章中,每1分钟(120张快照)总结一次。OHLCV用于进一步分析可以生成模型中使用的技术分析特征。
3
特征工程
这部分详细介绍了基于前面预处理后的数据,如何生成用于模型使用的特征。
技术分析不同于基本面分析。它试图找到价格、交易量和供求关系的模式来预测价格趋势。此外,技术分析可以产生广泛应用的短期交易信号。本文使用快照生成的1分钟OHLCV数据生成一些技术指标。具体指标和参数设置如下表所示:
订单簿是指特定证券或金融工具的销售订单的电子清单。订单簿提供了关于销售强度的详细信息。
当前快照数据前K档bid-ask累计价差:
然后,用滚动窗口来表示过去m分钟内的移动平均数据:
对于每时每刻的快照,计算前5档(k=1、2、3、4、5m累积价差(5、10、15、30分钟),每时每刻产生20个特征。
与累积价差一样,交易量也有类似的计算方法。目前快照数据前K档交易量的累计差异如下:
同样,用滚动窗口来表示过去m分钟的移动平均数据
对于每时每刻的快照,计算前5档(k=1、2、3、4、5m(5、10、15、30分钟)累积价差,每时每刻也产生20个特征。
每时每刻定义四类快照,计算前m分钟快照的比例,并将其作为订单类型的特征:
之后,假设机构投资者资者订单较大,因此过滤大订单的快照,即每次订单超过10手的快照,即:
通过计算所有四种快照类型,每种快照的滚动周期为5、10、15、30分钟,从而产生32个特征。
交易合同与未交易合同的比例:
未平仓合约变动百分比:
每个快照的滚动周期为5、10、15、30分钟,从而产生8个特征。
产生的特征和target之间的Pearson相关系数为:
4
模型搭建
TabNet是一种针对表格型数据的深度学习模型,它在保留DNN的end-to-end和representation learning特点的基础上,还拥有了树模型的可解释性和稀疏特征选择的优点,这使得它在具备DNN优点的同时,在表格数据任务上也可以和目前主流的树模型相媲美。模型参数的设置如下表所示:
交叉验证是一种将数据集分割为不同部分,然后使用不同部分进行训练和验证的方法。交叉验证可以有效地防止过拟合,特别是在小型或不同的数据集上。尽管数据集有数百万行,但在我们的实例中,未来的数据往往是不稳定的。因此,单个模型很容易过拟合训练数据集。然而,传统的交叉验证方法仍然存在过拟合的风险。由于每个训练实例不是孤立的,而是一个没有间隔的时间序列,因此有些特性有一些延迟或窗口计算可能会泄露不可见的信息。因此,我们必须引入一个缺口,以防止信息泄露的风险。文中利用Purged Group Time Series Split作为数据划分方式。在这个过程中,在不进行任何shuffle的情况下,每次分割时测试索引必须高于以前的索引。另外,在训练数据集和验证数据集之间引入了一个缺口,以处理滞后特征。其中,数据集分成五份,如下图所示:
文中在日期为2018年1月1日至2021年8月31日的数据集上训练模型,样本量为21642091。并且在训练前,进行半监督方式的与训练。模型的训练曲线如下图所示。
5
实验结果
作者在2021年9月1日至2021年12月1日的数据集上验证模型。测试数据集的标签分布如下所示。
由于文中对数据集进行交叉验证,所以共有5个模型,首先需要单独预测每个模型的预测结果,然后使用以下方法对结果进行集成,其中预测结果用于分类的阈值设为0.5。
测试集上的预测结果如下所示,其中准确率达到了0.6,一方面说明模型的分类有效性,另一方面也说明了期货市场预测的难度。
之后,为了验证模型的盈利能力,作者提出了下面的策略,其中默认持有100%的现金,或者满仓期货。忽略了交易费用。假设下一个价格成交。用到了10%的杠杆率。
在测试集上的价格走势以及净值曲线如下图所示:
可以看出尽管期货合约价格在此期间几乎没有什么明显的趋势变化,但模型仍然可以在此期间产生相对不错的回报。模型的评估指标如下表所示,可以看出模型在这个期间还是实现了不错的收益率。
6
总结
这篇论文讨论了一种基于传统技术分析生成的多种特征和市场微观结构如订单流程和订单簿数据的神经网络模型。进而,使用特定的交叉验证方法来训练模型。再将这个模型与传统交易策略结合时,即使采用基本的交易策略,该模型也能取得不错的效果。除此之外,作者也给出了拓展的思路,例如利用其他类型的数据,如新闻和社交媒体数据,生成情感得分等特征。另外,也可以集成一个非神经网络模型,例如,一个基于树的模型和一个神经网络模型以获得更好的精度。总而言之,这篇文章提出了一些较为新颖的高频技术指标,为国内期货数据交易模型提供了一些借鉴的思路。
参考文献:
Zheng Y. Order Flow, Technical Analysis And Neural Network: Predicting Short-term Direction Of Futures Contract[J]. 2022.
关注《人工智能量化实验室》公众号,后台发送
了解更多人工智能与量化金融知识
<-请扫码关注
让我知道你在看