源文件:research/quant_digests/2026-04-16_0055_trdivergence-volprice-fade-alpha.md
README.md + docs/STRATEGY_GUIDE.md + config/strategies/true_range_divergence.yaml + src/strategies/true_range_divergence/signal.py + GitHub API metadata)+ Binance USDⓈ-M 15m public-data portability probefade the momentum,赌后续几根 bar 的局部均值回归。这轮主看的是 GitHub 新仓:
GitHub API 元数据(抓取时间 2026-04-16 UTC)显示:
先把一句话说清楚:
> 这篇东西的 base alpha 不是“波动大就反转”,也不是“ATR filter”。它的 alpha 本体是:当 TR 扩张和价格动量不同步时,原方向推进质量在变差,接下来更容易出现短持有窗的反向回摆。
所以它不是纯 filter,也不是 overlay;它本体就是一条:
> single-asset / short-horizon / mean-reversion raw alpha。
我们这几轮已经累积了不少:
但单资产、纯价量内生、又不是老套 RSI/BB 的短周期 mean reversion 母板其实还可以继续补。
这条 TR-价格背离线有几个优点:
volatility expansion != price momentum direction。5m / 15m。所以即便当前 repo 版本还不算完整 production shell,这条母 alpha 本身仍值得进入素材池。
docs/STRATEGY_GUIDE.md 对这条策略的摘要非常直接:
TR = max(H-L, |H-C_prev|, |L-C_prev|)而 src/strategies/true_range_divergence/signal.py 里,实际实现可以翻成人话:
TR / MA(TR, n) 得到 TR 相对强度;Close / MA(Close, n) 得到 价格动量;就视为 divergence;
signal_direction = - momentum_direction这点非常关键:
> base alpha 不是“TR 领先价格”,而是“TR 与价格一旦背离,优先假设当前价格推进在衰竭,因此做反向”。
这就是一个很清楚的 raw alpha,不需要额外借助外部因子才能成立。
如果只看仓库目录,wavelet_energy、vpin、spectral_* 这些也都挺吸引人。
但对当前 desk 来说,TR divergence 反而更像一个低门槛、快验证、快否决的 alpha intake:
这比很多“需要 order book / signed flow / wavelet 依赖”的东西更适合作为当下 intake。
这里要明确写一句:
> 它是 raw alpha 候选,不是现成 complete shell。
原因有三个:
true_range_divergence.yaml 把参数放在 strategy.parameters 下面; 但 signal.py 的 load_config() 却是直接 config.get('tr_lookback', 20) 这种平铺读取。
结果就是:
源码里:
divergence_thresholdmin_tr_strengthmax_tr_strength虽然在 config/初始化里出现了,但在实际 generate() 路径里几乎没起作用。
这意味着当前 repo 版本更像:
虽然 STRATEGY_GUIDE.md 提到 Kelly / VaR / correlation management 等组合级风险框架, 但这条具体策略的源码本身只提供了:
还没有把:
完整收进这个单策略模块里。
所以我把它判成:
我按 repo 的核心逻辑,写了一个最小 public-data probe:
15m2025-10-01 ~ 2026-04-16BTCUSDT / ETHUSDT / SOLUSDT / BNBUSDT2 bpssignal.py 的核心 divergence + entry delay + 8-bar hold + decayartifact 已落在:
/root/clawd/jerry/momentum/reports/artifacts/quant_digests/2026-04-16_true_range_divergence_probe.py/root/clawd/jerry/momentum/reports/artifacts/quant_digests/2026-04-16_true_range_divergence_probe_summary.json> 这条 alpha 在 15m taker 直译版上,gross 只有个别币还勉强为正;一扣 2bps 单边成本后,四个 major 全部转负。
关键数字:
-0.25%,net -3.68%,entries 349-3.47%,net -8.71%,entries 533+2.04%,net -3.13%,gross Sharpe 0.91+0.35%,net -3.58%另外一个很关键的点:
3% ~ 5%这说明它不是那种“全天高频乱打”的东西,而更像一个:
这个 first verdict 更像在告诉我们:
也就是说,它不是“没价值”,而是:
> 更像 raw alpha 母板,而不是可直接上线的 baseline。
这条线最容易被误读成:
但更准确的 desk 版本应该是:
> 只在 TR 爆出来了、但价格推进质量已经掉了 的时刻,做短持有的 exhaustion fade。
换成更工程化的拆法:
vol expansion × momentum divergence fade它既可以独立做,也可以给别的书做 veto:
但如果把它写成 overlay,就会错过它本来就是 alpha 本体这件事。这里还是要明确:
> 它首先是 raw alpha;其次才可以兼做 veto/filter。
这轮最重要的是把“能不能活”测得更 desk 一点。我建议按下面顺序推进:
第一步不是疯狂优化,而是先修正:
divergence_threshold 真正接入min_tr_strength / max_tr_strength 真正接入然后直接在 5m / 15m 跑三类阈值面:
2 / 4 / 8 / 12 barsrepo 现在的 volatility filter 是:
25% ~ 75% 分位波动区间交易这和“volatility spike exhaustion”这个叙事其实有点拧巴。
更值得测的是:
也就是把它从“普通状态下的背离”改成:
从 first verdict 看,edge 很薄,所以第二轮实验要重点看:
maker-first 是否能救活1~4 bar hold 是否比 8 bar hold 更合适只做 BTC / SOL 是否优于 ETH / BNB亚洲/欧美活跃时段 是否有明显差异版本 A:BTC/SOL only,Binance perp,5m/15m 双周期
BTCUSDT, SOLUSDTTR_strength >= pct90 且 momentum_direction != TR_direction2 / 4 / 8 bar time-stop0 / 1 / 2 / 4 bps 单边如果这版仍不过线,就说明:
> true_range_divergence 值得保留,不是因为 repo 现在已经像 production,而是因为它给了一个很清楚、完全可独立复现、又不依赖外部数据的 single-asset mean-reversion 母 alpha:TR 扩张 × 价格动量背离 → 短持有衰竭 fade。但 public 15m first verdict 也已经很诚实:直译 taker 版不过线,下一步要么把它收紧成 extreme-event pocket,要么把它转成 breakout/momentum 书的 execution veto。