# same_side_limit 增量复盘（截至 2026-08-03 09:09 UTC）

## 决策

`same_side_limit = 2` 本身目前没有表现为缺陷，不应改成 3。首个分歧确实在风险闸门，
但被拦候选的总体后续路径为负，而实际获准交易仍保持正收益。高置信度建议：生产继续
维持同向最多 2 仓。

存在一个置信度较低、值得单独验证的问题：两个槽位按信号到达顺序被占用，没有显式
比较新候选与当前持仓的相对质量。事后看，一部分候选确实优于较弱占槽仓；但绝大多数
这样的“较弱仓”在决策时其实已经盈利，无法用未来表现识别。正确处理方式是先增加
shadow-only 置换观察和离线回放，不是立即强平或加仓。

## 运行时与窗口

- bot：bot1
- 策略：`VolatilityBreakoutRiskCap`
- 版本：`5.4-d48-riskcap-forward`
- 模式：dry-run；5m；Binance futures isolated；2x
- 窗口：2026-07-29 12:15 UTC 至 2026-08-03 09:09 UTC
- 数据库：`tradesv3-v5.sqlite`，只读
- 日志：`freqtrade.log*`，只读
- 行情：Binance Futures 公共 OHLCV；近期 analyzed cache 用于策略列，日志中的
  `entry_blocked` 是策略信号到达 risk gate 的真实证据
- 容器从 2026-07-23 08:50 UTC 持续 running，采集时 heartbeat 版本仍为
  `5.4-d48-riskcap-forward`

## 实际占槽结果

窗口内 7 笔实际交易，5 笔已平、2 笔仍开：

| Trade | Pair | 状态 | 结果 |
|---:|---|---|---:|
| 36 | XRP | closed | +4.42 USDT |
| 37 | ETH | closed | +4.53 USDT |
| 38 | EDGE | closed | -8.05 USDT |
| 39 | UNI | closed | +6.86 USDT |
| 40 | BNB | open | — |
| 41 | VANRY | closed | +5.95 USDT |
| 42 | BTC | open | — |

已平合计 +13.71 USDT，4 胜 1 负，PF 2.70。此前担心长期占槽的 XRP、ETH 最终都
触发 trailing 并盈利退出，说明“持仓久 = 坏槽位”不成立。VANRY 在 08-02 00:50
被拦后，XRP 退出释放槽位，约 12 分钟后再次获准入场，最终盈利 +5.95 USDT；所以
部分拦截是延迟入场，不是永久漏单。按宽松的同币后续匹配，41 个主去重簇中有 7 个
在 24h 内、9 个在 48h 内、13 个在 72h 内出现同币实际入场；这些匹配存在重复，
只用于说明机制。

## 被拦候选：去重敏感性

124 条限频日志分别压缩为：10 分钟口径 81 簇、1 小时口径 54 簇、6 小时口径 41 簇。
三种口径结论一致：

| 去重口径 | 完整 6h | 6h 中位 | 6h 为正 | 完整 24h | 24h 中位 | 24h 为正 |
|---|---:|---:|---:|---:|---:|---:|
| 10m | 71 | -0.52% | 27/71 | 64 | -1.28% | 25/64 |
| 1h | 46 | -0.43% | 21/46 | 40 | -0.48% | 19/40 |
| 6h（主口径） | 35 | -0.40% | 16/35 | 31 | -0.85% | 13/31 |

收益为 2x 保证金口径的固定时点价格路径，是 `hindsight_annotation`，没有模拟真实
挂单、费用、硬止损和 trailing，因此不能被当作 Cap3 反事实交易 PnL。即便使用这个
对放宽仓位更有利的粗口径，中位数仍为负。按 UTC 日波次聚合，完整 24h 的五个日期簇
中两天为正、三天为负，也不是单一日志重复制造出的结论。

## “置换最弱仓”迹象

主去重口径下：

- 6h：候选事后跑赢未来较弱占槽仓 22/35，中位优势 +0.65 个百分点。
- 24h：候选事后跑赢未来较弱占槽仓 21/31，中位优势 +1.72 个百分点。
- 但 24h 的 21 个“赢家候选”中，只有 4 次较弱占槽仓在决策时处于亏损；其余
  17 次需要平掉一个当时已经盈利的仓位，属于未来视角，不可直接实施。
- 若把规则严格限制为“最弱占槽仓当时利润 < 0”，只有 7 个案例：候选 6h 跑赢
  5/7、24h 跑赢 4/7，中位相对优势分别约 +1.71、+0.72 个百分点。方向性值得记录，
  但样本远不足以修改生产。

## 决策链

| Cohort | Strategy | Gate | Order | Fill | Outcome | First divergence |
|---|---|---|---|---|---|---|
| 7 个实际交易 | authentic signal | passed | submitted | filled | 5 closed / 2 open | 无执行分歧 |
| 41 个主去重候选 | `entry_blocked` 确认 authentic signal | blocked: `same_side_limit` | none | none | 事后 6h/24h 路径 | risk gate |

本复盘没有定义新的 reference signal，也没有把 fallback OHLCV 计算成生产策略指标。

## 图与视觉检查

图：`same_side_blocked_representatives_15m.png`

`visual_review`：图层、时间和事件表一致。按事后 24h 路径选出的三个最差案例
（UNI 07-29、VANRY 07-31、ADA 07-29）均在被拦后明显向上反转，说明闸门确实避免
了一组高损失空单；三个最好案例（EDGE 07-30/31、VANRY 08-02）在被拦后延续下跌，
确认存在真实机会成本。好坏案例同时存在，与全样本负中位数一致。蓝色倒三角是生产
日志确认的策略空头信号，灰色叉是 risk gate 拦截；竖虚线和收益标签均为事后观察，
不是订单或退出。

## 建议处理

1. **现在不改生产**：保持 `same_side_limit = 2`，不重开 Cap3，不加时间止损。
2. **补 shadow-only 观测**：每次拦截记录候选的 authentic 指标快照，以及两个占槽仓
   当时的未实现利润、MFE、是否已激活 trailing、持仓年龄和当前 ADX/ATR。只记录，
   不下单、不平仓。
3. **先做离线单因素回放**：比较原 Cap2 FIFO 与下面的负收益置换规则；相同窗口、
   起始敞口、手续费、protections 和执行假设。不能只比较固定 6h/24h 价格路径。
4. **离线通过后才开独立 dry-run**：对照 bot 必须从相同空仓快照启动，并放宽总
   `max_open_trades`，避免槽位路径再次破坏匹配；生产 bot 不动。

## 假设卡

```text
Hypothesis ID: NEGATIVE-R-SWAP-V1
Observed repeated pattern: 7 次新信号到达时，较弱占槽仓处于亏损；候选在 6h/24h
  分别有 5/7、4/7 事后跑赢该仓。
First divergent stage: portfolio risk gate / slot allocation。
Causal formula and eligible timestamp: 当同向 2 槽已满且 fresh 5m entry signal 到达时，
  仅当最低 current_profit_ratio < 0，平该仓并允许候选；否则沿用 block。
Baseline: Cap2 FIFO，已有仓位不被新信号置换。
Single changed factor: 增加上述负收益仓置换规则；同向总仓位仍为 2。
Expected benefit: 减少明显停滞/逆行仓占槽，同时不增加组合方向敞口。
Likely winner suppression / failure mode: XRP、ETH 已证明早期逆行后仍可能成为 trailing
  winner；规则可能高卖低买、增加费用与换手。
Training test: 当前标准训练窗，12 对，5m，fee 0.00035，cache none。
Held-out validation: 当前标准验证窗，完全相同起始敞口与 protections。
Fees, protections, and exposure controls: 计入被替换仓退出费、候选入场费，保留 RiskCap、
  StoplossGuard、相关组上限和同向 2 仓。
Pass gate: held-out 净收益与 PF 提升，DD 不恶化；增益不由单一币/单一市场波次贡献，
  且替换后的增量交易净费用后为正。
Reject gate: 任一验证窗 PF/收益下降、DD 上升，或优势仅来自未来可见的赢家选择。
Forward-test requirement if offline gates pass: 等起始敞口独立 dry-run，至少 20 个真实
  replacement opportunities；未达门槛不晋升。
```

## 局限

- 当前是 dry-run，不能验证真实排队成交和 stop-market 滑点。
- 固定 6h/24h 路径未模拟策略退出，不能直接等同交易收益。
- 不同币种在同一市场波次高度相关，41 个簇不是 41 个独立样本。
- “未来较弱占槽仓”是事后标签，只能提出实验，不能作为生产决策字段。
