今天读到一篇 2025 年的论文《用订单簿数据预测加密货币短期价格走势》,作者还有 X 账号
作者的研究数据是 2025 年 1 月 30 日来自 Bybit 公开接口的原始订单簿L2数据。每 100ms 一个快照,每个快照最多 200 层买卖盘。主实验用了 10 万条(约 166 分钟),序列实验扩到 100 万条(约 28 小时)。数据免费可获取,所以论文的可复现性不错。
研究方法是将数据分为不过滤、SG 滤波、Kalman 滤波三组,然后分别输入 6 个模型,在二分类(涨/跌)和三分类(涨/平/跌)两种标签下,分别预测 100ms / 500ms / 1s 后的价格方向。总共是 3(数据预处理)×6(6 组模型)×2(预测结果为二分类还是三分类)×3(三个预测时间窗口) = 108 组实验。
模型按照复杂度分组如下:
- 简单模型(逻辑回归和 XGBoost): 手动设计特征(比如买卖量差、供需不平衡),作为模型输入。速度最快,而且我们能看懂模型如何依据特征做判断,知其然更知其所以然。
- 混合模型(CNN+CatBoost 和 CNN+XGBoost): 不再是手动设计特征,而是让神经网络自己学习数据的特征,然后将这些特征输入决策树。优点是可能发现人工想不到的特征组合,坏处是这些特征难以解释,知其然不尽知其所以然。
- 深度模型(DeepLOB及其简化版): 完全端到端的神经网络,从特征提取(和之前的区别是这次可以提取序列信息作为特征)到最终判断全部自动完成,知其然而不知其所以然。
评估指标是预测正确率(技术上叫 F1 分数,同时衡量"你说涨的时候有多少次真涨了"和"真正涨的时候你抓住了多少次",0 到 1,越高越好)。同时记录训练时间。训练集 80%、测试集 20%,没有做交叉验证,因为时序数据不适合随机打乱。
核心观点1: 数据质量比模型选型重要
以三分类 500ms 40层订单簿的预测为例:
- 同样的 XGBoost,输入原始数据时预测正确率 0.45,做了 SG 平滑后升到 0.54,提升约 21%。
- 把模型换成更复杂的 DeepLOB,在原始数据上反而更低(0.43)。即使 DeepLOB 也做了 SG 平滑(0.52),依然不如 XGBoost+SG(0.54)。
数据质量的提升效果远超模型复杂度的提升效果。
SG 滤波为什么效果这么好?
原始订单簿数据非常毛躁,价格和挂单量在毫秒级别剧
Post #21874
152
