源文件:research/quant_digests/2026-03-20_1429_retest-tolerance-stop-decoupling-gate.md
这轮主看两个 breakout/retest 仓库里一个很容易被忽略、但非常影响 15m 结果可解释性的旁支:retest 的几何容差(是否算“回踩到位”)到底要不要和 stop-loss 百分比绑死。
komilovmDev/Breakout-and-Retest-Strategy:main.py 里把 retest_tolerance 直接设成 sl_pct,等于把“入场几何容差”和“风险预算”强耦合。wwakeford/breakout-retest-backtest:ENTRY_TOLERANCE(入场区)与 POSITION_SIZE/stop(风险)是分开的,结构上更容易做角色化测试。这件事和三条收口线都直接相关:
tolerance = stop% 会导致“调风险预算时,入场样本和表观 alpha 一起漂移”;容差与 stop 应该解耦,分别调参。BTC/ETH/SOL 的 rank76 baseline 事件上做 8-bar 代理快检,比较“耦合模式 vs 固定容差模式”的样本与收益漂移。口径:
reports/artifacts/scout_rank76_intraday_clock_polarity_15m/*fib_retest_long / ema_psar_long / breakout_short baseline,共 198 笔entry_idx 后 8 bars signed return(long 正向,short 取反)dist = |signal_price - level| / level,其中 level 分别取 fib_618 / ema15 / breakout_anchor结果(全样本):
tol = stop)非常敏感:stop=0.3%:n=58,win8=36.2%,mean8=-12.2 bpsstop=0.5%:n=110,win8=42.7%,mean8=-4.0 bpsstop=0.8%:n=149,win8=49.7%,mean8=+15.7 bpsema_psar_long:耦合下 mean8 从 -1.1 bps (tol=0.3%) 到 +31.3 bps (tol=0.8%)fib_retest_long:从 -15.7 bps 到 +15.8 bpsbreakout_short:三个容差下都偏弱(约 -10~-18 bps),提示 short 侧更不该靠“放宽容差”硬救。> 含义:如果不解耦,你很难判断“是信号改好了”,还是“只是把容差放宽导致样本变了”。
先冻结 follow-up geometry tolerance(例如按 ATR 或固定 bp),再单独调 short 风险预算;否则 short 侧会被参数耦合放大噪声。
是否触位 用几何容差定义;仓位/止损 用风险预算定义,二者拆开后,Fib 的确认层才可审计。
若继续探索 raw alpha,先强制“容差参数独立于 stop 参数”,避免把风险旋钮当信号旋钮。
做一个 2×3 小矩阵(15m 信号,5m/15m 可各跑一轮):
tol ∈ {0.3%, 0.5%, 0.8%} 或 tol = k * ATR(k=0.15/0.25/0.35)stop ∈ {0.3%, 0.5%, 0.8%}(或 ATR stop)分别在三条线统计:
post_cost_expectancy (6/10/15 bps per side)trade_count_retentionfalse_follow_ratio@4/8 barsparameter_interaction_penalty(容差×止损交互项)判决规则:
komilovmDev 仓库规模较小(工程启发价值 > 统计证据价值);komilovmDevretest_tolerance = sl_pct,并在 is_retest(..., tolerance_percent) 中直接用于几何区间。wwakefordENTRY_TOLERANCE 与 POSITION_SIZE/stop 逻辑分离,可独立调 admission 与 risk。reports/artifacts/quant_digests/retest_tolerance_stop_coupling_proxy_2026-03-20.csvreports/artifacts/quant_digests/retest_tolerance_stop_coupling_summary_2026-03-20.csv