コンテンツにスキップ

IBKR Four-Container Architecture

Overview

Phase 8 以降の IBKR lane は、gateway / underlying / spread / trader の 4-container 構成で運用する。

                  ┌──────────────────────┐
                  │   IBeam Gateway      │
                  │   (voyz/ibeam)       │
                  │   :5000 (internal)   │
                  │   :15000 (host)      │
                  └──────┬───────────────┘
                         │ HTTPS
          ┌──────────────┼──────────────────────┐
          ▼              ▼                      ▼
┌──────────────┐ ┌────────────────┐  ┌──────────────────┐
│ Quote Coll.  │ │ Spread Coll.   │  │ Trader           │
│ (underlying) │ │ (option chains)│  │ (order execution)│
│ 60s interval │ │ 120s interval  │  │ 45s scan loop    │
│ SPY/QQQ/IWM  │ │ ATM put spreads│  │ entry/exit/state │
│ → quotes.jsonl│ │ → spread.jsonl│  │ → trade_log.jsonl│
└──────────────┘ └────────────────┘  └──────────────────┘

Containers

Container Responsibility Runtime cadence Output
aegis-lt-ibkr-gateway IBeam authentication / Client Portal session bridge 22h recycle window HTTPS API on :15000
aegis-lt-ibkr-quote-collector Underlying bid/ask/last snapshots 60s ibkr_underlying_quotes.jsonl
aegis-lt-ibkr-spread-collector Front-month ATM put spread resolution + leg snapshots + whatIf 120s ibkr_spread_quotes.jsonl
aegis-lt-ibkr-trader Put credit spread trading engine (scan → order → fill → position mgmt) 45s state.json + trade_log.jsonl

Compose / Workflow mapping

Unit Compose file GitHub Actions workflow
Gateway aegis_v3/lt-rust-docker/docker-compose.lt-ibkr-gateway.yml .github/workflows/deploy-lt-ibkr-gateway.yml
Underlying collector aegis_v3/lt-rust-docker/docker-compose.lt-ibkr-quote-collector.yml .github/workflows/deploy-lt-ibkr-quote-collector.yml
Spread collector aegis_v3/lt-rust-docker/docker-compose.lt-ibkr-spread-collector.yml .github/workflows/deploy-lt-ibkr-spread-collector.yml
Trader aegis_v3/lt-rust-docker/docker-compose.lt-ibkr-trader.yml .github/workflows/deploy-lt-ibkr-trader.yml

Network / Ports

  • Gateway は host port 15000 を公開し、Client Portal API を HTTPS で受ける
  • Container internal listener は 5000
  • Collectors は host.docker.internal / host-network 到達を前提に gateway へ接続する
  • Gateway を直接 compose 再作成せず、collector 側だけを差し替えられるのが狙い

Data paths

Artifact Path
Underlying JSONL /volume1/aegis/quote_samples_rust/ibkr_underlying_quotes.jsonl
Spread JSONL /volume1/aegis/quote_samples_rust/ibkr_spread_quotes.jsonl
Trader state /volume1/aegis/ibkr_trader/state.json
Trade log /volume1/aegis/ibkr_trader/trade_log.jsonl
PT / WFT logs /volume1/aegis/logs/pt
Replay / clamp traces /volume1/aegis/wft_state/pt_replay_log/

Why four containers

  • 認証寿命と quote cadence を分離し、gateway の再認証が quote loop を巻き込まないようにする
  • underlying と spread で API shape / retry / latency 特性が異なるため、障害切り分けを分ける
  • Phase 6.1 の spread hardening を gateway や underlying collector に波及させず deploy できる
  • trader は注文の発注・ポーリング・キャンセルを行うため、shadow collector とは独立した lifecycle を持つ
  • trader のデフォルトは --dry-run で安全。live trading は GHA の live_trading input で明示的に有効化