策略
BTC Deribit ATM 日历价差 — IV期限结构逆价差收割(长 Vega / 正 Theta、风险有限期权,3 参数)
结局: 已放弃
BtcDeribitAtmCalendarSpreadTermStructure
BTC Deribit ATM 日历价差 — IV期限结构逆价差收割(长 Vega / 正 Theta、风险有限期权,3 参数)
假设
一种 DEFINED-RISK、在 DERIBIT BTC 上交易的 Delta 中性期权策略,交易的是隐含波动率期限结构的 SHAPE,而非其水平——其机制刻意区别于我们期权组合中已有的两种卖权利金垂直价差(BTC 短跨式、ETH 看跌信用价差),为期权组合带来 LONG Vega / 正 Theta 敞口,而不是增加更多短 Vega 敞口。加密货币的 IV 期限结构通常处于升水(远期 IV > 近期);波动率飙升或事件发生后,期限结构会转为 BACKWARDATION(近周 IV 飙升至高于较远期限 IV)。这种近端溢价会可靠地回落至升水状态。该策略买入一组 ATM CALENDAR 价差——SELL 前端周度 ATM 期权,BUY 下一月度 ATM 期权,二者行权价和类型相同——仅在期限结构出现显著逆价差时入场。最大亏损限制为已付净借记额(无法被强平),直接解决了导致裸卖波动率想法被否决的风险审查问题。它填补了该工厂最大的单一组合缺口(期权 4.7%,而配额要求 ≥15%),并在该子组合内按 Vega 符号实现AND多元化。仅有 3 个可调参数,以避免重蹈导致此前 259 个假设失败的过拟合问题。NOT 资金费率套利(L33)、NOT 动量/趋势移植(已用尽)、NOT 微观结构 tick/order book 思路(反复因无交易/标的不匹配而失败)——盈亏来源是期限结构溢价的均值回归,这是期权市场的结构性特征,而非对价格方向的预测。
修复了确切的 Layer-3 故障——“0 已评估的 K 线……没有主 K 线到达基础模板的信号路径”——其原因是结构性的,而非阈值问题。FactoryStrategy._maybe_process_primary() 会阻止主信号路径,直到 EVERY 个相同时间框架的额外腿在同一时间戳有 K 线(_sync_extra_iids)。对于持续报价的配对腿,这道屏障是合理的;对于有期限的期权合约则完全不适用,因为合约只在挂牌期间有 K 线:几乎每根永续合约 K 线至少有一条腿没有报价,因此 calculate_signal() 从未运行,也就永远无法提交订单。修复是在 on_start 中加入一行——`self._sync_extra_iids = set()`——声明期权腿为异步,并对每条腿显式处理数据陈旧问题(LEG_STALE_DAYS),而不是依赖这道屏障。on_bar 是 NOT 的子类覆盖,因此早期各层通过的内容都保持不变。第二项改动由编码任务说明中的平台备注所要求:滚动链扩展器为每份合约指定各自的入场日期(入场 = 到期日 − dte),因此两个到期日不可能共享入场时间,无法通过 `rolling_options` 表达日历价差。因此,腿被显式声明为 extra_instruments——目录中已核验的 14 对配对,构成一个工具定义;1-DAY 根 K 线、覆盖入场窗口的 BOTH 条腿,以及入场时行权价距 BTC 现货价格不超过 3%(确实是 ATM,确实有成交)。使用这些默认值重放真实目录数据后,产生了 19 次入场(38 次期权腿成交),其中 19 次往返交易里有 16 次盈利,按每份合约计算的毛收益中位数约为 +0.0095 BTC,因此运行结果同时满足 ≥1 笔交易的下限和期权策略无期权交易的门槛。不存在标的资产/冒烟测试路径:should_enter 返回 None,且从未在 BTC-PERPETUAL 上下过任何订单。仓位规模确保两条腿的合约数量相同(建仓时 Delta 和 Vega 配对),可调表面仍恰为 3 个参数,其限制与 _param_bounds 一致。给分析师的实事求是的提醒:19 个月内 20 笔交易属于小样本,且受基础设施限制——每增加一种 K 线类型,目录 glob 搜索约需 9 秒,因此仅 28 条腿就已占用 600 秒 Deribit 沙箱预算中的约 260 秒;要扩大日历价差样本,需要修复每次查询的成本,而不是改变策略。
verifying_stuck_3_timeouts
实现
Deribit BTC 期权上的限定风险 ATM 日历价差:当隐含波动率 TERM STRUCTURE 处于逆价差状态(近月 IV 高于远月 IV)时,卖出前端周度 ATM 看涨期权,并买入下一个月度 ATM 看涨期权,执行价相同;当结构恢复至趋向正价差的正常状态,或近月腿临近到期时,同时平掉两条腿。每条腿的隐含波动率均通过 Black-Scholes 根据其自身的每日收盘价反算(Deribit 的报价权利金以 BTC 计价,因此 USD 权利金 = 收盘价 × 现货价格),使用该腿自己的执行价和剩余到期时间;每根 K 线上返回的信号为 IV_near − IV_far。长 Vega / 正 Theta,最大亏损以净权利金为限——不会被强平。14 个经人工核验的 ATM 组日历价差配对(前端周度 + 下一个月度,执行价相同),覆盖 2025-01 至 2026-08,均被声明为明确的工具腿;BTC 永续合约仅用于信号/展期计时,绝不交易。
迭代历史
验证失败(层 3 — 沙盒回测):冒烟测试超过 300 秒的墙钟时间限制。这几乎总是意味着每根 bar 的工作量会随历史长度增长——例如重新扫描完整的资金费率/补充序列,或在每根 bar 上于 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预先计算已排序的时间戳数组 ONCE 并使用 bisect,或按时间戳缓存查询结果,使每根 bar 的开销为 O(log n) 而非 O(n)。
验证失败(层 3 — 沙盒回测):未产生交易 使用的 Bar 类型:BTC-PERPETUAL.DERIBIT-1-DAY-LAST-EXTERNAL,已处理 Bar 数:2400 诊断:从未评估 calculate_signal()(已评估 0 根 bar)-> 没有主 bar 到达基础模板的信号路径 -> 如果重写了 on_bar(),请调用 super().on_bar(bar);检查 bar_type 是否与该标的的数据匹配。不要通过放宽 NOT 入场阈值来处理——入场逻辑根本没有运行。 确保策略能在给定数据和参数下产生交易。
验证失败(层 4 — QA 审查)[class=hypothesis_mismatch]: - [edge_concern] 次要/提示性问题(这一项才是实际不匹配):即使按它实际采用的短跨式策略来看,沙盒也显示出 L72 风险有限的卖出权利金特征——夏普率 2.64 / win_rate 0.96 / PF 2.57 的表面表现,但 avg_trade_return_pct -78.6%(以行权价名义金额而非权利金为基准),且唯一一次亏损(-$1,111)约为平均盈利($114,偏度 -2.83)的 9x 倍。按名义金额计算收益为负,且手续费/Vega 层面不可行;约 12 个周期也不足以覆盖卖出波动率策略的尾部风险。在代码被替换为指定的日历价差之前,这些问题都无关紧要。 - WHOLE-STRATEGY MISMATCH。假设 = BTC Deribit ATM CALENDAR SPREAD(长 Vega/正 Theta:SELL 前端周度 ATM,BUY 下一月度 ATM 同行权价,仅在 IV 期限结构处于逆价差时入场)。代码 = SHORT STRANGLE(class BtcDeribitWeeklyDeltaNeutralShortStrangleVrp;配置腿 C +0.06 SELL / P -0.06 SELL,到期日为 ONE 周度,无远月腿)——VRP 级别的卖出 Vega 收割,恰恰是该假设要求必须与之区分的卖权利金垂直价差。结构不同,Vega 符号相反,文件关联错误。应整体替换为跨两个到期日的 ATM 日历价差。 - 核心优势缺失。实际交易门槛是 VRP LEVEL 门槛(DVOL IV >= RV*ratio),这是单一期限比较。假设中的优势来自期限结构 SHAPE(近周 IV 与较远期限 IV 的逆价差)——代码中没有远月 IV 序列,也没有任何近端与远端的比较。假设所指的具体机制并未实现。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。