forge live¶
ライブトレードのイベントログ取得(VPS→ローカル)、raw event → trade records 変換、パフォーマンス分析、バックテストとの比較を行うコマンドグループ。forge journal と連携してライブ実績を可視化します。
サンプル出力について
本ページの出力例は alpha-forge のソースから読み取ったフォーマットを元にしたサンプルです。実際の数値や整形は live/formatter.py の format_* 関数の挙動に依存します。
ライブ運用までの典型フロー¶
1. forge live sync-events VPS から raw event を取得
2. forge live convert-check 変換 readiness を確認
3. forge live import-events fill/close event から trades を生成
4. forge live summary ライブパフォーマンスを表示
5. forge live compare 最新 backtest run と比較
サブコマンド一覧¶
| コマンド | 説明 |
|---|---|
forge live list |
live trading records が存在する戦略一覧 |
forge live events |
raw event を一覧表示 |
forge live convert-check |
raw event から trades 変換 readiness を確認 |
forge live import-events |
fill / close event から trade records を生成して保存 |
forge live trades |
戦略の個別取引レコードを一覧 |
forge live summary |
戦略の live performance summary を表示 |
forge live compare |
最新 backtest run と live summary を比較 |
forge live doctor |
live trading analysis の導入状態を確認 |
forge live sync-events |
VPS 上のイベントログをローカルに rsync で同期 |
forge live list¶
<journal_path>/../live/ 配下の trade records と event ログを走査し、ライブ記録が存在する戦略 ID を表示します。
構文¶
引数とオプション¶
なし。
サンプル出力¶
整形は format_live_list に依存します。
forge live events¶
raw event(broker から出力される fill、close 等)を一覧表示します。フィルタなしの場合は最新から --limit 件を表示。
構文¶
引数とオプション¶
| 名前 | 種別 | デフォルト | 説明 |
|---|---|---|---|
--strategy-id |
オプション | - | strategy_id で絞り込む |
--event-type |
オプション | - | event_type で絞り込む(例: fill、close) |
--broker |
オプション | - | broker で絞り込む |
--limit |
int | 20 |
表示件数 |
サンプル出力¶
timestamp strategy_id broker event_type symbol side qty price
2026-04-15 09:31 spy_sma_v1 ibkr fill SPY long 100 452.30
2026-04-15 14:02 spy_sma_v1 ibkr close SPY long 100 458.12
...
整形は format_live_events に依存します。
forge live convert-check¶
raw event を trade records に変換できる状態か(fill と close のペアが揃っているか等)を確認します。import-events の前段で実行することを推奨。
構文¶
引数とオプション¶
| 名前 | 種別 | デフォルト | 説明 |
|---|---|---|---|
--strategy-id |
オプション | - | strategy_id で絞り込む |
サンプル出力¶
=== Conversion readiness ===
strategy_id fill_events close_events matched pending status
spy_sma_v1 18 16 16 2 partial
qqq_hmm_macd_ema_rsi_v1 8 8 8 0 ready
broken_v1 5 0 0 5 missing close events
整形は format_event_conversion_report に依存します。
forge live import-events¶
fill / close event から trade records を生成し、<live_path>/trades/<strategy_id>.json および <live_path>/summaries/<strategy_id>.json に保存します。
構文¶
引数とオプション¶
| 名前 | 種別 | デフォルト | 説明 |
|---|---|---|---|
STRATEGY_ID |
引数(必須) | - | 対象戦略 ID |
raw event → trade records 変換の前提条件¶
<live_path>/events/に該当strategy_idの event ログが存在すること(forge live sync-eventsで取得済み、または手動配置)- 各エントリーに対して
fillevent とcloseevent のペア が揃っていること - 事前に
forge live convert-checkでstatus: ready(またはpartialで許容範囲)を確認しておくこと - 1 戦略 ID に対して 1 回実行すれば
<strategy_id>.jsonが生成される(再実行で上書き)
サンプル出力¶
imported_trades : 16
strategy_id : spy_sma_v1
trades_file : data/live/trades/spy_sma_v1.json
summary_file : data/live/summaries/spy_sma_v1.json
主なエラー¶
| メッセージ | 原因 | 対処 |
|---|---|---|
trade records を生成できませんでした: <id> |
fill / close ペアが揃わない、event 不存在 |
forge live convert-check --strategy-id <id> で原因確認 |
forge live trades¶
戦略の個別取引レコードを一覧します。
構文¶
引数とオプション¶
| 名前 | 種別 | デフォルト | 説明 |
|---|---|---|---|
STRATEGY_ID |
引数(必須) | - | 戦略 ID |
--limit |
int | 50 |
表示件数。0 で全件 |
--side |
choice | - | long / short で絞り込む |
--exit-reason |
オプション | - | exit_reason で絞り込む |
新しい取引から順に表示されます(entry_at 降順)。
サンプル出力¶
trade_id side entry_at exit_at qty pnl_pct exit_reason
t_0042 long 2026-04-15 09:31 2026-04-15 14:02 100 +1.29% take_profit
t_0041 long 2026-04-12 10:05 2026-04-12 15:48 100 -0.42% stop_loss
...
整形は format_live_trades に依存します。
主なエラー¶
| メッセージ | 原因 | 対処 |
|---|---|---|
live trade records がありません: <id> |
<live_path>/trades/<id>.json 不存在 |
forge live import-events <id> で生成 |
forge live summary¶
戦略の live performance summary を表示します。サマリーが未生成の場合は trade records から自動構築します。
構文¶
引数とオプション¶
| 名前 | 種別 | デフォルト | 説明 |
|---|---|---|---|
STRATEGY_ID |
引数(必須) | - | 戦略 ID |
サンプル出力¶
=== spy_sma_v1 / Live Summary ===
trades : 16
win_rate : 56.3%
total_pnl_pct : +8.42%
avg_win_pct : +1.85%
avg_loss_pct : -1.12%
max_drawdown_pct : -4.20%
sharpe_ratio : 1.32
period : 2026-03-01 → 2026-04-15
整形は format_live_summary に依存します。
主なエラー¶
| メッセージ | 原因 | 対処 |
|---|---|---|
live summary がありません: <id> |
trade records 不存在で構築不能 | forge live import-events <id> を先に実行 |
forge live compare¶
最新 backtest run と live summary を比較表示し、ライブが想定通りに機能しているかを評価します。
構文¶
引数とオプション¶
| 名前 | 種別 | デフォルト | 説明 |
|---|---|---|---|
STRATEGY_ID |
引数(必須) | - | 戦略 ID |
サンプル出力¶
=== spy_sma_v1: Backtest vs Live ===
Metric Backtest (run_20260410) Live (2026-03-01 → 2026-04-15) Diff
trades 18 16 -2
win_rate_pct 58.3 56.3 -2.0
total_return_pct +12.4 +8.42 -3.98
sharpe_ratio 1.45 1.32 -0.13
max_drawdown_pct -3.80 -4.20 -0.40
整形は format_live_compare に依存します。
主なエラー¶
| メッセージ | 原因 | 対処 |
|---|---|---|
live summary がありません: <id> |
live summary 不存在 | forge live import-events <id> で生成 |
backtest run がありません: <id> |
ジャーナルに backtest run 不存在 | forge backtest run で実行・記録 |
forge live doctor¶
live trading analysis の導入状態を診断します。STRATEGY_ID を渡すと、その戦略について trades / summary の有無まで確認します。
構文¶
引数とオプション¶
| 名前 | 種別 | デフォルト | 説明 |
|---|---|---|---|
STRATEGY_ID |
引数(任意) | - | 戦略 ID(指定で詳細チェック) |
サンプル出力(戦略 ID なし)¶
=== live trading doctor ===
live_path : data/live
events_path : data/live/events
trades_path : data/live/trades
summaries_path : data/live/summaries
events_exists : yes
event_files : 24
hint : pass a strategy_id to validate trades/summary readiness
サンプル出力(戦略 ID 指定)¶
=== live trading doctor ===
live_path : data/live
...
event_files : 24
strategy_id : spy_sma_v1
trades_exists : yes
summary_exists : yes
rollout_status : ready
rollout_status は events_exists かつ event_files > 0 かつ(trades_exists か summary_exists)が満たされれば ready、それ以外は incomplete。
forge live sync-events¶
VPS 上のイベントログを rsync でローカルに同期します。
構文¶
引数とオプション¶
| 名前 | 種別 | デフォルト | 説明 |
|---|---|---|---|
--dry-run |
フラグ | false | 実際の転送を行わず、ファイル一覧のみ表示 |
rsync 設定要件(forge.yaml)¶
forge.yaml に以下のような remote 設定が必要:
remote:
enabled: true
user: <SSH_USER>
host: <VPS_HOST>
events_path: /var/log/alpha-strike/events # VPS 側のイベントログディレクトリ
local_events_path: ./data/live/events # ローカル保存先(任意、デフォルト ./data/live/events)
ssh_key_path: ~/.ssh/id_ed25519 # SSH 鍵(任意、未指定なら ssh デフォルト鍵)
| キー | 必須 | 説明 |
|---|---|---|
remote.enabled |
✓ | true に設定 |
remote.host |
✓ | VPS のホスト名または IP |
remote.user |
✓ | SSH ログインユーザー名 |
remote.events_path |
✓ | VPS 側のイベントログディレクトリ(絶対パス推奨) |
remote.local_events_path |
- | ローカル保存先(省略時 ./data/live/events) |
remote.ssh_key_path |
- | SSH 鍵パス(省略時 SSH デフォルト鍵) |
実行される rsync コマンド¶
rsync -avz --progress -e "ssh -i <ssh_key_path>" \
<user>@<host>:<events_path>/ <local_events_path>/
--dry-run 指定時は rsync --dry-run -avz ... で実際の転送を行わずファイル一覧のみ確認できます。タイムアウトは 300 秒。
サンプル出力¶
同期中: ubuntu@vps.example.com:/var/log/alpha-strike/events/ → ./data/live/events/
sending incremental file list
events_20260415_093021.json
2,318 100% 12.45MB/s 0:00:00
events_20260415_140215.json
1,842 100% 15.20MB/s 0:00:00
sent 4,312 bytes received 78 bytes total size 4,160
主なエラー¶
| メッセージ | 原因 | 対処 |
|---|---|---|
エラー: remote が無効です。forge.yaml の remote.enabled を true に設定してください。 |
remote.enabled が false |
forge.yaml で enabled: true |
エラー: remote.host, remote.user, remote.events_path を設定してください。 |
必須キー欠如 | forge.yaml の remote を完全設定 |
エラー: rsync タイムアウト(300秒)。VPS への接続を確認してください。 |
ネットワーク・SSH 障害 | SSH 接続性、鍵設定、ファイアウォールを確認 |
終了コード¶
- 成功:
0 - 設定不足:
1 - rsync タイムアウト:
1 - rsync 自体のエラー: rsync の終了コードをそのまま伝播
共通の挙動¶
- 保存先:
<journal_path>/../live/配下(events/、trades/、summaries/のサブディレクトリ) forge.yaml: 上記すべてのパスはFORGE_CONFIGが指すforge.yamlで決まる- VPS 連携:
sync-eventsはforge.yamlのremote.*セクションを参照 - 詳細仕様: データモデルとロールアウト手順は alpha-forge リポジトリ内の以下を参照
alpha-forge/docs/live-trading-data-model.mdalpha-forge/docs/live-trading-rollout.md
- 終了コード: 通常
0、引数エラーは Click が2、設定不足や record 不存在は通常1