# D48 技术复盘与优化验证（2026-07-17）

## 1. 决策

第一处被现场证据确认的可优化分歧位于 **order → fill**，不是技术信号：
`VolatilityBreakout` 的有效 POWER 空头信号通过风险闸门并提交订单后，使用
`entry_pricing.price_side = same` 将限价挂在被动一侧，10 分钟未成交后整笔交易从数据库删除。

本轮所有信号、风险仓位和提前退出候选均未通过训练/留出门槛，不应部署。唯一保留的下一步候选是
`price_side = other` 的可成交限价，但 K 线回测不模拟 bid/ask 和排队成交，因此当前只能证明它不改变
理论信号与订单，不能宣称已经改善收益。研究覆盖文件为
`freqtrade/research-entry-other.overlay.json`；候选已于 2026-07-17 03:49:02 UTC 从 bot1
一致性数据库快照启动独立 dry-run，累计至少 20 次订单机会后再裁决。

## 2. 运行态与证据真值

| 字段 | 已核实值 |
|---|---|
| 生产容器 | `freqtrade` |
| 策略 / 版本 | `VolatilityBreakout` / `5.3-d48-shortgate` |
| 模式 / 周期 | dry-run / 5m |
| 交易库 | `/data/freqtrade/user_data/tradesv3-v5.sqlite` |
| 日志 | `/data/freqtrade/user_data/logs/freqtrade.log` |
| 复盘窗口 | 2026-07-15 08:55 至 2026-07-17 02:35 UTC |
| 同期回测 | 12 pairs，1000 USDT 空钱包，fee 0.00035，protections 开启 |
| 当前持仓差异 | 现场包含 2026-07-08 开始的 BNB 空单及 2026-07-16 的 ETH 空单；同期回测为空钱包启动 |
| K 线/指标 | Binance futures 5m；Donchian48、ATR14/50、ADX14、EMA200、BTC 1d 200DMA |
| 缺失证据 | 历史逐笔 bid/ask、盘口队列位置、下单瞬间 spread、完整盘口快照 |

因此，标准回测可验证信号、风险闸门、理论订单和 K 线内退出；不能验证被动限价的真实成交率。

## 3. 分层事件表

图层颜色遵循 skill 固定图例：参考信号、实际信号、风险闸门、订单、成交、止损、退出分别独立，
不把 hindsight 标注混入因果信号。

| 时间 UTC | 价格 | 层 | 方向 | 规则 / 事件 | 证据 |
|---|---:|---|---|---|---|
| 2026-07-15 12:30 | 0.0786 | actual signal | short | D48 实际信号通过 | 策略重算 + 运行日志 |
| 2026-07-15 12:30 | 0.0786 | risk gate | short | 同方向/相关组闸门放行 | 运行日志 |
| 2026-07-15 12:30 | 0.0786 | order | short | same-side top-1 limit 已提交 | 运行日志 |
| 2026-07-15 12:30–12:40 | — | fill | short | 未成交 | 运行日志 |
| 2026-07-15 12:40 | 0.07848 current | exit/cancel | short | 超时取消，Trade(id=12) 删除 | 运行日志 |
| 同期 K 线回测 | 0.07829 | simulated fill | short | 回测假定成交 | Freqtrade 导出 |
| 2026-07-15 15:45 | 0.07729 | simulated exit | short | trailing stop，+4.304 USDT | Freqtrade 导出 |

## 4. 决策链差异

| Case | Reference | Strategy | Gate | Order | Fill | Exit | First divergence |
|---|---|---|---|---|---|---|---|
| POWER 12:30 | causal reference match | actual short | pass | submitted 0.0786 | no fill | canceled | fill |
| POWER 同期回测 | same | actual short | pass | simulated | assumed 0.07829 | +2.42% | execution model |
| POWER 15:10 | current-only | actual short | pass | submitted | filled | -5.08% | reference vs strategy |
| ZEC | aligned | actual short | pass | submitted | filled | +3.93% | none |

## 5. 候选诊断与淘汰记录

训练段固定为 2026-01-01 至 2026-05-01；留出段固定为 2026-05-01 至 2026-07-10。
共同设置为 12 pairs、1000 USDT、fee 0.00035、protections 开启、空钱包启动。

| 单因素候选 | 训练结果 | 留出结果 | 决策 |
|---|---|---|---|
| late-expansion filter | 同期订单 3→3，逐笔不变 | 不进入 | 淘汰：未作用于实际订单 |
| ADX 25→30 | +19.26%→+3.00%，DD 13.01%→18.51% | 不进入 | 淘汰 |
| ADX 25→35 | +19.26%→-8.78%，DD 13.01%→24.36% | 不进入 | 淘汰 |
| quality-gated third slot | 335→365 trades；+19.26%→+27.63%；PF 1.137→1.173；DD 13.01%→14.65% | 175→198；+13.47%→+7.40%；PF 1.220→1.105；DD 8.75%→10.45% | 留出失败，淘汰 |
| strongest breakout priority | +19.26%→+8.52%；PF 1.137→1.063；DD 13.01%→15.72% | 不进入 | 淘汰 |
| shallow breakout priority | +19.26%→+9.47%；PF 1.137→1.071；DD 13.01%→14.95% | 不进入 | 淘汰 |
| +2.5% arm break-even | 335→431；+19.26%→-20.48%；PF 1.137→0.792；DD 13.01%→23.67% | 不进入 | 淘汰 |
| trailing activation 5%→4% | 335→397；+19.26%→+10.25%；PF 1.137→1.076；DD 13.01%→12.60% | 不进入 | 收益代价过大，淘汰 |

第三仓候选的订单差集解释了训练/留出反转：训练期约 79 笔第三仓合计 +148.30 USDT；
留出期 49 笔仅 +3.45 USDT。留出期 variant-only 路径为 -11.58 USDT，而被挤掉的
baseline-only 路径原本为 +44.75 USDT。错误机制是用单笔形态质量放宽组合风险，导致后续持仓路径重排。

退出候选同样存在组合反馈：更早退出会释放仓位并触发更多后续信号，因此不能只用单笔 MFE 假设
“少亏一笔”；必须按完整组合路径回测。

## 6. 保留候选：执行侧可成交限价

```text
Hypothesis ID: D48-EXEC-OTHER-001
Observed repeated pattern: 服务器现存 dry-run 日志共有 18 次入场限价超时后整单删除；D48 当前链路包含两次 BNB 和一次 POWER。
First divergent stage: order -> fill
Causal formula and eligible timestamp: 有效信号和风险闸门通过后，entry limit 使用 opposing best quote；只使用下单时可见 order book top-1。
Baseline: entry_pricing.price_side = same
Single changed factor: entry_pricing.price_side = other
Expected benefit: 降低趋势突破后价格单向离开导致的未成交率。
Likely winner suppression / failure mode: 支付 spread、快速盘口下仍可能滑点或未成交；taker 概率上升。
Training test: K 线回测不具备 bid/ask，不能训练成交率。
Held-out validation: 不适用；需盘口或并行 dry-run。
Fees, protections, and exposure controls: 全部保持基线；额外记录 spread/slippage 与超时取消。
Pass gate: 至少 20 个同源有效下单机会；fill rate 提升，净滑点成本低于避免的机会损失，且信号/闸门订单一致。
Reject gate: fill rate无改善，或 spread+slippage 明显吞噬净收益，或订单路径发生非预期漂移。
Forward-test requirement if offline gates pass: 与 bot1 同一时刻、同一数据库快照启动独立 dry-run，不替换生产基线。
```

同期订单回测（2026-07-15 08:55 至 2026-07-17 02:35 UTC）结果：

| 配置 | Trades | PnL | Drawdown | 逐笔 JSON |
|---|---:|---:|---:|---|
| `price_side=same` | 3 | +22.020 USDT / +2.20% | 0 | 基线 |
| `price_side=other` | 3 | +22.020 USDT / +2.20% | 0 | 与基线 byte-normalized 后完全一致 |

这项“相同”是正确的模型边界验证：它证明单一配置改动没有污染技术策略，但不证明成交改善。

## 7. 限制与下一证据

- **已确认执行缺陷：** 被动限价导致通过闸门的 POWER 信号未成交，标准数据库在超时后删除整笔 Trade。
- **已确认回测缺口：** 同期回测把现场未成交单建模为成交盈利，不能用于比较 `same`/`other` 的 fill rate。
- **已否决假设：** late expansion、ADX 抬高、第三仓、突破排序、保本和提前移动止损。
- **保留因果假设：** 可成交限价可能修复 order→fill 缺口，但收益与成本尚无前向证据。
- **晋级前所需证据：** 已获用户授权并于 2026-07-17 03:49:02 UTC 从 bot1 一致性数据库快照启动独立 bot3；并行记录至少 20 次订单机会后再裁决。
