阅读时间 6 分钟

A Risk Log Template for Crypto Bots

A reusable risk log template for crypto bot research: record facts, evidence, blockers, decisions, and rollback plans before a candidate reaches dry-run.
Dark engineering-style risk log template with evidence rows, gate status, and blocked decision marker

大多数交易者只记录回测结果。很少人记录"为什么一个候选不能推进"。

这导致一个典型后果:六个月后遇到同样的问题,你重新做了一遍已经做过的研究,重犯了一遍已经犯过的错。

在 ProBitForge,我们把被阻断的候选当成一等研究产出。不是因为失败本身有价值,而是因为一个干净的风险日志能回答三个问题:

  • 当时看到了什么?
  • 为什么决定停下?
  • 需要什么新证据才能重新考虑?

这篇文章是 research only,not financial advice;backtests are not live performance;not an instruction to trade。风险日志本身不构成交易许可。

如果你刚来 ProBitForge,可以先看我们的系统定位:<https://www.probitforge.com/what-probitforge-is-building/>

1) 为什么需要风险日志

> 绿色的回测曲线告诉你什么看起来不错。风险日志告诉你系统拒绝相信什么。

一个交易系统只有记住"为什么停下、阻断、回退或拒绝一个候选",才能真正进化。

我们在之前的 Why Backtests Lie 里说过:回测可以隐藏过拟合、费用缺失、样本偏差和 regime luck。在 How We Judge a Strategy Candidate Before Dry Run 里,我们展示了七项硬门禁。

风险日志回答的是这两者之间的实际问题:

当一个候选失败、暂停或行为异常时,到底应该写下什么,才能让团队后来能从中学习?

2) 风险日志不是什么

先把边界划清楚:

  • 不是交易信号。
  • 不是买卖建议。
  • 不是盈利能力的公开证明。
  • 不是用自信语言掩盖薄弱证据的地方。
  • 不是回测、OOS、dry-run 或人工门禁的替代品。

风险日志是研究记录,不是执行指令

3) 可复用的风险日志模板

以下是一个可复用的 Markdown 模板。读者可以直接复制使用。所有字段都是通用的,不依赖任何特定策略或平台。

```markdown

Risk Log: <候选或事件名称>

1. 状态

  • 日期:
  • 范围:
  • 环境:research / backtest / paper-shadow / dry-run
  • 当前决策:observe / blocked / research-pass / ready-for-review
  • dry_run_allowed: false
  • live_trading_allowed: false

2. 触发原因

  • 是什么让我们调查这个?
  • 是亏损、回撤、异常、漏单、异常滑点、过拟合嫌疑,还是新候选?

3. 事实

  • 证据来源:
  • 数据窗口:
  • 市场/交易对:
  • 时间框架:
  • Baseline 结果:
  • Candidate 结果:
  • 交易次数:
  • 手续费/滑点/资金费率假设:

4. 证据

  • 回测结果:
  • OOS / walk-forward 结果:
  • 近期 30/60/90 天结果:
  • 直接归因(direct attribution):
  • 代理归因(proxy attribution):
  • 回撤变化:
  • 成本敏感性:
  • 市场状态备注(regime notes):

5. 解读

  • 什么看起来成立?
  • 什么仍然不确定?
  • 什么可能过拟合?
  • 什么可能只是特定市场状态下的表现?
  • 什么证据和主线叙事矛盾?

6. 决策

  • 决策:
  • 阻断项:
  • 需要的下一项证据:
  • 停止条件:
  • 回滚计划:

7. 跟进

  • 下一个测试:
  • 负责人:
  • 时间窗口:
  • 产物链接:
  • 相似历史案例:

8. 风险声明

Research only. Not financial advice. Backtests are not live performance. This is not an instruction to trade. ```

4) 如何填写模板而不欺骗自己

模板是死的。填写模板的方式决定它是工具还是装饰。以下是实用规则:

  • 用精确的状态词blockedresearch-passobserveready-for-review——不要用"还行""差不多"这种模糊词。
  • 在调下一个参数之前先记录阻断项——否则你会调到一个"看起来好看但没有改善实质"的候选。
  • 直接归因和代理归因分开记录——proxy 不能替代真实成交。
  • 即使结果正向也要记录样本量——6 笔交易的正向结果不比 60 笔交易的微弱正向更有说服力。
  • 加入近期窗口检查——不要只依赖历史 OOS,最近的 30/60/90 天可能已经翻转了结论。
  • 包含成本和滑点假设——不考虑手续费的回测是草稿假设,不是证据。
  • "不做决策"也是一个有效结果——证据不足时停下,比硬推一个不确定的候选更负责任。

5) 防止坏决策的字段示例

以下是一些真实场景中的关键字段如何发挥作用:

低样本量:一个候选的直接归因是正向的,但匹配交易只有 6 笔——低于最低要求 20 笔。风险日志里 trade_count=6 这一行就是阻断理由。

近期窗口翻转:一个历史上看起来不错的候选,近期 30/60/90 天对齐全是负向。风险日志要求你写"近期结果",而不是只写"历史 OOS 通过"。

代理不匹配:直接归因正向,代理归因负向——这意味着候选在真实成交上表现好,但在假设场景下表现差。风险日志把两者分列,避免用一个数字掩盖矛盾。

阈值脆弱性:0.008 和 0.010 在小样本上表现相同,0.012 直接翻转负向。风险日志的"解读"部分要求你写"什么可能过拟合"。

权限边界dry_run_allowed=falselive_trading_allowed=false 是硬写入字段。除非门禁通过且用户显式授权,否则永远是 false。

6) 最小风险日志评分卡

| 字段 | 为什么重要 | 危险信号 | | --- | --- | --- | | 交易次数 | 样本量检查 | 小样本被当作证明 | | 直接归因 | 真实成交对齐 | 代理归因冒充事实 | | OOS 窗口 | 防过拟合检查 | 只有一个调参窗口有效 | | 近期窗口 | 当前市场状态检查 | 旧证据覆盖新衰减 | | 成本假设 | 执行真实性 | 忽略手续费/滑点 | | 决策状态 | 防止意外晋级 | 只写"看起来不错",没有门禁 | | 回滚计划 | 可逆性 | 没有停止条件 |

7) 运营规则

> 如果一个候选连干净的风险日志都产不出,它就不配产出交易决策。

风险日志不是法律合规文件,不是学术论文,不是交易信号。它是一个工程团队的基本功:把"为什么停下"写清楚,比把"为什么继续"写得漂亮更重要。

再次强调:这篇文章是 research only,not financial advice;backtests are not live performance;not an instruction to trade。风险日志本身不构成部署策略的许可,被阻断的候选可以作为有用的研究产出,但不等于交易指令。