戦略 JSON の作成から、バックテスト実行・ベイズ最適化・ウォークフォワード検証まで一気通貫で学べる AlphaForge 入門ガイドです。 CL=F(WTI原油先物)を例題に、HMM + ボリンジャーバンド + RSI の複合戦略を実装します。
AlphaForge は JSON で定義した戦略を vectorbt で高速シミュレーションし、 Optuna によるベイズ最適化と ウォークフォワード検証 で過学習を防ぐ 定量的投資戦略開発 CLI です。 設定はすべて JSON で管理するため、Claude などのコーディングエージェントとの連携にも最適化されています。
| コンポーネント | 役割 |
|---|---|
forge | シミュレーション・最適化エンジン本体 |
strategies/ | 戦略 JSON・最適化結果・実行ログの管理ワークスペース |
strike | TradingView Webhook を受け取り外部 API に自動送信するサーバー |
インストーラーが最新バイナリをダウンロードします(macOS / Linux 例)。Windows / 手動配置は インストールガイド を参照してください。インストール直後から Trial プラン(Whop 登録不要)で実行できます。有料プラン(Lifetime / Annual / Monthly)を購入した場合のみ forge system auth login で Whop OAuth 認証してください。
# 最新バイナリをインストール(macOS / Linux)
curl -sSL https://alforge-labs.github.io/install.sh | bash
# (任意)有料プラン購入後の認証
forge system auth login
作業ディレクトリに forge.yaml(設定ファイル)と strategies/ ディレクトリが生成されます。
mkdir my-strategies && cd my-strategies
forge system init
# → forge.yaml, strategies/, data/ が作成されます
Yahoo Finance からデータをダウンロードしてローカルキャッシュに保存します。
# CL=F(WTI原油先物)の過去 5 年分を取得
forge data fetch CL=F --period 5y
# SPY, QQQ なども同様に取得可能
forge data fetch SPY QQQ --period 5y
AlphaForge の戦略はすべて JSON ファイルで定義します。
以下は CL=F 向けの HMM + ボリンジャーバンド + RSI 複合戦略の例です。
strategies/cl_hmm_bb_rsi_v1.json として保存してください。
{
"strategy_id": "cl_hmm_bb_rsi_v1",
"name": "CL HMM + BB + RSI v1",
"version": "1.0.0",
"description": "CL=F 向け HMM レジーム × ボリンジャーバンド × RSI 複合戦略",
"target_symbols": ["CL=F"],
"asset_type": "futures",
"timeframe": "1d",
"parameters": {
"bb_length": 20,
"bb_std": 2.0,
"rsi_length": 14,
"rsi_entry": 40,
"rsi_exit": 60
},
"indicators": [
{ "id": "bb_lower", "type": "BB", "params": { "length": 20, "std": 2.0, "line": "lower" } },
{ "id": "bb_upper", "type": "BB", "params": { "length": 20, "std": 2.0, "line": "upper" } },
{ "id": "rsi", "type": "RSI", "params": { "length": 14 } },
{ "id": "hmm_state","type": "HMM", "params": { "n_states": 2, "features": ["returns","volatility"] } }
],
"entry_conditions": {
"long": {
"logic": "AND",
"conditions": [
{ "left": "close", "op": "crosses_above", "right": "bb_lower" },
{ "left": "rsi", "op": "lt", "right": "rsi_entry" },
{ "left": "hmm_state", "op": "eq", "right": 1 }
]
}
},
"exit_conditions": {
"long": {
"logic": "OR",
"conditions": [
{ "left": "close", "op": "crosses_above", "right": "bb_upper" },
{ "left": "rsi", "op": "gt", "right": "rsi_exit" }
]
}
},
"risk_management": {
"leverage": 5.0,
"position_sizing_method": "risk_based",
"risk_per_trade_pct": 1.5,
"max_positions": 1
},
"optimizer_config": {
"param_ranges": {
"bb_length": { "min": 10, "max": 40, "step": 5 },
"bb_std": { "min": 1.5, "max": 3.0, "step": 0.5 },
"rsi_length": { "min": 10, "max": 20, "step": 2 },
"rsi_entry": { "min": 30, "max": 50, "step": 5 },
"rsi_exit": { "min": 55, "max": 75, "step": 5 }
},
"constraints": { "min_trades": 10 },
"metric": "sharpe_ratio"
}
}
hmm_state は HMM が検出した市場レジームです。
1 が「上昇トレンド」レジームに対応することが多いですが、
バックテスト後に状態の意味を確認して調整してください。
FORGE_CONFIG=./forge.yaml uv run forge backtest run CL=F \
--strategy cl_hmm_bb_rsi_v1 \
--start 2019-01-01 \
--end 2024-12-31
FORGE_CONFIG=./forge.yaml uv run forge backtest run CL=F \
--strategy cl_hmm_bb_rsi_v1 \
--json | jq '.summary'
出力例:
{
"symbol": "CL=F",
"strategy": "cl_hmm_bb_rsi_v1",
"period": "2019-01-01 to 2024-12-31",
"total_return": 0.892,
"cagr": 0.136,
"sharpe_ratio": 1.07,
"max_drawdown": -0.183,
"total_trades": 24,
"win_rate": 0.583
}
Grid Search と異なり、Optuna によるベイズ最適化は過去の試行結果を参考にしながら
効率的に最適パラメータを探索します。
optimizer_config.param_ranges で定義した範囲を探索します。
FORGE_CONFIG=./forge.yaml uv run forge optimize run CL=F \
--strategy cl_hmm_bb_rsi_v1 \
--trials 200 \
--metric sharpe_ratio \
--save
FORGE_CONFIG=./forge.yaml uv run forge optimize history \
--strategy cl_hmm_bb_rsi_v1
出力例(スコアボード形式):
Timestamp Sharpe CAGR MaxDD bb_length bb_std rsi_length rsi_entry rsi_exit
20260512_103200 1.24 15.3% -16.1% 25 2.0 12 35 65
20260511_180415 1.18 14.7% -17.4% 20 2.0 14 40 60
20260510_094822 1.15 14.2% -18.2% 25 2.5 12 35 60
結果ファイルは optimize run --save の出力に表示され、data/results/ 配下に保存されます。
FORGE_CONFIG=./forge.yaml uv run forge optimize apply \
data/results/optimize_cl_hmm_bb_rsi_v1_<timestamp>.json \
--to-strategy cl_hmm_bb_rsi_v1
ウォークフォワード検証(Walk-Forward Test)は、時系列データを訓練期間と検証期間に分割し 「未知のデータでも機能するか」を評価する手法です。 AlphaForge は訓練・検証の分割を自動で繰り返し、汎化性能を統計的に評価します。
FORGE_CONFIG=./forge.yaml uv run forge optimize walk-forward CL=F \
--strategy cl_hmm_bb_rsi_v1_optimized \
--windows 5 \
--metric sharpe_ratio
FORGE_CONFIG=./forge.yaml uv run forge optimize walk-forward CL=F \
--strategy cl_hmm_bb_rsi_v1_optimized \
--windows 5 --json | jq '.windows'
出力例:
Walk-Forward Test Report — cl_hmm_bb_rsi_v1_optimized / CL=F
Folds: 6 | Train: 24M | Test: 6M | Step: 6M
Fold Train Period Test Period Sharpe CAGR
1 2019-01 – 2020-12 2021-01 – 2021-06 1.15 14.2%
2 2019-07 – 2021-06 2021-07 – 2021-12 0.98 11.7%
3 2020-01 – 2021-12 2022-01 – 2022-06 1.22 16.1%
4 2020-07 – 2022-06 2022-07 – 2022-12 0.87 9.8%
5 2021-01 – 2022-12 2023-01 – 2023-06 1.31 18.4%
6 2021-07 – 2023-06 2023-07 – 2023-12 1.09 13.2%
Avg Sharpe: 1.10 | Avg CAGR: 13.9% | WF Efficiency: 89%
| 指標 | 説明 | 目安 |
|---|---|---|
CAGR |
年率複利成長率(Compound Annual Growth Rate)。年あたりの平均リターン。 | 10% 以上が目安 |
Sharpe Ratio |
リターンをリスク(標準偏差)で割ったリスク調整後リターン。高いほど効率的。 | 1.0 以上が良好 |
Max Drawdown |
累積リターンの最大下落幅。小さいほどリスクが低い。 | -20% 未満が目安 |
Win Rate |
利益が出たトレードの割合。50% 以上が目安だが Sharpe と合わせて評価する。 | 50% 以上 |
WF Efficiency |
ウォークフォワード検証の効率。過学習の指標として使用。 | 80% 以上 |
HMM の状態番号(0, 1, ...)は学習の都度変わります。
バックテスト後に forge backtest run <SYMBOL> --strategy <strategy_id> --regime で
各状態の平均リターン・ボラティリティを確認して、「上昇トレンド」状態を特定してください。
最適化後に forge pine generate --strategy <strategy_id> を実行すると
TradingView Pine Script v6 のコードが生成されます。
アラートを alpha-strike に送信することで自動実行が可能です。
パラメータ数が 3〜5 個の場合は 100〜200 試行で十分な探索が可能です。 パラメータ数が多い場合や精度を高めたい場合は 500〜1000 試行を推奨します。
forge optimize run CL=F --strategy cl_hmm_bb_rsi_v1 --trials 500 --metric sharpe_ratio --save