システム全体像
このページは、ATCリポジトリ全体を最短で把握するための「構造マップ」です。
ATCは ETH_JPY を対象に、イベント駆動で売買判断を行う研究・実装基盤です。
1. 何をしているシステムか
ATCの目的は、次を一貫して検証することです。
- 基準:
10ETHをずっと保有した場合(Benchmark) - 戦略: リアルタイムイベントに反応してポジションを調整
- 評価:
Alpha = Strategy PnL - Benchmark PnL
重要点:
- 1分足は「表示・集計用途」であり、戦略の主トリガーではありません。
- 戦略判断は
TRADE / TICKER / ORDERBOOKのイベント更新ごとに発生します。
2. レイヤ構成
ATCは次のレイヤで構成されます。
Data Layer
- ヒストリカル取引CSV(GMO配布)とWSログを収集
- Raw/Manifest/Canonical/Derived を分離保存
Feature Layer
FeatureEngineがイベントごとにローリング特徴量を更新- Rust実装による高速キャッシュ生成も利用
Strategy Layer
- すべて
TargetPositionIntentを返す統一インターフェース - Baseline / ML / Hold10 overlay 系を同一契約で比較
Execution + Risk Layer
- バックテストでは limit-only(遅延・頻度制約あり)
RiskManagerが hard limit を適用
Portfolio + Evaluation Layer
- 約定反映で口座状態更新
- Strategy/Benchmark/Alpha を同時に計測
Persistence + Ops Layer (Postgres)
goosemigration でスキーマ管理(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. データの流れ
atc ingest historical
- GMO CSV.gz を取得
- スキーマ検証とManifest作成
- Canonical Event(Parquet)に変換
atc backtest
- Canonical Eventを日付範囲でロード
- Feature更新 → Strategy判断 → Risk判定 → Execution
- PnLとAlphaをJSONへ出力
atc report daily-eval
- 日次のCSV/PNG/HTMLを作成
- どの日・どの注文で勝敗が決まったかを可視化
Postgres同期
ATC_POSTGRES_WRITE_ENABLED=trueの場合、ingest/backtest/report実行時にsrc/atc/storage/postgres_sink.pyから保存- 過去データ一括投入は
scripts/import_postgres_data.py
4.1 取得元ごとの具体データ
| 取得元 | コマンド/実装 | 取得データ | 保存先 |
|---|---|---|---|
| GMOヒストリカルCSV | atc ingest historical / src/atc/data/ingest_historical.py | 取引履歴CSV(symbol,side,size,price,timestamp) | data/raw/historical_trades/... と data/canonical/events/... |
| GMO Public WS | atc ingest ws-public-capture / src/atc/data/ingest_ws_public.py | trades, 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_idevent_typesymbolexchange_ts_utcrecv_ts_utcseqsourcepayload
最小イベント種別:
TRADETICKERORDERBOOK_SNAPSHOTORDER_EVENTEXECUTION_EVENTTIMER
6. 実行モード
Live
- WS public/private + REST を使って実売買
Replay
- 記録済みCanonical Eventを時系列再生
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. 読み進め方
- このページ(全体像)
バックテスト内部仕様実装戦略カタログ再現手順ガイド