"AI 能不能预测股价?"——这是外界最常问的问题,但它问错了方向。真正决定生死的不是预测准不准,而是下面这个等式:
其中 A 是方向命中率,E|Δmid| 是持仓期内中间价的平均绝对变动,cost 是往返交易成本。这个式子揭示了三件事:命中率只是三个变量之一;波动幅度(你能赚多少)和成本(你要付多少)同样重要;三者中任何一个失控,策略都会失败。
当前行业与自媒体对 AI 量化的讨论,绝大多数停留在第一项——展示准确率、F1 分数、回测收益率曲线,却很少回答第二和第三个变量。本文的全部工作,就是把这三个变量放在真实数据上逐一测量。
我们的研究素材包括三类:Binance 公共归档的 12 个月 BTCUSDT 分钟级与逐笔数据(52.7 万根 1 分钟 K 线、941 万笔逐笔成交,免费无 Key)、FI-2010 十档限价单簿学术数据集(北欧 5 只做市股票,33.9 万样本),以及完整的机器学习实验管线。所有结论均可复现。
在给出任何数字之前,必须先确立纪律。本项目在推进过程中付出了代价才确立以下四条:
我们建立了三层技术验证:秒级订单流(BTC 成交流)、十档盘口(FI-2010 学术集)、中低频分钟级(12 个月大样本)。三层分别回答不同时间尺度上的信号有效性,共同构成对"信号是否存在"的完整回答。随后用经济核算层(P0)回答"能不能赚钱",最后用策略设计层回答"怎么做才合理"。
订单流失衡(OFI,Order Flow Imbalance)是微观结构理论的核心变量,Cont 等人的研究给出 Δp ≈ β·OFI 的线性关系。我们最初用 1 分钟 bar 做验证,得到"完全无效"的结论——后来证明这是两个工程错误导致的:
修正后(5 秒 bar + 分位数标签 + 逻辑回归),10 秒预测二分类准确率达到 57.39%(z = +12.49,统计极显著),30 秒 52.85%,60 秒 51.54%。这是本项目首次拿到显著优于随机的结果,且逻辑回归优于树模型,印证了 OFI 的线性本质。
但关键发现随之而来:加上 15 秒的时标平移(模拟真实延迟)后,命中率从 57.39% 崩到 50.5%。真实交易必然有延迟——数据到达、特征计算、模型推理、下单传输、撮合等待——而这段延迟恰好吃掉了信号的黄金段。这验证了"延迟既吃信号、又吃成本"的双重打击机制。
为验证"缺盘口"是否是病根,我们引入 FI-2010 数据集(北欧 5 只做市股票的十档限价单簿)。这里首先纠正了一个可能影响全部结论的标签错误:该数据集标签为 1=涨 / 2=震荡 / 3=跌(无 0 类),而早期脚本的"去震荡"逻辑在无 0 类的情况下完全失效,实际做的是"上涨检测"而非"涨跌方向判断",据此得出的 74–83% 数字全部作废。
用正确口径重跑后:
| 指标 | k=10(≈5秒) | k=20(≈10秒) |
|---|---|---|
| 正确二分类(涨 vs 跌,GBM) | 65.7% | 71.1% |
| 三分类 macro F1(GBM) | 54.4% | 64.8% |
| 三分类 macro F1(DeepLOB 2D) | 70.4% | 63.7% |
两个结论至关重要。其一,加入十档盘口后,同尺度方向预测的准确率从 57% 跃升至 71%,提升约 14 个百分点——这是本研究中观测到的最大单一杠杆。其二,逻辑回归在此仅 55–60%,GBM 碾压之,说明盘口数据含强非线性结构,与成交流的线性特征形成鲜明对比。
前两层的样本量都有限。为获得可信结论,我们下载了 12 个月(2023-07 ~ 2024-06)BTCUSDT 的 1 分钟 K 线数据,覆盖大涨(2023Q4)、ETF 行情震荡(2024Q1)、冲高回调(2024Q2)三种截然不同的市场环境,共 527,040 根 bar。这里有一个工程优化:月度 1 分钟 K 线自带 taker_buy_volume(主动买入量),可完整构造订单流失衡等因子,12 个月数据仅 25MB,而同等区间的逐笔数据需 9GB 以上。
结果如下:
| 检验维度 | 结果 |
|---|---|
| 逐折命中率(walk-forward 3 折) | 52.33% / 52.83% / 53.32% |
| 最优预测窗口 | 15–30 分钟(53.2%) |
| 最优回看窗口 | 240 分钟(特征重要性 +0.0215,为第二名 2 倍) |
| 策略真实毛利 | +0.40 ~ +0.44 bps/笔 |
这个数字体系里藏着两个反直觉的发现。第一,胜率可以高达 63–66.5%,但毛利只有 +0.4 bps——因为信号驱动出场必然发生在趋势已经翻转之后,盈亏比严重不对称,高胜率完全不等于赚钱。第二,7 天数据曾给出 +6.6 bps 的毛利,在大样本下被证明是采样相位的运气,真实水平是 +0.4 bps,相差 16 倍。
由期望公式 (2A−1)×E|Δmid| = cost 可解出盈亏平衡所需命中率:
这个式子说明:成本越高、波动越小,所需命中率越接近甚至超过 100%。BTC 在 50 秒内的平均绝对变动仅约 5.6 bps,而零售 taker 往返成本为 11.5 bps,代入得 A* = 132%——这是一个不可能达到的值。
更根本的矛盾在于两个窗口的错位。要让覆盖成本所需的波动(σ > 77.8 bps)出现,需要持仓约 1.7 小时;但我们的信号半衰期只有 5–10 秒,持仓 1.7 小时后命中率早已衰减回 50%。持仓短则被成本吃掉,持仓长则信号衰减成随机——两个可行区间不重叠。
这个死局与前述"上帝视角"论证是同一事实的两种表达:前者说"赚的不够付",后者说"能赚的时候信号已经没了"。
| 场景 | 往返成本 | 核算结果 |
|---|---|---|
| 托管 co-location HFT | 1.5–3.5 bps | 全周期盈利,+0.84 bps/笔(唯一可落地档) |
| 机构云 / 近托管 | 5–8 bps | 全亏(盈亏平衡波动 18–95 bps ≫ 实际 5–28 bps) |
| 零售加密 taker | 10–14 bps | 全亏,长周期命中率跌回随机 |
真实数据实锤:以 7 天 941 万笔逐笔成交回测(5 秒 bar + OFI + 时标平移 15 秒 + taker 11.5 bps),命中率 50.5%、净亏 −11.5 bps/笔,与框架判断完全一致。
以中低频策略毛利 +0.4 ~ +6.6 bps(视采样口径)为基准做敏感性分析:盈亏平衡成本约 4–7 bps。因此:
这解释了为什么做市商结构能够容纳 52% 级别的微弱优势,而 taker 结构完全不能。
本项目在策略层面最重要的澄清来自一次追问:既然每 5 秒(或每 1 分钟)预测一次未来 50 秒的趋势,为什么要在 10 秒后卖出?答案是——不应该。
预测窗口(模型看多远)与持仓时间(仓位拿多久)是两个独立的量。正确的实盘逻辑是:持有底仓 → 每次决策点预判趋势 → 看涨则继续持有或加仓至上限 → 遇到卖出信号才卖出。只在方向翻转时交易,交易次数可降低约一个数量级,成本随之大幅下降。
把上述逻辑直接实现会暴露一个问题:模型预测在相邻决策点频繁翻转(7 天内翻转 361–575 次),"只在翻转时交易"并没有省下成本。解法是引入滞回带:概率 ≥0.60 才开仓、≤0.40 才平仓,中间地带保持不动。实测效果:
| 配置 | 交易次数 | 平均持仓 | 毛利 |
|---|---|---|---|
| 无滞回 | 361 | 11 分钟 | +0.09 bps |
| 滞回 [0.55, 0.45] | 198 | 20 分钟 | +1.31 bps |
| 滞回 [0.60, 0.40] | 124 | 32 分钟 | +1.71 bps |
带宽越宽,交易越少、持仓越长、毛利越高,方向完全符合预期。但要注意:只有 GBM 的概率有信息量,逻辑回归加滞回反而更差——它的"高置信时段"恰是坏时段。
由于步长与窗口解耦,可以同时运行多个预测窗口的模型并综合判断。实测显示:1/5/30 分钟三窗口的平均概率一致优于任何单窗口(毛利好 0.75–1.4 bps)。而投票法因分数粒度太粗(仅 0、⅓、⅔、1 四档)导致状态机频繁跳变,效果明显不如平均概率。
由此形成双层信号框架:长窗口(30–60 分钟)配合强滞回决定持仓进出,解决"拿不拿";短窗口(50 秒)作为高频风控哨兵,在趋势刚翻转时快速离场,解决"何时止损"。短窗口的价值不在于驱动交易,而在于止血速度。
通过系统的双窗口扫描(9 个回看尺度 × 9 个预测窗口),12 个月大样本给出以下参数地图:
| 参数 | 最优值 | 说明 |
|---|---|---|
| 决策步长 | 1 分钟 | 滚动预判,可加密至秒级 |
| 回看窗口 | 240 分钟 | 特征重要性最高;3–15 分钟短尺度为负贡献 |
| 预测窗口 | 15–30 分钟 | 命中率 53.2%;超过 1 小时毛利转负 |
规律可概括为"看长做短":用 4 小时的历史,判断未来 15–30 分钟的方向。回看窗口与预测窗口呈 8–16 倍的倍率关系,这与"长周期确定趋势背景、短周期执行"的直觉一致。
为界定模型能力上限,我们复现了 DeepLOB(CNN + Inception + LSTM 的端到端盘口模型)。过程本身极具教育意义——三个陷阱,缺一个模型就完全学不动(loss 卡死在 ln(3)=1.099):
修复后,2D DeepLOB 在 k=10 上达到 macro F1 = 0.7037(准确率 0.7872),大幅超越 144 维手工特征 GBM 的 0.544(+16 个点);但在 k=20 上为 0.637,与 GBM 的 0.648 基本持平。这给出一个清晰的边界:窗口越短,端到端深度学习的优势越大;窗口拉长后,人工构造的时序特征就能追平。这与 2025 年芝加哥大学关于 BTC/USDT 盘口的研究(arXiv 2506.05764,经预处理的简单模型可匹配甚至超越 DeepLOB)在方向上是呼应的——模型复杂度必须与数据形态和时间尺度匹配。
距论文 83.4% 的差距(0.13)主要来自:CPU 仅训练 7 个 epoch 即早停、使用归一化数据而非论文的原始输入、未采用学习率调度与集成等技巧。
把我们的结论放回行业背景,能更清楚地看到位置:
我们实测到的"命中率稳定但经济上不可行",与这些行业现象是同一枚硬币的两面:机构能够盈利,靠的不是模型更准,而是数千名研究员、百万级数据预算与交易所机房共置——即成本结构的优势,而非算法优势。这一点对资源有限的小团队具有决定性含义。
综合三层技术验证与经济核算,可行路径收敛为三条,且都有实证支撑:
| 路径 | 机制 | 实证支撑 | 门槛 |
|---|---|---|---|
| A. 十档盘口数据 | 提升命中率 A | 57% → 71%(+14 点,本研究最大杠杆) | crypto 需实时录 depth |
| B. maker / 做市 | 把成本压到零甚至为负 | 52–53% 命中即为正期望 | 需交易所共置资源 |
| C. 更低频 / 另类数据 | 放大 E|Δmid|,压低交易频次 | 30 分钟尺度盈亏平衡成本 4–7 bps | 需 12 个月以上数据验证 |
对小团队而言,最务实的组合是 B 与 C:用中低频 ML 策略(信号驱动持仓 + 滞回带 + 多窗口综合 + 哨兵止损)作为主线,配合尽力争取的费率条件;把 A 作为能力提升的长期方向。而纯"预测准确率"驱动的零售 taker 策略,已被本文的数学与实证双重否定。
本研究最有价值的产出,或许不是任何一条策略结论,而是一次代价清晰的方法论教训:基于 7 天数据,我们得到了 4 条"规律",其中 3 条被 12 个月大样本推翻——包括"长回看窗口有害"(实际相反,240 分钟最重要)、"3 分钟预测窗口最优"(实际是 15–30 分钟)、"超过 1 小时命中率崩溃"(实际稳定在 52%)。唯一存活的是"命中率约 52%"。
由此确立为项目铁的纪律:任何基于不足 1 个月数据的回测结论,都只能当作假设而非结论。完整验证必须满足三个条件——12 个月以上样本、walk-forward 时间切分、覆盖多种行情环境。同时,在讨论任何收益之前,先扣除全部成本。
AI 量化交易的真正难点,从来不是让模型在回测里显得聪明,而是在扣掉真实世界的一切摩擦之后,仍然站着。