量化交易入门:从想法到回测

量化交易把一个想法变成明确的规则,用数据检验这些规则,并衡量扣除成本后的结果。散户可以从一个品种、一个假设开始。写机器人是后面的事;第一步是决定什么样的证据会让你否定这个想法。

Senzoukria · 学习 · 更新于 2026 年 9 月


量化交易、算法交易与订单流

每种方法回答什么问题,又不能证明什么
术语它回答的问题它不能证明的事
量化研究一个定义精确的想法能否通过检验?未来的盈利能力
算法执行软件如何下单并管理订单?底层想法确实具备优势
订单流分析成交了什么,订单簿上挂出了多少流动性?参与者身份或未来方向
Gamma 敞口期权模型估算出多大的敞口?每一家做市商的真实持仓

如果这些输入对你还陌生,先读订单流指南GEX 指南说明了建模所依赖的假设。研究流程必须把观测值与估计值分得清清楚楚。

写下一个可以被否定的假设

“订单流强的时候买入”这类说法太模糊,无法检验。请写明品种、交易时段、K 线构建方式、入场时点、出场规则、仓位大小以及排除掉的数据,然后在去寻找最好看的结果之前,先把这份定义冻结下来。

举例来说,研究问题可以是:一个事先设定的 delta 条件,是否改变固定时段内下一根 K 线收益的分布。这是一个待考察的问题,不是入场建议。在跑测试之前,先记录阈值和对照组。

选择真正包含你所需输入的数据

  • 只用收盘价的规则可以用 K 线,前提是它们的时间定义清楚。
  • 基于 bid/ask delta 的规则需要带有明确买卖方向判定的成交量。
  • 基于订单簿压力的规则需要历史深度更新,而不只是成交记录。
  • 基于期权流或 GEX 的规则需要带时间戳的期权观测数据,以及当时所用的模型版本。

检查缺失区间、重复事件、时区、合约换月与计量单位。今天能加载出图,并不代表历史数据是完整的。期货回测指南讲解了各种执行模型及其局限。

一个小小的期望值例子

假设性的结果:40% 的盈利交易平均赚 3 跳,60% 的亏损交易平均亏 1 跳。毛期望为 0.40 × 3 − 0.60 × 1 = 每笔 0.6 跳。若来回总成本为 0.8 跳,净期望变成 −0.2 跳。毛期望为正并不要求高胜率,而为正的毛期望也可能在扣除成本后消失。

请用该品种真实的每跳价值来换算现金费用。除了平均值,还要跟踪回撤、样本量、敞口以及不同时期之间的差异。这段示例算术并不是对平台业绩的承诺。

把研究与评估分开

  1. 选定规则和训练区间。
  2. 记录尝试过的每一种配置,包括失败的。
  3. 在测试较晚的时间段之前,把选择冻结。
  4. 比较不同窗口的结果,并在更高的执行成本下再比较一次。
  5. 保留一段完全未动用的最终时期,用于最后的评估。

看到测试结果后反复修改策略,就等于把这次测试变成了训练的一部分。Bailey 等人在 The Probability of Backtest Overfitting 中研究了在大量配置中挑选的问题。历史测试成功,依然以它所用的数据和假设为前提。

从研究笔记到交易工作流

交易日志记录规则版本、数据集和否定某个想法的决定。用脚本重复相同的计算。在 Senzoukria 中,策略历史回测支持 JavaScript 和 Python;C++ 脚本运行在独立的 WebAssembly 运行时里,没有历史回测通道。

回测工作区采用基于 K 线的执行模型,它不会重建你在挂单队列中的位置。在兼容的 Rithmic 账户上手动明确启用的自动驾驶,是另一项独立的执行能力,受账户权限和公司规则约束。研究结果本身不会启用它。

接下来学什么

赫斯特指数估计当作一个有采样局限的模型来学,把期权流当作对合约活动的观测来看,把walk-forward 测试当作按时间顺序进行的评估流程。先做一个记录完整的实验,而不是一次把所有指标堆在一起。

常见问题

什么是量化交易?
量化交易用明确的规则和可衡量的证据来做出或评估交易决策。它可以是手动的,也可以是自动的;单一指标或图表上一次盈利的例子都不构成一套策略。
入门量化交易一定要会 Python 吗?
不需要。先写出没有歧义的规则,并收集可复现的数据集。当你需要重复同一套流程、记录失败的尝试、把训练与后续评估分开时,代码才真正派上用场。
订单流和 GEX 可以用在量化策略里吗?
可以,作为可检验假设的输入。请保留每个决策时刻真正可得的数据:历史深度无法从 K 线反推,今天的 gamma 分布也不能替代历史快照。
回测盈利就足以把策略自动化吗?
不够。要检查成本、信息泄漏、选择偏差、数据覆盖,以及此后未见过的时间段。模拟与纸上交易同样不同于真实成交,自动化还需要单独的账户权限和风险控制。