源文件:research/quant_digests/2026-04-15_0958_asym-bb-deepquote-unwind-shell.md
README.md + config.py + strategy.py + portfolio.py + monitor.py)+ Binance USDⓈ-M 15m/1h 近 180d public-data portability probeUNWIND 模式只做去库存。先回答 base alpha:这篇东西的 base alpha 不是“布林带碰上下轨就反转”那么简单,也不是“邮件监控器”。它真正的交易母板是:先把挂单放到一个非常深的局部偏离区,赌极端扩张后先回摆一段;如果回摆没来、库存越积越多,就用更快时间框架进入去库存模式。
这份 repo 是 2026-04-12 刚创建、2026-04-14 仍在更新的新仓库,定位很明确:
NORMAL (1h) + UNWIND (15m) 的双时间框架 Bollinger grid;它跟我们前面 intake 过的 martin-binance 同属单资产均值回归 / inventory shell 家族,但又不是完全一回事:
martin-binance 更像 bounded-bounce reverse-grid × trend veto;所以它值得写,不是因为“又一个 grid”,而是因为它把库存管理和去库存状态机写得很完整,而且代码里还暴露出一个很关键的 desk 级事实:README 对策略几何形状的描述,和实际代码不是一回事。
strategy.py / portfolio.py 里给出的公式非常清楚:
bw = bb_upper - bb_lowerbw_pct = bw / midinner = F * bw_pctouter = max(bw_pct/2, inner*2)F = 1, num_layers_calc = 20, L = 4于是 flat inventory 时:
inner = bw_pctouter = 2 * bw_pctstep = bw_pct / 191.0000 * bw_pct1.0526 * bw_pct1.1053 * bw_pct1.1579 * bw_pct而这份 repo 的 NORMAL BB 设置是:
mid + 2.3σmid - 1.7σbw = 4.0σ把两者合在一起翻成人话:
> 它的首层买单/卖单并不在 -1.7σ / +2.3σ 那两条带上,而是在大约 ±4σ 附近;后 3 层还更深,约到 ±4.63σ。
也就是说,README 里那张“上轨卖、下轨买”的直观图,对 desk 来说是不够准确的。真实代码挂的是比带边更远的 deep quotes。
2.3 / 1.7 的非对称,在 NORMAL 初始挂单里几乎没起到 README 宣称的作用repo 自己在 strategy.py 注释里说: > lower band 更靠近中轨,所以 buy orders 会在更小跌幅下触发。
但从代码公式看,flat inventory 的 NORMAL 挂单只吃 bw = upper - lower,而 2.3 + 1.7 = 4.0,和对称 2.0 + 2.0 = 4.0 的总宽度一样。
因此至少在 flat inventory 的 NORMAL 初始网格 下:
2.3/1.7 不会把买单往现价方向拉近;UNWIND 模式下的目标位,以及 README 的叙事呈现。这个发现很重要,因为它直接改变我们对这条 alpha 的理解:
> 它不是“偏多友好的非对称布林带抄底壳”,而更接近一个总宽度固定、深外侧报价、库存累积后再切换去库存的状态机策略。
$1000 notional;num_layers_calc = 20,但只启用最靠内的前 4 层;max_pos_mult = 15,即总可承受头寸上限约为 15 × unit_size。这不是“频繁小剥头皮”,而是:
README 自己也承认两年回测里平均每对约 0.4 fills/day,说明它故意把报价挂得很远,不是高频小价差回补。
每当一个非 close order 成交:
counter_mult = 2.0 放置反向 TP;spread = max(counter_mult * offset_now, 4 * maker_fee);2bps;try_offset() 做内部轧差。翻成人话:
> 它不是“等价格完全回到起点再说”,而是把每次成交都转成一个新的库存片段,再给这片库存挂一个能覆盖成本、并尽量吃到局部回摆的反向 TP。
repo 的硬风控核心不在 admission gate,而在状态机:
|net_units| >= E = 6 → 进入 UNWIND|net_units| < X = 3 → 退出 UNWINDUNWIND 模式下:
15m BB(120, ±2.0σ);mid / band edge 方向卸。这和 martin-binance 的逻辑差异非常明显:
martin-binance 更强调趋势 veto,尽量别开错第一枪;我补了一个非常克制的 public-data probe:
BTCUSDT / ETHUSDT / SOLUSDT15m / 1h K 线180d15m bar 触到 repo 公式生成的 L0 deep quote(不是 README 图示带边)8h 内连续触发算同一 episode8h / 24h 内,是否至少回到对应 1h 带边;以及 24h 内是否回到 mid先强调:
BTCUSDT
7 个 episode;24h 内回到对应下轨仅 43%;回到中轨 0%4 个 episode;24h 内回到上轨 25%;回到中轨 25%ETHUSDT
9 个 episode;24h 内回到下轨 33%;回到中轨 11%8 个 episode;24h 内回到上轨 12.5%;回到中轨 12.5%SOLUSDT
10 个 episode;24h 内回到下轨 30%;回到中轨 0%6 个 episode;24h 内回到上轨 83%;回到中轨 33%这组结果至少说明三件事:
近 180d 三个主流币总共也没多少次 episode,和 README 里“fill 不频繁”是同方向的。
至少在这 180 天里,BTC/ETH/SOL 的 long 侧 episode 后,24h 内连“先回到 1h 下轨”都不算稳,更别说回中轨。
尤其 SOL 这段样本里,short 侧“打到深卖单后再回到上轨”的概率明显高于 long 侧。也就是说,这条壳的可交易性可能比 README 暗示的“对称双边都可做”更偏择币 + 择边。
我的 desk 级翻译是:
> 这条策略最近不是“深跌就弹、深涨也回”那种双边通吃结构;更像一个极深报价库存壳,要么靠更完整的逐层 TP / UNWIND 才能活,要么就必须做成择边版,而不能直接按 README 的双边直觉照抄。
martin-binance 的关系:同家族,但这条更适合拆组件,不适合当当前主力母板两者都属于:
martin-binance 更像:
crypto-grid-trading-sim 更像:
就当前证据强度和 recent portability 来看:
> martin-binance 仍然是更强的“主 digest / 主母板”;这份新 repo 更适合作为“库存去化状态机 + 代码审计反例”补进研究池。
原因很简单:
martin-binance 至少把“什么时候别开新逆势库存”这个 admission 问题写清楚了;NORMAL → UNWIND 双模式状态机这是它最有价值的部分。 很多均值回归壳死,不是因为第一枪一定错,而是因为:
这份 repo 把那个开关写得非常硬:库存过深就换挡。这个思想很值得移植到:
try_offset() 的多空内部轧差思路它的虚拟持仓不是简单净仓位,而是显式维护:
long_size / long_avgshort_size / short_avg这对我们做多腿库存管理、或将来做 spot/perp 两腿 inventory accounting,都很有参考价值。
orders_fingerprint() / changed-pair digest 这类研究监控基础设施虽然这不属于 base alpha,但对内部研究很实用:
这可能是本次最值得记住的 lesson:
> README 说“在布林带上下轨挂单”,但代码实际挂的是更深的 ±4σ 外侧区;README 说“lower band 更近所以更容易买到”,但 flat NORMAL 初始网格并不直接支持这个叙事。
这类 repo 很适合做 source audit,因为它提醒我们:开源策略最危险的不是参数差一点,而是你以为自己复刻了 A,实际上代码干的是 B。
值,但位置要摆对。
我的判断是:
> 它值得作为 raw alpha 壳 + inventory overlay 母板 进入研究池,但不该被当作当前优先级最高的单资产 MR 主线候选。
因为它当前暴露出 3 个明显问题:
martin-binance 那样把 trend-veto 前置到 admission 层。我更愿意把它放进下面这个篮子:
raw alpha shell / inventory-unwind overlay最值得测的是下面这个变体:
±4σ 起跳;band edge / 2.0σ / 2.5σ 分层;UNWIND 状态机;trend veto,不要等到库存积深了才认输。如果第 3 组明显比第 1 组好,就说明这份 repo 最有价值的不是它现在的挂单几何,而是去库存状态机这个组件。
这条线尤其要补:
从 recent BTC/ETH/SOL 最小快检看,至少某些样本窗口里,short 侧比 long 侧更像样。因此很值得做:
short-only 版本long/short asymmetric admissionVenue: GitHub DOI: N/A Readable URL: <https://github.com/lindkkk/crypto-grid-trading-sim> Repo URL: <https://github.com/lindkkk/crypto-grid-trading-sim>
README.md for crypto-grid-trading-sim.Readable URL: <https://raw.githubusercontent.com/lindkkk/crypto-grid-trading-sim/main/README.md>
config.py / strategy.py / portfolio.py / monitor.py for crypto-grid-trading-sim.Readable URLs:
BTCUSDT/ETHUSDT/SOLUSDT, 15m/1h, recent 180d) portability probe, reproduced locally on 2026-04-15 UTC.Venue: Binance Futures public market data DOI: N/A Readable URL: <https://fapi.binance.com/fapi/v1/klines>