# 日米業種リードラグ投資戦略

## 概要

本機能は、論文「部分空間正則化付き主成分分析を用いた日米業種リードラグ投資戦略」（人工知能学会 金融情報学研究会 FIN-036, 2026）に基づく取引戦略を実装したものです。

米国市場と日本市場の取引時間の非同期性（米国市場が先に閉まり、翌日に日本市場が開く）を利用し、米国セクターETFのリターンから日本セクターETFのリターンを予測するロング・ショート戦略です。

### 論文情報

- **タイトル**: 部分空間正則化付き主成分分析を用いた日米業種リードラグ投資戦略
- **著者**: 中川 慧（大阪公立大学 / MATSUO Institute）, 竹本 祐樹（独立研究者）, 久保 健二（東京大学 / MATSUO Institute）, 加藤 真大（みずほDLフィナンシャルテクノロジー / 大阪公立大学）
- **掲載**: 人工知能学会第二種研究会資料 2026巻 FIN-036号 p.76-83
- **URL**: https://www.jstage.jst.go.jp/article/jsaisigtwo/2026/FIN-036/2026_76/_article/-char/ja

## 戦略の仕組み

### リードラグ仮説

取引時間帯の非同期性により、先に閉まる市場（米国）で確定した業種別情報が、後に開く市場（日本）の寄付きから日中にかけて反映されるという仮説に基づいています。

### データ

| 項目 | 詳細 |
|------|------|
| **情報集合（入力）** | 米国セクターETF (Select Sector SPDR) 11本の当日 Close-to-Close リターン |
| **予測対象（出力）** | 日本セクターETF (TOPIX-17 NEXT FUNDS) 17本の翌営業日 Open-to-Close リターン |

### 米国セクターETF (11本)

| ティッカー | セクター |
|-----------|---------|
| XLB | Materials（素材） |
| XLC | Communication Services（通信サービス） |
| XLE | Energy（エネルギー） |
| XLF | Financials（金融） |
| XLI | Industrials（資本財） |
| XLK | Technology（情報技術） |
| XLP | Consumer Staples（生活必需品） |
| XLRE | Real Estate（不動産） |
| XLU | Utilities（公益事業） |
| XLV | Health Care（ヘルスケア） |
| XLY | Consumer Discretionary（一般消費財） |

### 日本セクターETF (TOPIX-17, 17本)

| コード | 業種 |
|--------|------|
| 1617.T | 食品 |
| 1618.T | エネルギー資源 |
| 1619.T | 建設・資材 |
| 1620.T | 素材・化学 |
| 1621.T | 医薬品 |
| 1622.T | 自動車・輸送機 |
| 1623.T | 鉄鋼・非鉄 |
| 1624.T | 機械 |
| 1625.T | 電機・精密 |
| 1626.T | 情報通信・サービスその他 |
| 1627.T | 電力・ガス |
| 1628.T | 運輸・物流 |
| 1629.T | 商社・卸売 |
| 1630.T | 小売 |
| 1631.T | 銀行 |
| 1632.T | 金融（除く銀行） |
| 1633.T | 不動産 |

## アルゴリズム

### 部分空間正則化付きPCA

1. **結合リターン行列**: 米国と日本のセクターリターンを結合して Z = [R_US, R_JP] を構成
2. **標本共分散行列の計算**: S = Z^T Z / (T-1)
3. **部分空間正則化 (Ledoit-Wolf型シュリンケージ)**: S_reg = (1-α)S + α·diag(S)
4. **固有値分解**: S_reg の上位 k 個の固有ベクトルを抽出
5. **予測行列の構成**: 固有ベクトルを米国部分(V_us)と日本部分(V_jp)に分割し、予測行列 B = V_jp · V_us^T を構成
6. **シグナル生成**: predicted_JP = B · r_US（米国の当日リターンから日本の翌日リターンを予測）

### ポートフォリオ構成

- 予測リターンの上位 N 銘柄をロング（買い）
- 予測リターンの下位 N 銘柄をショート（売り）
- ドルニュートラル（ロングとショートの金額が等しい）

## パラメータ

| パラメータ | デフォルト値 | 説明 |
|-----------|------------|------|
| `lookback` | 120 | 推定に使う過去データの日数 |
| `n_components` | 3 | PCA主成分数（抽出する共通ファクター数） |
| `alpha` | 0.5 | 正則化パラメータ（0=正則化なし, 1=完全正則化） |
| `top_n` | 5 | ロング/ショート各サイドのポジション数 |
| `period_days` | 730 | バックテスト用データ期間（日） |

## 使い方

### Web UI

1. `/lead-lag` にアクセス
2. パラメータを設定
3. 「シグナル生成」ボタンで最新の売買シグナルを生成
4. 「バックテスト実行」で過去データに対するパフォーマンスを検証

### CLI（Python直接実行）

```bash
# シグナル生成
python3 python/lead_lag_strategy.py --generate-signal --lookback 120 --n-components 3 --alpha 0.5 --top-n 5

# バックテスト
python3 python/lead_lag_strategy.py --backtest --lookback 120 --n-components 3 --alpha 0.5 --top-n 5 --period-days 730
```

## 必要な依存パッケージ

```bash
pip install numpy yfinance
```

## ファイル構成

```
python/
  lead_lag_strategy.py        # PCAロジック・データ取得・バックテスト

app/
  Http/Controllers/Finance/
    LeadLagController.php      # Webコントローラ
  Services/Finance/
    LeadLagService.php         # Pythonスクリプト呼び出しサービス

resources/views/finance/lead_lag/
  index.blade.php              # メインダッシュボード
  _signal_table.blade.php      # シグナルテーブル部分テンプレート
  _us_returns_table.blade.php  # 米国リターンテーブル
  _backtest_summary.blade.php  # バックテスト結果サマリ
  _predictions_table.blade.php # 全予測リターンテーブル

storage/app/lead_lag/
  latest_signal.json           # 最新シグナル（自動生成）
  backtest_result.json         # バックテスト結果（自動生成）
  status.json                  # 実行ステータス
  lead_lag.log                 # 実行ログ
```

## バックテスト指標

| 指標 | 説明 |
|------|------|
| **年率リターン** | 年間の平均リターン |
| **シャープレシオ** | リスク調整後リターン（年率） |
| **最大ドローダウン** | 最大下落幅 |
| **勝率** | リターンがプラスだった日の割合 |
| **トータルリターン** | バックテスト期間全体のリターン |

## 注意事項

- 本機能は研究・教育目的で実装されています。実際の投資判断にそのまま使用することは推奨しません。
- 過去のバックテスト結果は将来のパフォーマンスを保証するものではありません。
- データ取得に Yahoo Finance API を使用しているため、API制限により一時的にデータ取得に失敗する場合があります。
- 日本のTOPIX-17 ETFは流動性が低い銘柄もあるため、実際の取引では約定コスト・スリッページに注意が必要です。
