策略
BTC Deribit 月度 ATM 低波動率狀態下的做多跨式,進場時 Delta 中性(跨交易場所:DERIBIT 選擇權 + BINANCE 永續合約作為已實現波動率訊號來源,當 IV 排名偏低且 AND 已實現波動率擴張時買入波動率,硬性權利金停損,每年約 12-20 筆交易)
結果: 已放棄
BtcDeribitMonthlyAtmLongStraddleCheapVolRegime
BTC Deribit 月度 ATM 低波動率狀態下的做多跨式,進場時 Delta 中性(跨交易場所:DERIBIT 選擇權 + BINANCE 永續合約作為已實現波動率訊號來源,當 IV 排名偏低且 AND 已實現波動率擴張時買入波動率,硬性權利金停損,每年約 12-20 筆交易)
假說
一個 LONG-VOLATILITY 選擇權策略,操作 Deribit BTC 月度選擇權,刻意作為工廠既有短波動率部位(每週現金擔保賣權寫入,ETH 月度鐵兀鷹式)與絕大多數為做多、高 beta 投資組合(84.2% long_only,73.9% BINANCE USD-M)的 OPPOSITE SIGN。一次補齊三個被低估的配額桶:選擇權交易場所(DERIBIT 3.7% 對 >=15% 目標)、跨場所(6.9% 對 >=15%),以及非純做多曝險。此交易為單純的 ATM STRADDLE — 於 Deribit BTC 買進 1 最近月份 ATM 買權 + 1 最近月份 ATM 賣權,在建立時大致為 delta 中性,因此是對波動率(非方向)的純粹押注。關鍵在於,它 NOT 以永續合約腿進行 delta 避險:先前的「BTC 每週 Delta 避險短跨式」於驗證階段失敗,因持續再避險的簿記作業導致 300 秒的冒煙測試逾時。此處 Binance 永續合約 ONLY 作為已實現波動率的唯讀訊號來源(BTCUSDT.BINANCE 1 小時 K 線),從不實際交易,因此每根 K 線工作量維持在 O(1),所有 IV/RV 序列於 __init__ 中預先計算為陣列,並透過二分搜尋查找。狀態濾網:加密貨幣的波動率風險溢價為正 ON AVERAGE(這正是短波動率部位存在的原因),故無條件的長跨式必然造成 theta 流失。優勢僅在條件式尾端收割:當隱含波動率相對其自身歷史為 CHEAP、且 AND 已實現波動率正在擴張時進場 ONLY — 即 VRP 倒置且 IV 必須向上追趕 RV 的特定狀態。頻率偏低(每個月期權週期約一個候選進場,每年約 12-20 筆交易),持有 5-20 天,因此約 0.06% RT 的 Deribit 手續費相對於以權利金整數百分比變動的跨式損益可忽略不計。
第 9 次迭代修正了 Layer-3「未產生交易」的失敗,且未更動任何波動率門檻,因為我在做任何改動前已先在實際資料上量測過該門檻:在 deribit_dvol 個 BTC + BTCUSDT 個 1-DAY 收盤價上重播編碼條件,iv_rank<=0.30 在 45.5% 個有效 bar 上觸發,rv7/rv30>=1.15 在 26.2% 個上,iv<=1.30*rv7 在 49.0% 個上,以及 1,988 個 bar 中於 188 個上成立的 3 路聯結(9.5%)。訊號會觸發;只是沒有落腳之處 — lookback_days 270 僅解析出 9 個月度週期,且每個週期僅開放 5 天(到期 -30 日),而該組合的循序交易重播恰好回傳 0 筆進場。將 lookback_days 提高至 365(12 個週期,24 個選擇權 bar 類型 — 保持在約 600 秒的選擇權執行時鐘上限之下;540 日/36 腿則是此類策略因逾時而失效的臨界點),並將 entry_window_days 提高至 20,於沙盒窗口內產生 3 筆進場(2025-08-28、2026-06-02、2026-07-14;iv_rank 0.06-0.10,rv 比值 1.27-1.36 — 全部確實落在便宜 IV/擴張 RV 的尾部)。因為較寬的窗口允許跨式部位在其履約價敲定後進場,我新增了兩道 PROTECT 假設本身而非放寬假設的防護:min_dte_days=10(絕不開立存續期低於 10 日的新跨式部位)與 atm_drift_max=0.15(若週期的履約價已偏離現貨過遠、致無法維持近似 delta 中性,則予以拒絕);兩者皆已納入產生 3 筆進場的重播之中。第三項變更:calculate_signal(bar) 現在於每根主 bar 上皆會呼叫,以實際執行連續長波動率分數(「0 已評估 bar」診斷訊息) — 主 bar 仍 NOT 會走 super().on_bar(),否則將跑基礎類別的無條件排程迴圈、無論波動率制度門檻為何皆每月買進跨式部位。Layer 1 靜態分析通過(錯誤數=0),模組可成功編譯。其餘部分與第 -8 次迭代的程式碼逐位元組相同:相同匯入、相同每 bar O(1) 的記憶化指標、相同明確的 rv_instrument_id 篩選、相同合併保費止損、無標的/煙霧 fallback。給分析師的誠實提醒:條件尾部每年僅支援約 3 個符合資格的月度週期,而非假設中的 12-20 — 這將是一個小樣本結果,我寧可誠實回報,也不願放寬門檻以製造交易。
實作
Deribit 上的長波動率 BTC 選擇權策略:每個月的(週五最後一日)到期,BUY 一張 ATM 買權 + 一張 ATM 賣權(近似 delta 中性的跨式部位) — 但 ONLY 僅在條件尾部內進場,其中 Deribit 的 DVOL 隱含波動率指數位於其過去 180 日區間的下 30% AND 7 日實現波動率至少高出 30 日實現波動率 15% AND 隱含波動率相對實現波動率尚未昂貴(IV <= 1.30 x RV7),且跨式部位履約價仍落在現貨的 15% 範圍內,使進場時該結構大致維持 delta 中性。BTCUSDT.BINANCE 永續合約為主要 bar 串流:其為轉倉時鐘與實現波動率訊號來源,且 NEVER 進行交易。出場:以已付合併保費的 -40% 作為硬止損,+60% 處停利,最長持有 20 日,以及到期前 72 小時強制平倉。同時僅持有一組跨式部位,每年鏈覆蓋範圍內約 3 個符合資格的週期。
驗證結果
迭代紀錄
驗證失敗(Layer 3 — 沙盒回測):冒煙測試超過 300s 的執行時限。這幾乎總是表示每根 K 棒的工作量會隨歷史資料增長——例如重新掃描完整的資金費率/補充序列,或是在每根 K 棒的 calculate_signal()/on_bar() 中重建清單並呼叫 min()/sorted()。請在 __init__ 中預先計算已排序的時間戳陣列 ONCE 並使用 bisect,或依時間戳快取查詢結果,讓每根 K 棒的成本為 O(log n) 而非 O(n)。
驗證失敗(Layer 3 — 沙盒回測):未產生交易 使用的 Bar 類型:BTCUSDT.BINANCE-1-DAY-LAST-EXTERNAL,已處理 Bar 數:2398 診斷:calculate_signal() 從未被評估(0 個已評估 bar) → 沒有任何主 bar 進入基礎樣板的訊號路徑 → 若您覆寫 on_bar(),請呼叫 super().on_bar(bar);請檢查 bar_type 是否符合該標的的資料。NOT 放寬進場門檻 — 進場邏輯從未執行。 請確認您的策略能在給定資料與參數下產生交易。
驗證失敗(Layer 3 — 沙盒回測):Arrow 錯誤:結構描述錯誤:因中繼資料衝突而無法合併結構描述。索引鍵「size_precision」的值「5」與「8」不同 使用的 K 棒類型:BTCUSD.HYPERLIQUID-1-MINUTE-LAST-EXTERNAL,已處理的 K 棒數:0 請確認您的策略能以提供的資料和參數產生交易。
驗證失敗(Layer 3 — 沙盒回測):Arrow 錯誤:結構描述錯誤:因中繼資料衝突而無法合併結構描述。索引鍵「price_precision」的值「2」與「8」不同 使用的 K 棒類型:BTCUSD.HYPERLIQUID-1-MINUTE-LAST-EXTERNAL,已處理的 K 棒數:0 請確認您的策略能以提供的資料和參數產生交易。
放棄原因
回測檢視
- 總報酬率
- 3.75%
- 最大回撤
- 2.16%
- 總交易筆數
- 6
- 勝率
- 50.0%
- 獲利因子
- 2.09
Stratmill 是一款研究與模擬交易工具,並非財務建議或經紀商服務。回測與模擬交易結果均為假設性質。交易涉及虧損風險。