🗄️ 歴史的文書(アーカイブ) — この文書は過去の研究フェーズの記録であり、現在の結論・手法を反映していません。現在の研究状況は解説セクションを参照してください。
このシリーズは未完の下書き(draft)のまま凍結されています。
02. Baseline Audit
本ページは Phase 1 の戦略監査レポート research_reports/phase1_strategy_audit.md を整理したもの。
監査は read-only。コードは未変更。データ範囲は 01-data-landscape.md の通り、Postgres 実体に対する集計に基づく。
TL;DR
- 47 の登録戦略(reverse 派生は除く)を 4 ファミリに分類して棚卸しした。
- 手数料はすでにコード側で 0(
ExecutionManager(fee_bps=0.0)、src/atc/execution/execution_manager.py:11)。したがって「ゼロ手数料リラン」は本質的な作業ではない。 - 本当の盲点は保有コスト未モデル化:
execution/、portfolio/、cli/backtest.pyのいずれにも 0.04%/日 の保有コスト処理が存在しない(Phase 2a で対応済み)。これが既存 P&L 結果における最大の測定バイアスである。 - 既存バックテスト結果は 2025-07 〜 2026-02 の Postgres
backtest_runsに集約されている。47 戦略 × 最大 17 期間。 - 現リーダーボードの上位を占めるのは hold-overlay ファミリ(
ml_direction_logistic_hold_overlay_*/ml_hold10_softmax_overlay_*) と 構造的にフラット なbaseline_inventory_mm/baseline_queue_imbalance_breakoutだが、いずれも保有コスト込みでは未評価。 - 重大な構造的ギャップ: adverse-selection 保護付きアグレッシブ・メーカー、ティッカー vs トレードのレイテンシ・アーブ、長期(数日)方向性戦略、スイープのカウンター・トレードがいずれも存在しない。
1. 戦略インベントリ(カウントとファミリ別内訳)
合計 47 戦略(reverse 派生 12 を除く)。
| ファミリ | 件数 | 主な代表 |
|---|---|---|
Baseline(src/atc/strategies/baselines/) | 11 | baseline_flat, baseline_momentum_micro, baseline_mean_reversion_micro, baseline_inventory_mm, baseline_queue_imbalance_breakout, baseline_sweep_follow, baseline_regime_switch_micro, baseline_flow_imbalance_pulse, baseline_technical_hold_overlay(+slow / adaptive) |
ML(src/atc/strategies/ml/) | 30 | ml_direction_linear, ml_direction_logistic, ml_direction_logistic_swing(+8 セッション派生), ml_direction_logistic_hold_overlay(+5 regime_guard 派生), ml_hold10_softmax_overlay(+5 派生), ml_multihorizon_ticker_threshold / _aggressive / _overlay_v2 / _overlay_threshold_v2 |
Experimental(src/atc/strategies/experimental/) | 6 | experimental_bollinger_trend, experimental_bollinger_hurst, experimental_bollinger_forecast, experimental_funding_rate, experimental_funding_rate_delta, experimental_waving_snake |
Reverse(src/atc/strategies/reverse.py、登録ベース 12) | 12 | REVERSE_CANDIDATE_BASES で列挙される派生 |
ホールド時間クラス(tick / sec / min / hour / day / multi-day)の分布上、day+ 帯(baseline_technical_hold_overlay* 3 件、ml_direction_logistic_hold_overlay* 6 件、ml_hold10_softmax_overlay* 6 件、ml_multihorizon_ticker_overlay_*_v2 2 件 = 計 17 戦略)が、保有コスト導入で最も影響を受ける群である。
2. クリティカル・ファインディング: 保有コスト未モデル化
holding_cost、carry_cost、overnight_feeの文字列はコードベース内に皆無(src/atc/全体でゼロヒット)。PortfolioLedger(src/atc/portfolio/ledger.py)はcash_jpy/position_eth/realized_pnl_jpyのみを持ち、apply_fillは手数料のみを差し引く。equity_jpy(mid)= cash + position * mid に時間減衰なし。- 0.04%/日 × 10 ETH × ~¥500k mid ≒ ¥2,000/日/ETH の保有コストは、10 ETH 持続保有なら約 ¥20k/日(≈¥600k/月) のドラッグになる。これは既存の hold-overlay 系の Alpha と同じオーダー。
- 手数料は既に 0(
fee_bps=0.0がデフォルト、コードベースの全パスで 0 のまま)。手数料のためのリランは不要。保有コストのためのリランが本質である。 - セッション・クローズ機能(05:55 〜 05:59 JST のラダー、
--enforce-session-close)は実装済みだがデフォルト OFF、レジストリでオプトインしている戦略は 0。
詳細な拡張ポイント(apply_carry()、CLI の境界クロス検出、DB スキーマ追加、ledger 周辺)は監査レポート §5c を参照。
3. 既存バックテスト結果サマリ(戦略 × 平均 P&L)
Postgres backtest_runs を以下のクエリで集計:
SELECT strategy, COUNT(*), MIN(start_date), MAX(end_date),
ROUND(AVG(strategy_total_pnl_jpy)::numeric, 0),
ROUND(AVG(alpha_total_pnl_jpy)::numeric, 0),
ROUND(SUM(strategy_total_pnl_jpy)::numeric, 0)
FROM backtest_runs
WHERE symbol = 'ETH_JPY'
GROUP BY strategy
ORDER BY runs DESC;
P&L はファミリ単位で集約(バケット)。全数値は監査レポート §2 の集計結果に由来する。
| バケット | 戦略例 | Runs | 平均 strategy P&L | 平均 alpha P&L | 備考 |
|---|---|---|---|---|---|
| Near-zero P&L(構造的にフラット) | baseline_flat、baseline_queue_imbalance_breakout(qty=0.02)、baseline_inventory_mm(qty=0.03) | 83 | ~0 | +80k 〜 +230k | Alpha はベンチマーク・ホールド上昇分に等しい |
| Hold-overlay 系(near-zero alpha) | ml_direction_logistic_hold_overlay* (6)、ml_hold10_softmax_overlay* (6) | ~96 | −143k 〜 −1.0M / run | −1k 〜 −930k | base=10 ETH のため strategy P&L ≈ benchmark |
| Swing / セッション・スコープド logistic | ml_direction_logistic_swing* (9 派生) | 153 | −164k 〜 −387k | −153k 〜 +68k | tokyo 派生がベスト(+68k alpha) |
| Micro momentum / reversion / regime-switch | baseline_momentum_micro、baseline_mean_reversion_micro、baseline_regime_switch_micro、baseline_flow_imbalance_pulse、ml_direction_linear、baseline_sweep_follow | 102 | −4.1M 〜 −5.1M / run | 同オーダー | スプレッド・クロス + 閾値追随で大幅マイナス |
| Bollinger / Hurst トレンド・フォロー | experimental_bollinger_trend、_hurst、_forecast | 24 | −4.8M 〜 −7.9M / run | 同オーダー | ファミリ内最悪 |
| Multi-horizon ticker | ml_multihorizon_ticker_threshold / _aggressive / _overlay_v2 / _overlay_threshold_v2 | 34 | −306k 〜 −6.3M | −240k 〜 −6.3M | v2 オーバーレイがベスト、threshold/aggressive がワースト |
| Funding rate と waving_snake | experimental_funding_rate / _delta、experimental_waving_snake / _reverse | 27 | −78k 〜 −1.0M | 0 〜 −961k | qty 小(0.01–0.02)、サンプル限定 |
カバー期間: 2025-07-01 〜 2026-02-21。月次比較期間(2025-07 〜 2026-02)、週次比較(2026 1 〜 2 月の 8 週間)、長期 integration ラン複数。これまで --enforce-session-close を使ったランは 0。
4. リラン優先度(保有コスト導入後の見直しトップ 3)
監査レポート §3 のコストモデル再評価マトリクスから、Priority 5(即時リラン推奨) に該当する戦略は計 17:baseline_technical_hold_overlay* (3) + ml_direction_logistic_hold_overlay* (6) + ml_hold10_softmax_overlay* (6) + ml_multihorizon_ticker_overlay_*_v2 (2)。これらはいずれも 06:00 JST を構造的に跨ぐ overnight-biased な戦略であり、現在のリーダーボードでも上位を占める。
PM レビュー上、最初に手当すべき トップ 3 リラン候補:
ml_direction_logistic_hold_overlay_regime_guard_derisk_only— hold-overlay ファミリで最も alpha が良い(多くの月で alpha ≈ 0、構造的にネット・ショートを避ける設計)。--enforce-session-closeON / OFF の両方で再評価し、零手数料の中では強制クローズ無料 → flat-close 版が支配的になる仮説を検証。baseline_inventory_mm(リアルな 5 ETH サイジングで) — 現在のmax_inventory=0.03は事実上ゼロ。零手数料は MM の追い風になるが現サイジングではベンチマーク・トラッカーで終わっている。ストリーム期間(2026-02-17 以降)にも対応する DB リーダ整備とセットでリラン。ml_multihorizon_ticker_overlay_v2— debiased エッジ + 連続サイジングで設計済み。flat-by-06:00 ON / OFF の両方で再評価。学習期間(2022-01-01 〜 2025-12-31)に対する新ストリーム・データへの再適用も別軸で実施。
5. ギャップ分析(実装すべき欠落ファミリ・トップ 2)
監査レポート §4 で 7 つのギャップ(A 〜 G)が特定されている。最初に実装すべき 2 件:
- Gap A — Aggressive maker / inside-spread MM with adverse-selection protection(Priority 1)
- 零手数料下では top-of-book 内側で両建て quoting することで free-optionality が立つ。
- 現状の
baseline_inventory_mmは弱い imbalance ポジションを取るだけで quoter ではない。 - 必要データ(
market_stream_orderbookstop-K + trade flow)はすでに揃っている。 - 想定ホールド時間: 秒〜分。06:00 JST で自然にフラット。
- Gap B — Sweep counter-trade(fade-sweep)(Priority 1)
baseline_sweep_followは sweep を追随するだけで、対称な「fade」側は実装されていない。- クリプト HFT 文献では、薄い板に対する大口アグレッシブ・プリントは数秒で mean-revert する傾向あり。零手数料は fade を near-costless にする。
- 必要データ:
market_stream_trades(size-weighted flow)とmarket_stream_orderbooks(sweep 後の book state)。 - 既存 feature engine で実装可能、見積もり 2〜3 日。
その他のギャップ(C: Queue-position MM、D: Latency arb、E: Deeper book imbalance、F: Multi-day directional、G: Session-close volatility play)は監査レポート §4 を参照。新戦略 6 件の具体的な仕様は 03-strategy-design.md にまとめてある。
6. インフラ準備状況のギャップ(次へ必要な改修)
監査レポート §5 から、新コストモデルおよびストリーム期間バックテストを成立させるためのインフラ作業:
- 保有コスト(carry)ロジックの追加 —
apply_carry()をPortfolioLedgerに、06:00 JST 境界クロス検出をcli/backtest.pyイベントループに、backtest_runsテーブルにholding_cost_total_jpy列を追加。ブロッカー。1〜2 日。 - DB-backed イベントリーダ — 現バックテスタは
data/canonical/events/の Parquet のみ読む。2026-02-17 以降のストリーム 60+ 日を活用するにはstream_events_from_db()の追加か、market_stream_*→data/canonical/events/Parquet のマテリアライザが必要。2〜3 日。 - Per-strategy
requires_session_close属性とその配線 — Strategy 基底クラスに class attribute を追加、ランナーがそれを尊重。0.5 日。
関連ページ
00-introduction.md— コストモデル前提01-data-landscape.md— データ在庫・期間カバレッジ03-strategy-design.md— 新戦略 6 件の設計仕様