源文件:research/quant_digests/2026-04-17_1936_deribit-termskew-riskreversal-alpha.md
README.md + websocket_client.py + draw_graph_skew.py + get_spd_pdf_log.py + create_tables.sql)+ Deribit 公共 options live snapshot sanity checkshort rich skew leg / long cheap skew leg,赌 term-skew spread 回归。这轮优先目标不是再补一个解释型 filter,而是补一条 能独立复现、能直接进实盘组件池的 raw alpha。
我最后选的是 GitHub 仓库 chanhyeong28 / SkewnessTrade_Deribit(2025,repo 最近提交日期 2025-09-25)。这不是论文型材料,而是一个已经把实时监控、四腿组合、保证金预检、Telegram 告警都写出来的 Deribit 期权策略原型。
先把 base alpha 说清楚:
> 它赌的不是 BTC 方向,而是 BTC 期权 surface 上“不同到期日的偏度相对位置”会回到常态。
这和我们最近几篇 digest 不同:
它补的是当前池子里相对少的那类: options relative-value / skew term-structure raw alpha。
README 说法偏泛:
真正落到代码里,交易本体比 README 更清楚:
latest_rr_spread > 0(IV 维度正 edge)latest_rr_spread_price > 0(价格维度正 edge)simulate_portfolio 保证金检查通过才真正下单。
这就已经不是“偏度故事”,而是一条很明确的 四腿 options stat-arb / relative-value alpha。
repo 的 base alpha 可以压缩成一句:
> 如果某个时刻近月 put-skew 相对远月贵太多,或远月 skew 相对近月便宜太多,而四腿对敲后依然留有正的 net edge,那么这块 term-skew spread 往往比纯方向更容易向中枢回归。
换句话说:
relative-value / stat-arb / options raw alpha。update_subscribe() 里,repo 不是乱选 strike,而是:
S * exp(0.1) 的 OTM call;所以它在尽量保持:
这使得你做的是 偏度期限差,不是混入一堆 moneyness 漂移噪声。
risk_manager() 里写得很直白。
若选择 SHORT,组合信号是:
bid_iv_call_far - ask_iv_put_farbid_iv_put_near - ask_iv_call_nearRR_spread同时再用 bid/ask price 算一遍 RR_spread_price。
也就是说它不是只看 IV,不管实际成交;而是要求:
这点很关键。很多 options relative-value 研究死在“模型上有 edge,但落到盘口就没 edge”。这个 repo 至少意识到了这件事。
repo 还有三层实盘味很重的结构:
simulate_portfolio() 先测 projected margin;pre_margin_check_long/short == True 才允许开仓;get_account_summary(),若保证金逼近 maintenance margin,就触发平仓。这让它不只是一个“信号脚本”,而是已经带有:
的完整雏形。
代码真正用于触发交易的条件其实很朴素:
RR_spread > 0RR_spread_price > 0源码虽然还算了 mean ± 2*std,但当前版本并没有把这组 band 真正接进 entry 逻辑。
所以 repo 更像是在做:
而不是严格意义的:
对我们 desk 来说,正确读法是: > repo 给的是执行母板,不是最终参数答案。
当前实现里,真正显式可见的硬风控主要是保证金层面;但:
-C)。因此它适合做 raw alpha intake,不适合直接接生产。
我用 Deribit 公共 API 做了一个最小 live probe,口径尽量贴 repo:
24APR2629MAY26 与 26JUN26BTC-PERPETUAL mark 近似 spot,按 repo 规则挑 OTM call / put85000C 与 70000P抓到的 live IV(约 2026-04-17 19:33~19:35 UTC):
#### 24APR26
85000C:bid IV ≈ 41.92,ask IV ≈ 43.3470000P:bid IV ≈ 49.95,ask IV ≈ 51.12-ask_call + bid_put)≈ +6.61 vol pts#### 29MAY26
85000C:bid IV ≈ 39.98,ask IV ≈ 40.4370000P:bid IV ≈ 43.73,ask IV ≈ 44.23#### 26JUN26
85000C:bid IV ≈ 40.05,ask IV ≈ 40.6870000P:bid IV ≈ 43.01,ask IV ≈ 43.71这说明什么?
> 同样的 OTM pair 下,近月 put-skew 显著比远月更陡。
所以“近月 vs 远月 skew 有可交易 term spread”这件事,在 live quote 上是能看见的,不是 README 空谈。
SHORT 方向一度是正 edge若拿 24APR26 对 26JUN26 按 repo 的 SHORT 公式组合:
RR_spread ≈ +2.95 vol ptsRR_spread_price ≈ +0.0021 BTC拿 24APR26 对 29MAY26:
RR_spread ≈ +2.36 vol ptsRR_spread_price ≈ +0.0001 BTC也就是说,在至少这组 live snapshot 里, repo 设想的那种:
并不是不存在。
对 desk 来说,这已经足够把它从“机制故事”升级成“值得进研究池的 raw alpha 候选”。
1m / 3m / 5m / 15m 的关系应该怎么理解别把它误会成“期权到期很慢,所以只能做低频”。
更准确地说:
1m / 3m / 5m15m 可做 reversion / decay 检查也就是:
1m:最适合记 RR spread 的瞬时异常与回补速度;3m/5m:更接近 desk 默认快频;15m:判断是不是只是一跳报价噪声,而不是真正 spread pocket。这条线完全符合 short-cycle desk 的使用方式: 信号是 options relative-value,执行和风控时钟则可以是 1m~15m。
先只做最朴素版本:
near expiry / far expiry;RR_spread 与 RR_spread_price;RR_spread > 0RR_spread_price > 0RR_spread_z >= 2.0 或高于 rolling p95任一满足就平:
RR_spread 回到 0 ~ 0.5σ;5m / 15m / 30m / 60m);< 2d),避免 gamma 爆炸。主要风险:
主要成本:
这轮我的结论很明确:
> 这不是 filter,也不是解释层;它是可以独立复现的 options relative-value raw alpha。
而且它比 repo README 听起来更“可交易”:
但也要老实:
所以它当前最合适的定位是: 高优先级 raw alpha intake,值得做最小实验,但还不是可直接生产化的终版。
先不要碰复杂 Greeks 回放,第一轮只做这 4 步:
1m 抓一次 Deribit 两个 expiration 的目标 call/put top-of-book;RR_spread / RR_spread_price;1m / 3m / 5m / 15m / 30m 的 spread 变化;RR_spread > 0 & RR_spread_price > 0z-score / percentile admissionvega-balance + min quote size + max gamma 风控壳先看哪一版在净成本后还活着。
chanhyeong28 / SkewnessTrade_Deribitwebsocket_client.pydraw_graph_skew.pyget_spd_pdf_log.pycreate_tables.sqlpublic/get_instrumentspublic/ticker如果只用一句话总结这轮 intake:
> 别把它当“偏度可视化脚本”;对 short-cycle desk 更值得先测的是:近月 vs 远月的 RR term-skew spread 在多腿净成交后是否还能稳定回归,这是一条能独立复现的 options relative-value raw alpha。