戦略
Binance Options SOL週次の現金担保OTMプット売り — 単一レッグのVRP収益化、実現ボラティリティ比プレミアムのゲート(グリークス不要、3パラメーター)
結果: 中止
BinanceOptionsSolCashSecuredPutWritePremiumRvGate
Binance Options SOL週次の現金担保OTMプット売り — 単一レッグのVRP収益化、実現ボラティリティ比プレミアムのゲート(グリークス不要、3パラメーター)
仮説
BINANCE_OPTIONS SOL週次を対象とした、単一レッグの全額現金担保プット売りです。初の試みは二つです。(1)BINANCE_OPTIONSでは1486+の契約が上場し、オプション枠も明示されているのに、1469件の実験で戦略はZERO件です。ブック内で最も空いている取引所です。(2)SOLはこの戦略群にとって新たな原資産で、Deribitでは利用できません(BTC/ETHのみ)。そこではプット売りの四つの枠がすでに埋まっています。厳密にONEレッグのみで、スプレッド、ウィング、ヘッジはありません(L2準拠)。Deribitの兄弟戦略と比べた主な設計変更は、エントリーゲートでOBSERVED OPTION PREMIUMをREALIZEDボラティリティと比較する点です。インプライド・ボラティリティやグリークスは使いません。deribit_greeks_IVはDeribit固有なので、BinanceオプションでIVベースのゲートを使うとdata_unavailableリスクがあります。プレミアム対権利行使価格の比率はオプション足から、実現ボラティリティは原資産のOHLCVから直接取得するため、確実に存在するデータだけで実装できます。意図的に簡潔にしました。最近の提案三件は、仕様を詰め込みすぎてtoken_budget_exceededにより失敗したためです。
data_unavailable: SOL-260731-70-P.BINANCE_OPTIONSのバックテストデータを5回再試行しても収集できませんでした。 - ローソク足(bar_type=SOL-260731-70-P.BINANCE_OPTIONS-1-HOUR-LAST-EXTERNAL):取得数0、必要数100、または30+日間の期間 阻害要因は戦略ではなくデータ層です。収集が修正されるか、銘柄の過去データが補完された後に、この仮説を再評価してください。
実装
SOLのBINANCE_OPTIONSを対象とする、単一レッグの全額現金担保プット売りです。各足で、オプション自身のプレミアム足とSOLUSDTの現物OHLCVから、連続的なプレミアム割高比率(オプションプレミアム/権利行使価格)/(実現ボラティリティ * sqrt(満期までの時間))を再計算します。グリークスもIVデータフィードも不要です。この比率がSOLで調整した閾値を超えた場合(市場が直近の実現ボラティリティから正当化される以上の額を支払っている場合)、OTMプットを売ります。プレミアム減衰(利益確定)、プレミアム拡大(損切り)、または満期前ロール用バッファへの進入時に買い戻します。権利行使時の支払義務が純資産の一定割合になるよう契約数を調整します。レバレッジは1.0です。
QA が特定した戦略全体の不一致を修正しました。取引所はBINANCE_OPTIONS、原資産はSOLです。仮説が埋めようとする新規性の二つの軸であり、Deribit BTCではありません。取引所でBinance OptionsにSOL(稼働中の132 SOL契約)が上場し、実際にデータがカタログに届くことを確認しました。ローリングオプションの展開処理はDeribit専用です(SOLローリング仕様では例外が発生して停止しますdata_unavailable。これはまさにQAの阻害要因です)。そのため、プログラムでは名前付きのSOL週次プットを表し、上場契約のeapiローソク足データを提供するon_demand._collect_from_binance_options経由で解決します。SOL-260731-70-Pは約41日間の毎時足1000本を返し、十分性の下限である1-HOUR(200本/30日)を満たします。RVレッグ(SOLUSDT.BINANCE_SPOT-4-HOUR)にはカタログ全期間の履歴があり、異なる時間足なので、基底クラスの同一時間足整合性チェックでオプション足が滞ることはありません。ゲートは移植せず、実際のSOLデータで再調整しました。この1000本で測定した比率はp10=0.155/中央値=0.255/p90=0.450です。したがって、premium_rv_ratio_min=0.28なら兄弟戦略BTCの観測値のおよそ40%を選ぶ選択性を再現します(0.085ではほぼすべての足でシグナルが出ていました)。不足を指摘したQAの下方エグジットも追加しました。stop_loss_multで買い戻し、ショートプットの左裾を切り詰めます。これはBTCよりSOLで重要です。シグナルは連続値のまま自然単位で各足に返し、閾値判定はshould_enterで行います。構造はヘッジなしの単一レッグに限定し、サイズは現金担保かつ資本に対する比率で決め、レバレッジは1.0のままなので、設定だけされて未使用になることはありません。
検証結果
CLEAN RESTART 2026-09-04 — 今回の実行に関する判定履歴と学習記録を削除し、検証から再開しました。以前の中止は市場ではなくパイプラインが原因でした。Layer-2 ハーネスが @staticmethod ヘルパーを誤ってバインドしていました(修正済み)。QA は未最適化のスモークテストで最終的なパフォーマンス判定を出していました(削除済み — 現在、QA は正しさのみを判定します)。サンドボックスのタイムアウトはバックテスト枠の不足が原因でした(修正済み)。仮説と戦略コードは変更していません。コード自体の妥当性を検証してください。パフォーマンスは後で完全なバックテストと最適化により判断します。
イテレーション履歴
検証失敗(Layer 3 — サンドボックスのバックテスト):スモークテストが壁時計時間の上限300秒を超えました。ほとんどの場合、履歴の長さに応じて増える足ごとの処理が原因です。たとえば、資金調達や補助系列全体を再走査する、またはcalculate_signal()/on_bar()内で毎足リストを作り直して min()/sorted() を呼び出す処理です。__init__でタイムスタンプ配列ONCEを事前にソートし、bisectを使うか、タイムスタンプをキーに参照をキャッシュしてください。そうすれば足ごとの計算量はO(n)ではなくO(log n)になります。
Stratmillはリサーチおよびペーパートレーディングのためのツールであり、投資助言やブローカーではありません。バックテストおよびペーパートレーディングの結果は仮定に基づくものです。トレーディングには損失のリスクが伴います。