Market Snapshot キャッシュ設計(2025-12-05)¶
ドキュメント情報
- 最終更新: 2025-12-05 23:50 JST
- AEGISバージョン: v2.6.8(★tech-stack.md 2025-12-05 04:30 JST基準)
- 対象範囲: バックテスト/ペーパートレード用 MarketSnapshot キャッシュ
- 期間: 2019-08-01 〜 2025-11-21(最新ビルド)
目的¶
- 1営業日・1銘柄の市場状態(株価/IV/GEX/オプションチェーン)を事前計算してキャッシュし、再現性と速度を確保する。
- GEX計算やAPI呼び出しを毎日行わずに済ませ、メモリ安全に並列化したバックテストを実現する。
データ構造(core/models.py::MarketSnapshot)¶
- 株価:
price/open/high/low/volume(分割補正後) - テクニカル:
sma_short(20),sma_long(100),atr(20) - IV Rank:
iv_rank(Barchart由来、取得不可時はNone) - オプション:
option_chain(OptionContract[]) — bid/ask/delta/gamma/volume/open_interest/dte/expiration を保持 - GEX:
index_gamma_profile(SPX/QQQなど),symbol_gamma_profile,gex_98d_profile - メタ:
regime,is_realtime,option_data_date,fallback_reason,data_freshness_warning
データソースとキャッシュ¶
- 株価: Polygon株価キャッシュ(バックテストではAPI未呼び出し)
- オプション: Parquet
data/cache/polygon_options_with_greeks(遅延ロード + LRUでメモリ節約) - IV Rank: Barchartキャッシュ
- 保存形式:
data/cache/market_snapshots/{symbol}/{YYYY-MM-DD}.pkl(pickle, DataCache) - 生成スクリプト:
scripts/build_market_snapshot_cache.py
生成フロー(scripts/build_market_snapshot_cache.py)¶
- 週末を除いた営業日リストを構築。
HybridDataProvider(skip_theta_check=True)で日次 MarketSnapshot を取得。- 株価取得 → 分割補正
- オプションチェーン取得(Parquet遅延ロード, DTE 5-90)
- テクニカル計算(150日履歴)
- IV Rank取得(Barchart)
- GEXプロファイル計算(index + symbol + 98D)
- DataCacheにpickle保存。
- ログ: 日次DEBUG、progress_stepごとINFO、完了サマリを記録。
最新ビルド結果(2025-12-05 23:37 JST, workers=4)¶
- ログ:
/Users/ryo/Library/CloudStorage/Dropbox/Cursol_development/AEGIS/logs/build_cache_lazy_w4_20251205_175230.log - 成功: 289,040 / 326,106 営業日(88.6%)
- エラー: 37,066 件(データ欠損/取得失敗日)
- 例:
[GLD] success=1588/1647日 (96.4%), errors=59
BT前のチェックリスト(GEX/MTFの健全性)¶
- オプションキャッシュ検証:
scripts/validate_option_cache.pyで OI/日付カバレッジを確認。 - ビルドログ確認: 上記ログを
grep "errors="で多発銘柄を洗い出し、補完方針を決定。 - GEXスポット確認: 任意銘柄/日付で
HybridDataProvider.get_option_chain_from_cache()→ GEX計算を実行し、OIゼロや極端な偏りがないか確認。 - MTF分布確認:
core/mtf_analyzer.pyの判定分布を数日サンプル出力し、NEUTRAL過多/片寄りがないかチェック。 - スモークBT: 5銘柄×短期間(例: 2023-01〜03)で速度・ポジションカウント一致・CrisisAlpha/Spear発火を確認。
部分/再実行の例¶
cd /Users/ryo/Library/CloudStorage/Dropbox/Cursol_development/AEGIS
./venv/bin/python scripts/build_market_snapshot_cache.py \
--start 2023-01-01 --end 2023-03-31 \
--symbols AAPL MSFT NVDA \
--workers 2 --progress-step 5 \
--console-level INFO \
--log-prefix build_cache_partial
既知の課題・TODO¶
- OIの完全補完が未完了(Polygon Snapshot APIでのヒストリカルOI取得を実装予定)。
- 37,066件の欠損日はログ確認のうえ補完/除外方針を決める。
- データ鮮度メタ (
option_data_date,fallback_reason) をBTロジックで監視し、前日データ混入を検知する。