バックテストフレームワーク¶
概要¶
AEGISのバックテストは、「空想にならないこと」を最優先に設計されています。
オプション戦略のバックテストは、株のバックテストと比較して桁違いに難しい — bid/askスプレッド、流動性、約定スリッページ、IV変動など、考慮すべき変数が非常に多い。これらを適切にモデリングしなければ、結果は「紙の上の空論」になります。
AEGISでは 500以上のシナリオ・パラメータ組み合わせ をテストし、多層的なガードを組み込むことで、バックテスト結果が実運用と乖離しないことを徹底しています。
バックテスト規模¶
データ品質と検証期間¶
2年BT(2024-01 〜 2026-01)— 高精度¶
| 項目 | 詳細 |
|---|---|
| オプションデータ | Polygon Options Advanced — 毎日のbid/ask、IV、Greeks(delta/gamma/theta/vega) |
| 株価データ | Polygon — OHLCV日足 |
| フローデータ | Unusual Whales — 機関投資家フロー |
| IV Rank | Unusual Whales — 52週IVランク |
| 決算カレンダー | Finnhub API — 14日ウィンドウ自動回避 |
この期間は 実際のbid/ask spread が利用可能なため、約定モデル(MID/SPREAD/CONSERVATIVE)による現実的なスリッページシミュレーションが可能。これがAEGISのBTの核心的強みです。
確定値の根拠
25ヶ月BTの CONSERVATIVE モデル結果(+11,009%)は、全トレードで最悪約定価格を仮定 した上での結果です。実運用では、これより良い約定を得る可能性しかありません。
7年BT(2019-01 〜 2026-01)— 参考値¶
| 項目 | 詳細 |
|---|---|
| オプションデータ | QuantData CSV — 日次OHLCV(bid/askなし) |
| 株価データ | Polygon — OHLCV日足 |
| 制約 | bid/askスプレッドなし → MIDモデルのみ、約定リアリズム低下 |
7年データでは2020年コロナショック、2022年ベアマーケットなど重要な市場イベントを検証可能ですが、bid/askが存在しないため約定コストが過小評価 されるリスクがあります。
ORATS問題
7年間のbid/ask付き高精度オプションデータを取得するには、ORATS のHistorical Options Data(年間\(5,000〜\)15,000程度)の購入が必要です。QuantDataは解約済みで新規データ追加はできません。ORATS導入により、7年全期間でCONSERVATIVEモデルを実行可能になりますが、現時点ではコスト対効果を検討中です。
空想にならないための多層ガード¶
AEGISのBTエンジンには、結果を「盛らない」ための厳格なガードが組み込まれています。
1. 約定モデル(Execution Models)¶
実運用の約定品質を3段階でモデリング:
| モデル | 約定価格 | 想定 |
|---|---|---|
| CONSERVATIVE | 常に不利な価格(買い=ASK、売り=BID) | 最悪シナリオ |
| SPREAD | 不利価格から25%改善(fill_ratio=0.25) | 現実的 |
| MID | 中間値(bid+ask)/2 | 楽観的 |
確定値はCONSERVATIVEを採用 — 実運用で「これより悪くなることはない」という下限値として報告しています。
2. Deterministic(再現性保証)¶
- 乱数シードを固定し、同一入力で 完全同一の結果 を保証
- 並列実行を自動禁止(pkl cacheの並行書込みによる結果変動を防止)
- Trade IDを日付+銘柄+連番で決定的に生成
3. Look-Ahead Bias防止¶
| 対策 | 実装 |
|---|---|
| GEXフィルタ | gex_filter_use_prev_day=True — 前日のGEX投票結果 を使用 |
| テクニカル指標 | SMA/ATR/RSI等は全て 前日終値ベース で計算 |
| VIX/SPY指標 | vix_prev_close, spy_trend_prev_close 等、前日値を使用 |
| エントリー | 当日オープン以降の価格のみ使用 |
| Day 0スキップ | day_idx==0(初日)は常にスキップ |
4. 月次出金モデル¶
毎月末にequityの30%を出金するモデルを組み込み、複利効果の過大評価を防止。出金なしBTでは非現実的な資金膨張が発生するため、全確定値は30%出金込みで算出。
5. 流動性・約定リアリズム¶
| ガード | 内容 |
|---|---|
| 最低Bid | --min-option-bid — 低流動性銘柄を排除 |
| 最低出来高 | --min-option-volume — 薄商いオプション排除 |
| OI制限 | --min-option-open-interest — 建玉不足排除 |
| 参加率制限 | --max-participation-rate — 出来高の一定割合以上を取らない |
| 部分約定 | --entry-partial-fill-prob — 全量約定できないシナリオをモデル化 |
| 決算回避 | Finnhub決算カレンダー — 決算±14日はエントリーブロック |
6. マージン・リスク管理¶
| ガード | 内容 |
|---|---|
| Max Loss Margin | --enforce-max-loss-margin — NLV超過マージン防止 |
| Max Allocation | 98% — 常に2%キャッシュバッファ維持 |
| 同一銘柄重複 | _entry_blocked_today — 同日同一銘柄の重複エントリー防止 |
| セクター制限 | max_same_sector — セクター集中リスク制御 |