源文件:research/quant_digests/2026-04-23_1710_prepump-anomaly-composite-alpha.md
README.md + strategies/signal_scanner.py + hybrid_trader.py)pre-pump / pre-squeeze anomaly score这次看的是 NikoSAN02/crypto-trading-bot 里还没被前面 digest 单独拆过的一条分支:strategies/signal_scanner.py,并补看了 hybrid_trader.py 里它是怎么被接成可交易壳的。
这个分支和 repo 里已经写过的 funding carry 不一样。它不是赚 funding,也不是低频情绪择时;它想做的是一条横截面 directional anomaly alpha:
volume anomaly:量放出来了,但价格还没怎么动,怀疑有人在提前装货;funding extremes:持仓已经开始拥挤,可能会挤出 squeeze;OI divergence:OI 上升但价格没怎么走,像是在“蓄力”;top-trader long/short ratio:大户仓位方向开始转;Fear & Greed:只是一层全市场低频修正,不该被误认成主 alpha。所以这轮的 base alpha 能说清楚:主信号不是 Fear & Greed,而是横截面里的“未爆发先拥挤”异常分数。
0.250.250.200.150.15composite_score >= 65 才允许进场(hybrid_trader.py)>80 视为 STRONG_BUY(signal_scanner.py)daily volume >= $5M24h price change 不能已经过热(abs(change) <= 20%)2 个非默认子信号同时有效1h 刷新的 cross-sectional anomaly parent signal + 15m/5m child execution。这对当前 desk 仍然有用,因为很多短周期 raw alpha 本来就该分成「慢一点的 admission」和「快一点的执行」。当前 bot7 需要继续补 raw alpha 素材池,尤其是 cross-sectional / relative value / stat-arb / pairs / squeeze 这些不是单纯 breakout/retest 的方向。
这份代码正好补的是另一个家族:横截面异常领先信号。它不是在问“这根 K 线是不是突破”,而是在问: > 哪些币现在看起来像还没走出来,但仓位、量能、拥挤度已经开始偏了?
这类思路和 desk 现有素材库互补:
long-only 或 long-short 的 raw alpha;volume_usd >= 5Mabs(24h move) <= 20%,避免已经追到末端2 个真实信号,不接受“全是默认 50 分”Fear & Greed 极端贪婪,可降杠杆而不是硬开大3x 杠杆margin <= $25,notional 约 <= $755%,止盈 10%2h4h 后若价格仍弱(如 < -2%)可提前走24h 后若没赚到 1% 走 time exitscan_volume() 用 Binance 24hr ticker 做一个很朴素但很 desk-friendly 的 proxy:
USDT 对、日成交额 >= $1Mabs(price_change_pct) < 2 且 volume_usd > $50M翻成人话就是:不是追已经飞掉的币,而是找“量先明显起来、但价格还没 fully expand”的币。
scan_open_interest() 拉 Binance futures openInterestHist 的 1h × 24 序列。 源码最有用的不是复杂建模,而是这个 admission:
oi_change_pct > 5%abs(price_change_pct) < 2%70 + oi_change_pct 上限 100)这其实就是一句话:OI 在堆,但价格还没走,说明杠杆仓位在挤进来 yet move 未完成。
scan_funding() 用 Binance premiumIndex:
这里最关键的不是 funding 本身,而是:funding 在这条线里不是 carry alpha,而是 crowding proxy。
scan_long_short_ratio() 用 Binance topLongShortPositionRatio 的 1h × 24:
current_ratio < 0.8 且 ratio_change > 0.1 → 认为 smart money 正在转多,给高分current_ratio > 2.0 且 ratio_change < -0.1 → 认为 smart money 开始撤退,给低分这比只看总持仓净多空更像一个方向性 confirmation。
因为这里的主问题不是“市场风险大不大”,而是在同一时间横截面里,哪些币更可能先动起来。这已经是 alpha ranking 问题了。
更具体地说,它做的是:
0~100 的 anomaly score;5m/15m 选择执行位置。这和纯 overlay 的差别很大。overlay 只会说“今天全体减仓”;而这条线会说“今天只做 A/B/C,不做 D/E/F”。
因为 repo 里的几个关键数据源天生偏慢:
1h24h 聚合所以更诚实的 desk 落地方式应该是:
15m 或 5m 上找 pullback / micro-break / spread acceptable 的点位进也就是说,这条线最适合当cross-sectional admission alpha,而不是 pretending 自己是逐笔 order-flow engine。
先别一上来复刻五路全开。第一版最小实验直接测这个三因子骨架:
Volume dislocation scoreOI build-up scoreFunding squeeze score先把 Fear & Greed 去掉,避免低频日值污染;top-trader L/S 可当第二阶段增强项。
每小时刷新一次 universe(如 BTC, ETH, SOL, XRP, DOGE, ADA, LINK, AVAX, LTC, BCH, PEPE, WIF, APT, SUI):
vol_score: 最近 24h 成交额分位数高,但 24h 涨跌幅绝对值低oi_score: 最近 24h OI 变化高,但对应 price change 小fund_score: funding 更偏负的一侧给更高做多分,偏正的一侧给更高做空分然后:
composite >= 70composite <= 3015m pullback 或 5m micro-breakout 后入场2h / 4h / 8h1h / 2h / 4h 收益差score bucket 单调性funding 或 OI 后,edge 掉多少Fear & Greed 明显是低频 overlay,不该占到 0.15 这么高的固定权重;搬到 desk 上我会先把它降成 regime gate / sizing adjuster。24h volume + 24h change 这种 proxy 太粗,真实复刻时更该换成 1h rolling volume / intraday RVOL / VPIN-like imbalance。OI 与 top-trader L/S 都来自交易所特定口径,跨 venue 可比性有限,所以第一版最好限定单 venue universe。abs(24h move) <= 20% 和 >=2 个真实信号 是必要的,不是可有可无。最值得先做的不是把 repo 原封不动搬进来,而是:
15m 上测 score top bucket 的未来 1/2/4 bar continuation;next-bar open vs 5m micro-breakout admission;bottom bucket 反向分数,看能不能做成 long-short market-neutral basket;top-trader L/S 和 Fear & Greed 是该升格进 alpha,还是只留在 sizing / regime。https://github.com/NikoSAN02/crypto-trading-bothttps://github.com/NikoSAN02/crypto-trading-bot/blob/main/README.mdhttps://raw.githubusercontent.com/NikoSAN02/crypto-trading-bot/main/strategies/signal_scanner.pyhttps://raw.githubusercontent.com/NikoSAN02/crypto-trading-bot/main/hybrid_trader.pyhttps://raw.githubusercontent.com/NikoSAN02/crypto-trading-bot/main/strategies/sentiment_engine.pyhttps://api.binance.com/api/v3/ticker/24hrhttps://fapi.binance.com/fapi/v1/premiumIndexhttps://fapi.binance.com/futures/data/openInterestHisthttps://fapi.binance.com/futures/data/topLongShortPositionRatiohttps://api.alternative.me/fng/?limit=7