量化交易研究入门
量化交易不是把历史行情交给模型寻找最高收益。本文从可证伪假设开始,说明点时数据、样本划分、成本、容量、过拟合、程序化交易报告和运行风控,并给出可复核的研究协议。Bastix 没有统一回测或券商下单能力。
量化交易不是“用数学保证收益”,而是把研究假设、数据、规则、成本和风险写成可计算、可复核的过程。真正的难点通常不在模型名字,而在当时是否拿得到这份数据、试过多少参数、成交假设是否现实,以及历史上好看的结果是否只是选择偏差。
中国证监会在《证券市场程序化交易管理规定(试行)》发布说明中将程序化交易界定为通过计算机程序自动生成或者下达交易指令的证券交易行为。量化研究、历史计算和程序化下单不是一回事;一旦进入真实指令生成或下达,还要处理报告、系统、异常交易监控与责任主体。
先区分四个阶段
| 阶段 | 产物 | 主要风险 | 是否涉及真实资金 |
|---|---|---|---|
| 假设研究 | 可证伪问题、数据字典、规则草案 | 叙事先行、定义模糊 | 否 |
| 历史检验 | 代码、版本、回测结果和失败记录 | 前视、幸存者、过拟合、成本遗漏 | 否 |
| 模拟或纸面运行 | 按当时数据持续产生信号与记录 | 数据延迟、运行故障、模型漂移 | 通常否,仍需看产品定义 |
| 程序化实盘 | 真实账户、指令、订单、成交与风控 | 资金损失、系统安全、市场影响与合规 | 是 |
不要因为工具能生成策略代码,就把它当作已具备程序化交易系统;也不要因为历史检验通过,就跳过模拟运行和合规准备。
一份研究协议要先写什么
可证伪假设
用“如果……那么……;出现……则否定”写研究问题。例如:
在已经固定的标的池和研究期间内,某个只使用当时可得价格的简单规则,在计入预先设定的单边成本后,是否仍优于不持仓基准;若样本外结果、成本敏感性或相邻参数同时失败,则不进入下一阶段。
这不是一条推荐策略,只展示如何让问题可被否定。
点时数据字典
对每个字段记录:含义、单位、频率、时区、来源、可获得时间、修订方式、缺失处理和许可。财务指标要分开报告期与披露日;指数和标的池要保留历史成分;退市和停牌不能从样本中静默删除。
冻结规则和搜索预算
在看结果前写下参数范围、会运行多少个候选、选择规则和唯一样本外窗口。如果测试过 200 组参数却只展示最好的一组,单个显著性指标会严重低估选择偏差。Lo 与 MacKinlay 的NBER 数据窥探研究用分析和模拟说明,使用数据本身构造检验会造成显著偏差;Bailey 等人的回测过拟合论文则专门讨论大量搜索对样本外表现的影响。
成本、容量与市场限制
至少写明佣金、税费、买卖价差、滑点、换手、涨跌停、停牌、最小申报单位、流动性和容量。成本不是最后从收益曲线里减一个常数;换手越高、成交越困难,执行价与可成交量越可能改变结果。
一个最小、可复核但不代表市场效果的实验
为了检查研究流程,可以先使用人工构造的十个价格点。合成数据没有投资含义,优点是任何人都能手算,并能发现代码是否使用了未来值。
日期序号: 1 2 3 4 5 6 7 8 9 10
收盘价格: 100 101 102 100 99 103 104 102 105 106规则预先固定为:从第 3 个价格点起,只用当天及前两天收盘价计算 3 日均值;当天收盘价高于均值,则持有下一段收盘到收盘收益,否则空仓。单边换仓成本为 0.1%,最后强制平仓。研究目标不是赚钱,而是验证:
- 代码只访问
t及之前的数据; - 信号从下一段收益开始生效;
- 每次进出都计成本;
- 修改任一价格后,结果可以重算;
- 不因结果难看而更换窗口或规则。
该例的可运行实现放在交易策略回测指南。按页面给出的 Python 标准库代码运行,仓位序列为:
[0, 0, 1, 0, 0, 1, 1, 0, 1]未计成本的累计收益为 -0.0198798(-1.98798%);每次仓位变化按单边 0.1% 计费,并在样本末尾强制平仓后,净收益为 -0.02574676(-2.574676%)。按页面给出的代码运行时应得到相同输出;若本地结果不同,应先检查代码版本、运行环境、成本设定和样本末尾的平仓处理。
这里保留负结果,是为了核对信号时序和成本记账,而不是寻找好看的收益。价格是人工构造的,成交设定也是教学简化;这组数字不包含真实证券、不能代表市场表现,也不能用于评价任何策略的未来收益。先用合成数据通过实现检查,再换成获准的点时市场数据。
样本怎样划分才不自欺
时间序列不能随意随机打散。先按时间留出样本外区间;样本内用于形成规则,验证段用于有限选择,最终样本外只运行一次。若根据样本外结果继续调参,就必须承认它已被污染,并重新取得真正未见数据。
还应做三类对照:
- **简单基准:**空仓、持有或更简单规则;
- **相邻参数:**窗口从 20 改到 19 或 21 是否立即翻转;
- **压力条件:**成本提高、数据缺失、成交延迟和极端时期。
结论应限定在版本、样本和假设内,不写“策略有效”,而写“在数据版本 X、期间 Y、成本 Z 下观察到某结果;以下检查未通过”。
AI 量化可以帮什么,最容易错在哪里
AI 可以把自然语言拆成字段、生成代码草稿、补测试用例、解释日志和整理失败,但人必须验证每一层。
| AI 辅助环节 | 必查项 | 典型失败 |
|---|---|---|
| 写假设 | 反例、停止条件、经济含义 | 给一个无法证伪的市场故事 |
| 生成数据处理 | 字段、单位、披露时点、缺失 | 用最终修订数据覆盖历史 |
| 生成代码 | 数组索引、信号时点、异常、随机种子 | t+1 数据进入 t 的信号 |
| 选择模型 | 搜索次数、样本外、简单基准 | 反复调参只报告最佳结果 |
| 总结结果 | 原始表、失败、置信区间、限制 | 把相关性写成因果 |
| 形成动作 | 权限、账户、风控与合规 | 把研究信号变成未经授权订单 |
NIST 生成式 AI 风险管理框架建议在全生命周期治理、测量和管理生成式 AI 风险;在量化研究里,应把提示词、模型版本、原始输出、人工修改和测试结果一起保存,而不是只保存最后可运行的代码。
从研究走向实盘还需要什么
上交所程序化交易实施细则列出报告信息,包括账户资金、交易策略、指令执行方式、最高申报速率、单日最高申报笔数以及交易软件名称和版本;还要求相关机构建立合规风控与异常监控。深交所实施细则发布通知说明其规则自 2025-07-07 起施行。
个人或机构应根据自身身份、市场和交易方式向券商及专业人员确认适用要求。本文不能替代合规判断,也不覆盖期货、基金、跨境等全部制度。
Bastix 能放在哪一步
Bastix 可用于整理假设、策略骨架、数据清单、工具调用和持续研究任务。自然语言策略结构化与部分市场数据链路仍为 Beta;相关数据的生产覆盖、许可、延迟与修订机制需要继续核验。平台没有现成统一回测引擎,内置能力也不连接券商或提交真实订单。1
因此可在 Bastix 中组织研究,但历史计算需由用户在受限代码工具中自行实现并独立复核;不要把工作台当成已上线的回测或程序化交易平台。
下一步先填写一页研究协议:假设、数据字典、搜索预算、成本、样本边界和停止条件。AI 生成代码前,先阅读AI 生成交易策略质量评测;准备运行历史检验时,使用交易策略回测协议。
事实脚注
Footnotes
-
Bastix《公开产品事实登记》0.1.0(取证日期 2026-08-14):自然语言策略结构化为 beta;A 股、ETF、指数和部分股指期货链路有 beta 边界;回测引擎、券商连接与真实下单为 unsupported;TAP 无人值守任务只做研究、观察和整理。 ↩