源文件:research/quant_digests/2026-03-20_1253_atr-compression-roc-ignition-short-rearm-gate.md
这轮主看一个近 5 年新仓库:ricketter1984/my-futures-trading-bot(2025)。它的 headline 是“consolidation breakout + momentum ignition”,但这次我没有照搬它整套 futures 模板,而是只拎出一个更适合我们当前收口线的旁支:
src/strategy.py::is_consolidating():用 ATR14 低于其近 20 根平均 ATR 的 0.7 倍 定义压缩;src/strategy.py::get_momentum_ignition_signal():用 ROC(5) 超过 ±0.5% 定义点火;之所以这题比继续泛化别的方向更值得做,是因为它直接回答当前第一优先收口线:V3 final-verdict / breakout-short follow-up 到底要不要再加一个便宜、price-only 的 re-arm 条件;同时也能顺手回答它能不能 shared 到 Fib retest_hold / EMA-PSAR raw alpha。
ATR compression → ROC ignition 不适合升成三条线共享的 anti-chop / re-arm gate;它在 15m 上更像 breakout-short 的 short-side 可选 re-arm 层,而不是 Fib / EMA long 的 shared 放行键。BTC/ETH/SOL perp 近 120 天 15m 上,对比 raw 20-bar breakout、strict ATR compression + ROC ignition、以及一个更宽松的 mild 版本,检查 4-bar signed return 与 re-entry 率。关键数据点:
short raw 合并均值约 +5.7 bps、re-entry 约 72.2%;short strict comp+ign 只有 16 笔,但均值约 +38.7 bps、re-entry 降到 56.7%。说明它更像稀疏高门槛的 short re-arm,不像 shared 默认键。long raw 合并均值约 -0.8 bps、re-entry 约 77.3%;long strict comp+ign 仅 16 笔,但均值掉到 -58.7 bps,re-entry 反而升到 84.1%。也就是:压缩后点火 ≠ long continuation 更干净。short mild comp+ign 有 217 笔,均值约 +9.9 bps、re-entry 约 68.9%;但 long mild comp+ign 205 笔,均值约 -14.3 bps,仍显著差于 raw long。对 desk 来说,这意味着如果要先测,先测 short-side soft re-arm,不要镜像到 long 侧。这是这轮最直接受益的线。当前收口线缺的不是再堆一个“反震荡”名词,而是breakdown 之后哪些短暂压缩再点火,值得允许 second-leg / follow-up。这轮证据支持:
ATR compression → ROC ignition 可以先作为 breakout-short 的 short-side re-arm 候选;这轮基本是在提醒:别镜像。 同样的压缩→点火逻辑,放到 long retest / hold 侧不但没更稳,反而更容易回到破位线附近。也就是说,它不该被写成 Fib retest_hold 的默认确认骨架。
对 EMA / PSAR,这轮更像角色排雷:
这轮真正有价值的不是“ATR 或 ROC 本身”,而是 repo 把它们写成了先压缩、后点火的状态机:
current_atr < avg_atr * 0.7,完全 price-only;ROC(5) 过阈值,而不是等一堆复杂共振;翻成人话:这不是新的主信号,更像是一个短促再加速标签。问题不在它能不能算出来,而在它只能用于哪一边、哪一层。
raw long:收盘价突破前 20 根最高价;raw short:收盘价跌破前 20 根最低价;strict comp:前一根 ATR14 / mean(ATR14,20) < 0.7;strict ignition:ROC(5) > +0.5%(long)或 < -0.5%(short);mild comp:前 4 根里最小 ATR ratio < 0.8;mild ignition:ROC(5) > +0.4%(long)或 < -0.4%(short)。ATR compression → ROC ignition 不是三条线 shared gate;它只可能在 breakout-short 里,以 short-side re-arm / follow-up filter 的形式成立。
breakout-short follow-up,不要接到 Fib / EMA long;strict: ATR ratio<0.7 + ROC5<-0.5%mild: min ATR ratio(last4)<0.8 + ROC5<-0.4%signal 当根及之前数据 + next-bar open + no-overlappost-cost expectancy(只看 short follow-up 子样本)trade retention(相对 baseline 还剩多少交易)false-follow / re-entry rate(是否明显减少 back-inside)first break 与 follow-up / re-arm,避免把“初始破位”和“二次发动”混在一起。ricketter1984N/Ahttps://github.com/ricketter1984/my-futures-trading-bothttps://github.com/ricketter1984/my-futures-trading-bothttps://github.com/ricketter1984/my-futures-trading-bot/blob/main/src/strategy.pyhttps://github.com/ricketter1984/my-futures-trading-bot/blob/main/src/indicators.pyN/Ahttps://developers.binance.com/docs/derivatives/usds-margined-futures/market-data/rest-api/Kline-Candlestick-Datahttps://fapi.binance.com/fapi/v1/klines?symbol=BTCUSDT&interval=15m&limit=1500--- 快检文件:
reports/artifacts/literature/atr_roc_ignition_pool_summary_2026-03-20.csvreports/artifacts/literature/atr_roc_ignition_asset_summary_2026-03-20.csvreports/artifacts/literature/atr_roc_ignition_event_examples_2026-03-20.csvreports/artifacts/literature/atr_roc_ignition_metadata_2026-03-20.json