メインコンテンツまでスキップ

システム全体像

このページは、ATCリポジトリ全体を最短で把握するための「構造マップ」です。
ATCは ETH_JPY を対象に、イベント駆動で売買判断を行う研究・実装基盤です。

1. 何をしているシステムか

ATCの目的は、次を一貫して検証することです。

  • 基準: 10ETH をずっと保有した場合(Benchmark)
  • 戦略: リアルタイムイベントに反応してポジションを調整
  • 評価: Alpha = Strategy PnL - Benchmark PnL

重要点:

  • 1分足は「表示・集計用途」であり、戦略の主トリガーではありません。
  • 戦略判断は TRADE / TICKER / ORDERBOOK のイベント更新ごとに発生します。

2. レイヤ構成

ATCは次のレイヤで構成されます。

  1. Data Layer
  • ヒストリカル取引CSV(GMO配布)とWSログを収集
  • Raw/Manifest/Canonical/Derived を分離保存
  1. Feature Layer
  • FeatureEngine がイベントごとにローリング特徴量を更新
  • Rust実装による高速キャッシュ生成も利用
  1. Strategy Layer
  • すべて TargetPositionIntent を返す統一インターフェース
  • Baseline / ML / Hold10 overlay 系を同一契約で比較
  1. Execution + Risk Layer
  • バックテストでは limit-only(遅延・頻度制約あり)
  • RiskManager が hard limit を適用
  1. Portfolio + Evaluation Layer
  • 約定反映で口座状態更新
  • Strategy/Benchmark/Alpha を同時に計測
  1. Persistence + Ops Layer (Postgres)
  • goose migration でスキーマ管理(up/down)
  • 可変列は JSONB、検索軸は固定カラムで管理
  • Dashboard API/実験ジョブ/アノテーションを一元管理

3. 主要ディレクトリ

src/atc/
cli/ ingest/backtest/replay/ml/report の CLI
core/ Event モデル・共通基盤
data/ 取り込み・正規化・Parquet I/O
exchange/gmo/ GMO API ラッパ
features/ イベント駆動特徴量
strategies/ 戦略本体
execution/ 執行シミュレーション
risk/ 制約管理
portfolio/ ポジション/PnL
reporting/ チャート生成
research/ 学習・探索系
rust/atc-featuregen/
Rust 特徴量生成(Pythonと同等出力を検証しつつ高速化)

4. データの流れ

  1. atc ingest historical
  • GMO CSV.gz を取得
  • スキーマ検証とManifest作成
  • Canonical Event(Parquet)に変換
  1. atc backtest
  • Canonical Eventを日付範囲でロード
  • Feature更新 → Strategy判断 → Risk判定 → Execution
  • PnLとAlphaをJSONへ出力
  1. atc report daily-eval
  • 日次のCSV/PNG/HTMLを作成
  • どの日・どの注文で勝敗が決まったかを可視化
  1. Postgres同期
  • ATC_POSTGRES_WRITE_ENABLED=true の場合、ingest/backtest/report 実行時に src/atc/storage/postgres_sink.py から保存
  • 過去データ一括投入は scripts/import_postgres_data.py

4.1 取得元ごとの具体データ

取得元コマンド/実装取得データ保存先
GMOヒストリカルCSVatc ingest historical / src/atc/data/ingest_historical.py取引履歴CSV(symbol,side,size,price,timestampdata/raw/historical_trades/...data/canonical/events/...
GMO Public WSatc ingest ws-public-capture / src/atc/data/ingest_ws_public.pytrades, ticker, orderbooks のJSONメッセージdata/raw/ws_public/...data/canonical/events/...

このあと FeatureEngine が Canonical Event を読み、mid/spread/logret/rv/flow/imbalance などの特徴量をイベントごとに更新します。

5. Canonical Event モデル

src/atc/core/event_models.py で定義されています。

共通フィールド:

  • event_id
  • event_type
  • symbol
  • exchange_ts_utc
  • recv_ts_utc
  • seq
  • source
  • payload

最小イベント種別:

  • TRADE
  • TICKER
  • ORDERBOOK_SNAPSHOT
  • ORDER_EVENT
  • EXECUTION_EVENT
  • TIMER

6. 実行モード

  1. Live
  • WS public/private + REST を使って実売買
  1. Replay
  • 記録済みCanonical Eventを時系列再生
  1. Backtest
  • 主にヒストリカル取引データで検証
  • 板情報がない期間は trade-only 前提で制約付き評価

7. Postgresで管理する主要テーブル

  • market_trade_events: ヒストリカル取引イベント(原系列)
  • backtest_runs: バックテスト結果サマリ(JSON payload含む)
  • backtest_run_daily: 日次の損益・注文数・ポジション推移
  • backtest_order_events: 発注イベントの時系列ログ
  • strategy_metadata: 戦略の説明メタデータ(要約/詳細/判定フロー)
  • derived_report_rows: 日次/全体CSV行(可変列は row_jsonb
  • annotation_projects, annotation_points: 教師データ作成基盤
  • experiment_jobs: Dashboard経由の実験ジョブ管理
  • import_file_states: 取り込み済みファイル状態管理

8. 読み進め方

  1. このページ(全体像)
  2. バックテスト内部仕様
  3. 実装戦略カタログ
  4. 再現手順ガイド