源文件:research/quant_digests/2026-04-19_2312_scalp-confluence-timeboxed-bounce-shell.md
README.md + backend/agents/scalp_agent.py + backend/tests/test_scalp_agent.py + backend/tests/test_signal_improvements.py)+ Binance USDⓈ-M 1m/5m portability probe(BTC/ETH/SOL,公开 K 线)RSI7 + Bollinger 下轨/中轨 + VWAP 偏离 + StochRSI + OBV slope + MFI7 的 confluence long,靠 +30bp TP / -25bp SL / 15m time stop / ATR trail 快速出清先回答 base alpha:这次主题非常明确,是一条可独立复现的单资产短周期均值回归 raw alpha,不是 filter。
主材料是 GitHub 仓库 gl4500/coinbase-ai-trader。这个 repo 表面上是个“多 agent AI Trader”,但真正值得 desk intake 的不是它的 CNN-LSTM 外壳,而是源码里单独拎出来的 ScalpAgent:
score >= 5 才开仓;ADX(10) < 20 才允许 mean reversion,ADX(10) > 25 才切到 momentum 解释;+0.30% TP / -0.25% SL / 15m hard time exit / 1.5x ATR(7) trailing stop;20% 资金,最多 2 个并发仓位。对我们 desk 真正重要的点在于: > 它把“超卖反弹”从一句概念,写成了可直接落地的 entry / exit / sizing / cost 壳。
backend/agents/scalp_agent.py 里把进场写成了一个满分 10 分的打分器,核心规则如下:
RSI(7) < 25:+2;RSI(7) < 35:+1Bollinger lower band:+2;跌破 BB mid:+1VWAP:+2;轻微低于 VWAP:+1StochRSI < 20:+1OBV slope > 0.15:+1MFI(7) < 25:+1repo 原文是 score >= 5 可以触发,但在 ADX < 20 的 ranging regime 下,源码实际上把门槛再抬高了 1 分:
min_score = 6min_score = 5这很关键,因为它不是“看到超卖就抄底”,而是要求至少两三条超卖/承接证据同时出现。
这份代码最像成熟策略壳的一点,不是指标多,而是它承认:
ADX < 20:市场偏 range,可以做 mean reversion;ADX > 25:市场偏 trend,不该拿同一套 oversold bounce 逻辑去逆势硬接。也就是说,它把 regime gate 明确写进了 alpha 本体,而不是回测完以后再补解释。
这条线真正让我觉得值得单独 intake 的,不只是 confluence entry,而是它的时间止损很硬:
+30bp-25bp1.5 x ATR(7)这比很多“等回到中轨 / 对侧轨 / 均线”类脚本更适合 short-cycle desk,因为它明确表达的是: > 如果 bounce 没在很短时间内兑现,那就把仓位当作错误,别恋战。
今天其实已经写过多条 mean-reversion 线,但这篇仍然值得留下,原因不是“又一个超卖”,而是:
entry / exit / sizing / cooldown / monitoring。1m / 3m / 5m 的实盘组件化。30bp,所以成本敏感度极高;entry placement / partial fill / re-entry cooldown / execution veto,而不是把 alpha 和 execution 混在一起。gl4500/coinbase-ai-traderfapi/v1/klines1m / 5mBTCUSDT / ETHUSDT / SOLUSDT1m / 5mADX(10) < 20+30bp TP / -25bp SL / 15m time exit / 1.5x ATR(7) trail4bp/side,round-trip 8bp 的保守口径扣费说明:因为 Binance 公共 K 线拿不到 repo 里 live WS price、Coinbase 真实成交结构、以及完全一致的 VWAP/OBV 内部实现,我这里做的是可复核的近似版 portability probe,不是宣称与 repo 回测逐点一致。
我把 summary 落到了:
reports/artifacts/quant_digests/2026-04-19_scalpagent_confluence_probe_summary.csvreports/artifacts/quant_digests/2026-04-19_scalpagent_confluence_probe_events.csv其中最值得记住的是这几组数:
BTCUSDT 1m:22 笔,净胜率约 22.7%,平均单笔净收益约 -13.1bpETHUSDT 1m:35 笔,净胜率约 22.9%,平均单笔净收益约 -10.8bpSOLUSDT 1m:43 笔,净胜率约 41.9%,平均单笔净收益约 -5.9bpBTCUSDT 5m:19 笔,净胜率约 47.4%,平均单笔净收益约 -3.1bpETHUSDT 5m:25 笔,平均单笔净收益约 -15.0bpSOLUSDT 5m:21 笔,平均单笔净收益约 -8.0bpBTCUSDT 1m:TIME exit 占比约 77.3%ETHUSDT 1m:约 71.4%BTCUSDT 5m:约 73.7%这说明一个很直白的问题: > repo 的 alpha intuition 没错,但在 Binance 公共数据 + 保守摩擦口径下,bounce 经常“会反一点”,却不够快、不够深,来不及在 15 分钟内给出足够覆盖成本的利润。
如果一个策略的目标 TP 只有 30bp,那它天然就怕三件事:
TIME exit 平掉。而这三件事,刚好都是 short-cycle desk 最擅长继续拆的地方。所以这次 digest 的价值,不是“宣布它已能直接上线”,而是:
因此这条线最合理的定位不是:
而是:
1m 触发后 3m/5m child executionscore 7+ 或更深 VWAP 偏离的 subset因为这里回答的是: > 到底开哪种仓,靠什么直接赚钱?
答案很清楚:
所以它不是“给别的策略打分”的 filter,而是自己就能独立开仓、独立平仓、独立计费的一条 raw alpha。
源码注释里写的是 maker 0.006%/side,round-trip 0.012%;但如果你拿更保守的 Binance 短周期口径去测,edge 会被显著压缩。
它控制了拖泥带水,但也让大量“慢一点但方向对”的反弹来不及兑现。
从这次最小 probe 看,SOL 明显比 BTC/ETH 更接近可挽救;说明它可能更适合高 beta、局部 overshoot 更深的币,而不是最成熟的大币永远一把尺子通吃。
但真正不同之处在于:这条线给了一个非常明确的timeboxed shell,而不是“跌多了会弹”这种泛泛说法。
score >= 7close <= BB lower 且 vwap_dist <= -25bpSOL + 1~2 个高 beta symbolsignal-close taker、next-bar passive bid、2~3 slice child execution> 70%,那就该认真测:N 根 bar 的 realized spread / ATR / volume 达标时做top1 / top22026-04-122026-04-19 22:53:52 UTCreports/artifacts/quant_digests/2026-04-19_scalpagent_confluence_probe_summary.csvreports/artifacts/quant_digests/2026-04-19_scalpagent_confluence_probe_events.csv