写在前面
下面这篇文章的内容主要是来自发表于TechRxiv 的一篇Preprint文章《Order Flow, Technical Analysis And Neural Network: Predicting Short-term Direction Of Futures Contract》。这篇文章提出了一种针对期货数据的短期预测模型,其对一系列来自技术分析、订单流的特征进行特征工程处理,用TabNet模型实现模型的训练,实验结果证实了提出的模型在期货价格波动方向方面的预测可以实现60%的准确率。原论文在文末进行获取。
1
摘要
如何对期货合约的短期走势进行预测是具有挑战性的,因为它的价格通常受到多种复杂的动态环境的影响。这篇文章提出了一种针对期货合约价格短期方向运动的预测方法。具体地,该文章从技术分析、订单流和订单记录数据中选取并构造了一系列的特征。然后,利用这些特征对深度学习神经网络TabNet进行训练。实验验证部分,用到了上海期货交易所上市的白银期货合约对模型进行了训练,在选定时段内,模型预测方向变化的准确率达到0.601。将预测模型与基本交易策略结合使用时,在两个月内可获得24.08%的利润。
总而言之,这篇文章的主要贡献是:
(1) 从订单、时间和交易中提取特征。
(2) 将常规技术分析特征与高频订单数据的技术分析特征进行集成。
(3) 用到了过滤器来区别机构交易者和散户。
(4)与传统的交叉验证相比,模型的特征建模采用了Purged Group Time Series Split策略,以防止未来数据泄漏和过拟合。
(5)虽然模型的准确性不是最先进的,但无论市场状况如何,预测精度在整个时间跨度内都具有相对一致性。
(6)可以将提出的模型结合一些基本的交易策略在选定的时间跨度上获得较高回报。
2
数据收集以及预处理
文章用到了来自2018/1/1到2021/12/31的白银近月期货数据来进行实验。选取的实验数据的走势如下图所示。
2.1 数据收集以及标注
文章的目标是预测接下来的15分钟期货合约的波动方向。为了使目标更加稳定,文章用到了2分钟的移动窗口并计算VWAP来平滑短期峰值,定义如下:
之后,基于平滑的价格计算15分钟的log收益率:
预测的target根据收益率的正负来进行标注:
实际中,较小的收益波动可能会产生噪声并影响训练目标,所以在实际市场条件下是不实用的。因此,为了解决这个问题,文章对收益率设置了一个阈值 来过滤较小的收益。这样总样本数目就由38294652减少到了24347353。除此之外,target的分布也是基本均匀分布的,如下表所示。
2.2 市场数据预处理
从原始的市场信息源出发,文中计算了几个特征,这些特征需要进行预处理以便于进一步的特征工程。
交易量和持仓量变化
对于第 时刻的快照,交易量和持仓量变化的计算如下:
开仓量和平仓量
基于前面对交易量和持仓量的变化,可以得到:
从而可以得到第 时刻快照的开仓量和平仓量:
快照类型
根据价格和持仓量的变化,将第 时刻快照又分为了四类,如下图所示:
Type 1 snapshot表示快照价格高于前一个快照,未平仓头寸增加,推测是由于市场参与者做多导致头寸增加所致。Type 2 snapshot表示快照价格低于前一个快照,未平仓头寸增加,推测是市场参与者做空增加了头寸所致。Type 3 snapshot表示快照价格高于前一个快照,未平仓头寸减少,推测是市场参与者做多导致头寸减少所致。Type 4 snapshot表示快照价格低于前一个快照价格,未平仓头寸减少,推测是市场参与者做空,头寸减少所致。
开高低收成交量
OHLCV(Open, High, Low, CLose, Volume)图显示了每个时期的开盘、高位、低位和收盘价格和总成交量。在文章中,每1分钟(120个快照)汇总一次。基于OHLCV图可以生成模型所使用的技术分析特征,以用于进一步分析。
3
特征工程
这部分详细介绍了基于前面预处理后的数据,如何生成用于模型使用的特征。
3.1 技术分析特征
技术分析不同于基本面分析,它试图找到价格和成交量的模式以及供求关系来预测价格走势。此外,技术分析可以产生短期交易信号,有着广泛的技术分析应用。文中使用从快照中生成的1分钟OHLCV数据来生成其中的一些技术指标。具体用到的指标以及参数设置如下面的表格所示:
3.2 订单特征
订单簿是指一种特定证券或金融工具的买卖订单的电子清单。订单簿提供了关于买卖强度的详细信息。
Bid-Ask Spread
当前快照数据前K档bid-ask价差的累计值:
然后,应用一个滚动窗口来表示过去m分钟内的移动均值数据:
对于每时刻的快照,都计算前5档(k=1、2、3、4、5)和滚动周期m(5、10、15、30分钟)的累积价差,从而每个时刻都生成20个特征。
Volume imbalance
同累积价差一样,交易量也有类似的计算方法。当前快照数据前K档交易量的累计差异为:
同样,应用一个滚动窗口来表示过去m分钟内的移动均值数据:
对于每时刻的快照,都计算前5档(k=1、2、3、4、5)和滚动周期m(5、10、15、30分钟)的累积价差,从而每个时刻同样生成20个特征。
3.3 订单类型特征
前面为每个时刻的快照定义了四类,下面计算前m分钟的快照每种类型的占比,并将其作为订单类型特征:
之后,文中假设机构投资者的订单较大,因此将较大订单的快照进行过滤,这里是将每个时刻下单大于10手的快照进行过滤,即:
这样,通过计算所有四种快照类型,每个快照的滚动周期m为5、10、15、30分钟,从而生成32个特征。
3.4 订单流特征
Close Percentage
已成交合同与未成交合同的比例:
Open Interest Change
未平仓合约变动百分比:
我们计算每个快照的滚动周期m为5、10、15、30分钟,从而生成8个特征。
3.5 相关性分析
所生成的特征与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.
关注《人工智能量化实验室》公众号,后台发送108可获取原论文。

了解更多人工智能与
量化金融知识
<-请扫码关注
让我知道你在看