源文件:research/quant_digests/2026-04-11_2312_samevenue-option-lowerbound-perphedge-alpha.md
European option ask 若低于其最基础的 intrinsic lower bound,可买入被低估的 call/put,并用同标的 perp 做反向对冲,赚取到期保底价值或价差回补;对应两条壳分别是 long call + short perp 与 long put + long perp。这次看的是 GitHub 仓库 senyka0 / binance-options-arbitrage。仓库表面上像个“发现期权套利并发 Telegram 提醒”的小脚本,但它真正值得 desk intake 的,不是提醒器外壳,而是它把一条非常基础、但可直接交易化的 options raw alpha 写成了最小执行闭环:
call ask < S - K 或 put ask < K - S 这类 lower-bound breach;max_hold = 7d)并要求最小边际(min_pct = 1)。比起很多需要三腿、四腿、跨 venue 转仓的 crypto options 想法,这条线更朴素:先只抓“单个 option 相对 underlying/perp 已经便宜到低于内在价值下界”的事件。
European lower bound 变成了同所、可扫描、可下单的 event-driven raw alpha。strike < underlying 且 underlying - (strike + call_ask) > 0,则视为 call 被低估,执行 buy call + sell perp;strike > underlying 且 (strike - put_ask) - underlying > 0,则视为 put 被低估,执行 buy put + buy perp。把 payoff 写开就知道它不是“猜方向”,而是 relative-value / no-arb floor trade:
若在入场时满足 S0 - K - C > 0,做:
到期时组合 payoff 为:
ST >= K:(ST - K) + (S0 - ST) = S0 - KST < K:0 + (S0 - ST) > S0 - K所以 gross payoff 下界就是 S0 - K,只要入场成本 C 小于 S0 - K,就有正的静态边际。
若在入场时满足 K - P - S0 > 0,做:
到期时组合 payoff 为:
ST <= K:(K - ST) + (ST - S0) = K - S0ST > K:0 + (ST - S0) > K - S0gross payoff 下界就是 K - S0。只要 put ask 便宜到低于这个 floor,就不是“看跌赌方向”,而是被动捡 static mispricing。
这条线和当前 desk 很相关,原因是它虽然来自期权,但本质上是:
option ask < intrinsic floor 的可执行相对价值错价;1m/3m/5m 的角色是扫描和进场,不是硬把慢变量伪装成逐 bar 预测;它和我们 4 月 11 日前面做过的 same-expiry synthetic future × listed future parity gap 不是一回事。那条线本质是 call/put 组合出来的 synthetic future 去对比 listed future;这条线更原始,甚至不用先拼 synthetic,只看单腿 option 相对标的下界是否直接失真。
option ask 低于 intrinsic lower boundcall underpriced: long call + short perpput underpriced: long put + long perpg_call = (perp_bid - K - call_ask) / perp_midg_put = (K - put_ask - perp_ask) / perp_midg_call 或 g_put 超过成本缓冲时入场optionArb.py 的核心逻辑非常直白:
min_pct,就直接执行两腿。这类 repo 的价值不在“代码高级”,而在它提醒我们: > 有些最值得收进素材池的 alpha,不需要先做复杂表面拟合,而是先把最基础的 no-arb floor 做成 scanner。
仓库里用的是:
https://www.binance.com/bapi/eoptions/v1/public/eoptions/exchange/tGroup?...https://www.binance.com/bapi/eoptions/v1/public/eoptions/market/depth?...我本轮复核时,这组接口已返回:
code: 10000message: "Please upgrade to the latest version"data: None也就是说,这条 alpha 不是失效了,而是 repo 的数据接法过期了。 对 desk 真正有用的动作,不是把它丢掉,而是把 scanner 迁到 Binance 官方 eapi:
eapi/v1/exchangeInfoeapi/v1/tickereapi/v1/deptheapi/v1/index我用 Binance 官方 eapi 做了一个最小 live probe,范围限定为:
BTCUSDT / ETHUSDT / BNBUSDT7d 内到期的 optionBTCUSDT:有 ask 的候选 47 个,0 个真正 breach;最接近的是 BTC-260412-72500-C,gap 仍为 -0.212%。ETHUSDT:有 ask 的候选 20 个,0 个真正 breach;最接近的是 ETH-260412-2300-P,gap 为 -0.404%。BNBUSDT:有 ask 的候选 38 个,0 个真正 breach;最接近的是 BNB-260412-605-C,gap 为 -0.250%。对应 order book 顶层报价也做了复核:
BTC-260412-72500-C:best ask 730, best bid 550ETH-260412-2300-P:best ask 25.0, best bid 8.0BNB-260412-605-C:best ask 5.4, best bid 4.320~40 bps 量级,说明它更像:别把它理解成“拿周频期权去做慢策略”。它更合理的姿势是:
1m 扫描,必要时更快;1m/3m 内完成两腿成交;1m/3m/5m 持续盯 gap 是否回补;max_hold <= 7d;先不要接私有下单,先做 public-only replay / live paper scan:
1m 拉一次:eapi/v1/exchangeInfoeapi/v1/tickereapi/v1/deptheapi/v1/indexfapi/v1/ticker/bookTicker(若要更 execution-aware 地用 perp bid/ask)< 7dK < SK > Sscore_call = (perp_bid - K - call_ask)/perp_midscore_put = (K - put_ask - perp_ask)/perp_mid> 0.30%> 0.50%> 0.80%< 0.10% 就平signals/dayfillable rate(两腿顶层盘口够不够)gross edge bps at entrynet edge after fee + fundingtime-to-close / time-to-expiryfunding buffer:perp 若需持有数天,funding 不能忽略basis buffer:perp 不是现货,近到期时仍会有 basis 漂移depth symmetry:期权腿和 perp 腿都要过最小成交量quote staleness:option 深度更新慢时,先不做same-expiry crowding veto:临近结算最后几小时单独分层,不要和普通时段混为一谈> 这份仓库最值得 desk 抄的,不是“Binance options 报警器”,而是把 European option lower bound 变成了同所、近到期、可被 1m/3m/5m scanner 驱动的 event-driven raw alpha;本轮 live probe 首判目前 0 违例,但最近的几档只差 20~40bps,说明它值得做成长期常驻监控,而不是一次性读完就算。
https://github.com/senyka0/binance-options-arbitragehttps://github.com/senyka0/binance-options-arbitrageREADME.md, optionArb.py10.2307/3003143https://doi.org/10.2307/3003143