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

🗄️ 歴史的文書(アーカイブ) — この文書は過去の研究フェーズの記録であり、現在の結論・手法を反映していません。現在の研究状況は解説セクションを参照してください。

このシリーズは未完の下書き(draft)のまま凍結されています。

02. Baseline Audit

本ページは Phase 1 の戦略監査レポート research_reports/phase1_strategy_audit.md を整理したもの。 監査は read-only。コードは未変更。データ範囲は 01-data-landscape.md の通り、Postgres 実体に対する集計に基づく。

TL;DR

  • 47 の登録戦略(reverse 派生は除く)を 4 ファミリに分類して棚卸しした。
  • 手数料はすでにコード側で 0ExecutionManager(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/11baseline_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/30ml_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/6experimental_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)12REVERSE_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_costcarry_costovernight_fee の文字列はコードベース内に皆無src/atc/ 全体でゼロヒット)。
  • PortfolioLedgersrc/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 と同じオーダー。
  • 手数料は既に 0fee_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_flatbaseline_queue_imbalance_breakout(qty=0.02)、baseline_inventory_mm(qty=0.03)83~0+80k 〜 +230kAlpha はベンチマーク・ホールド上昇分に等しい
Hold-overlay 系(near-zero alpha)ml_direction_logistic_hold_overlay* (6)、ml_hold10_softmax_overlay* (6)~96−143k 〜 −1.0M / run−1k 〜 −930kbase=10 ETH のため strategy P&L ≈ benchmark
Swing / セッション・スコープド logisticml_direction_logistic_swing* (9 派生)153−164k 〜 −387k−153k 〜 +68ktokyo 派生がベスト(+68k alpha)
Micro momentum / reversion / regime-switchbaseline_momentum_microbaseline_mean_reversion_microbaseline_regime_switch_microbaseline_flow_imbalance_pulseml_direction_linearbaseline_sweep_follow102−4.1M 〜 −5.1M / run同オーダースプレッド・クロス + 閾値追随で大幅マイナス
Bollinger / Hurst トレンド・フォローexperimental_bollinger_trend_hurst_forecast24−4.8M 〜 −7.9M / run同オーダーファミリ内最悪
Multi-horizon tickerml_multihorizon_ticker_threshold / _aggressive / _overlay_v2 / _overlay_threshold_v234−306k 〜 −6.3M−240k 〜 −6.3Mv2 オーバーレイがベスト、threshold/aggressive がワースト
Funding rate と waving_snakeexperimental_funding_rate / _deltaexperimental_waving_snake / _reverse27−78k 〜 −1.0M0 〜 −961kqty 小(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(即時リラン推奨) に該当する戦略は計 17baseline_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 リラン候補:

  1. ml_direction_logistic_hold_overlay_regime_guard_derisk_only — hold-overlay ファミリで最も alpha が良い(多くの月で alpha ≈ 0、構造的にネット・ショートを避ける設計)。--enforce-session-close ON / OFF の両方で再評価し、零手数料の中では強制クローズ無料 → flat-close 版が支配的になる仮説を検証。
  2. baseline_inventory_mm(リアルな 5 ETH サイジングで) — 現在の max_inventory=0.03 は事実上ゼロ。零手数料は MM の追い風になるが現サイジングではベンチマーク・トラッカーで終わっている。ストリーム期間(2026-02-17 以降)にも対応する DB リーダ整備とセットでリラン。
  3. 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 件:

  1. 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_orderbooks top-K + trade flow)はすでに揃っている。
    • 想定ホールド時間: 秒〜分。06:00 JST で自然にフラット。
  2. 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 から、新コストモデルおよびストリーム期間バックテストを成立させるためのインフラ作業:

  1. 保有コスト(carry)ロジックの追加apply_carry()PortfolioLedger に、06:00 JST 境界クロス検出を cli/backtest.py イベントループに、backtest_runs テーブルに holding_cost_total_jpy 列を追加。ブロッカー。1〜2 日。
  2. DB-backed イベントリーダ — 現バックテスタは data/canonical/events/ の Parquet のみ読む。2026-02-17 以降のストリーム 60+ 日を活用するには stream_events_from_db() の追加か、market_stream_*data/canonical/events/ Parquet のマテリアライザが必要。2〜3 日。
  3. Per-strategy requires_session_close 属性とその配線 — Strategy 基底クラスに class attribute を追加、ランナーがそれを尊重。0.5 日。

関連ページ