程序员量化交易实战 15:策略晋升必须有门禁
原创 · 约 8 分钟阅读 · 阅读 --
Last updated on

程序员量化交易实战 15:策略晋升必须有门禁

作者: Alex Xiang


程序员量化交易实战 15:策略晋升必须有门禁

古董级程序员,大厂出来后一直在创业公司,现在仍活跃在一线做 AI 相关的开发。这个专栏会把一个 A 股量化平台从 0 到 1 拆开写:数据、策略、回测、模拟盘、提醒和生产化,尽量用真实代码和真实运行结果说话。更完整的更新也会同步到微信公众号「字与码」。

第 14 篇已经能保存策略实验记录。现在要回答一个更关键的问题:哪些候选策略可以进入下一阶段?

第 15 篇实现策略晋升门禁。它不是判断策略能不能赚钱,而是判断这个候选是否具备进入纸面模拟盘观察的最低证据。

程序员量化交易实战第十五篇封面

为什么要有门禁

没有门禁,策略研究会变成“谁的收益曲线更好看,谁就上线观察”。

这很危险。候选策略至少要回答:

  • 总收益是否达到最低要求?
  • 最大回撤是否没有太深?
  • 交易次数是否不是 0?
  • 是否清过基准策略?

策略晋升门禁面板

晋升规则

第 15 章新增 app/promotion_gate.py

@dataclass(frozen=True)
class PromotionRule:
    min_total_return: float = 0.02
    max_drawdown_floor: float = -0.2
    min_trade_count: int = 1
    require_baseline_passed: bool = True

这些阈值不是最终生产标准,只是第一版最低门槛。真实上线前还需要样本外、长历史、多市场状态和人工复核。

决策对象

门禁输出 PromotionDecision

@dataclass(frozen=True)
class PromotionDecision:
    accepted: bool
    status: str
    reasons: tuple[str, ...]
    evidence: dict[str, Any]

reasons 很重要。被拒绝不是一句“不行”,而是明确告诉你为什么不行:收益太低、回撤太深、交易太少、没有清过基准。

收集所有拒绝原因

判断函数不会遇到第一个问题就返回,而是收集全部原因:

if total_return < rule.min_total_return:
    reasons.append("total_return_below_minimum")
if max_drawdown < rule.max_drawdown_floor:
    reasons.append("max_drawdown_too_deep")
if trade_count < rule.min_trade_count:
    reasons.append("trade_count_too_low")
if rule.require_baseline_passed and not baseline_passed:
    reasons.append("baseline_not_cleared")

这样后续前端或报告可以一次性告诉研究者该修哪里。

本章更新与代码仓库

本章更新内容:

  • 新增 app/promotion_gate.py
  • 实现策略晋升规则、晋升决策、payload 输出和批量候选摘要。
  • 新增 tests/test_promotion_gate.py,覆盖通过、拒绝、关闭基准要求和原因统计。
  • 完成第 11-15 篇阶段 review。

代码仓库:

https://github.com/ax2/zi-quant-platform

本章代码:

git clone https://github.com/ax2/zi-quant-platform.git
cd zi-quant-platform
git checkout chapter-15
uv sync --extra dev
uv run pytest tests/test_promotion_gate.py

第 15 章全量测试通过:187 passed,仍只有既有 FastAPI deprecation warning。

第 11-15 篇阶段 review

第三组五篇完成了“组合回测到策略准入”的闭环。

第 11 篇把单标的回测扩展到多标的组合回测,增加等权资金分配、权益聚合和交易摘要。

第 12 篇补齐回测指标,让策略比较不再只看最终收益。

第 13 篇实现参数网格搜索,生成可排序的策略候选。

第 14 篇把候选和基准比较保存成实验记录,避免研究结果只停留在终端输出。

第 15 篇增加策略晋升门禁,只有满足最低收益、回撤、交易次数和基准比较的候选,才允许进入纸面模拟盘观察。

这一组文章没有引入大模型,也没有直接推进模拟盘执行。原因很简单:策略候选如果没有严肃的回测指标和晋升规则,后面接再多自动化都只是放大噪声。

本篇小结

策略晋升不是“收益更高就过”。

一个候选必须有实验记录、有基准比较、有最低收益、有可接受回撤、有足够交易次数。第 15 篇把这些要求写成了可测试代码。下一组文章会进入纸面模拟盘,把通过门禁的候选放进可观察的组合状态里。