Documentation

ドキュメント

コマンドリファレンス、戦略開発ワークフロー、TradingView 連携ガイド。

forge data

ヒストリカル市場データの取得・更新・管理を行います。データは alpha-strategies/data/historical/ に Parquet 形式で保存されます。

コマンド説明
forge data fetch <SYMBOL>指定シンボルのヒストリカルデータを取得・保存
forge data update保存済み全データを最新日まで差分更新
forge data update --symbol <SYMBOL>特定シンボルのみ更新
forge data list保存済みデータ一覧を表示

使用例

# 初回取得
forge data fetch USDJPY
forge data fetch CL=F
forge data fetch SPY QQQ NAS100

# 一括差分更新
forge data update

# 特定シンボルのみ更新
forge data update --symbol USDJPY

# 保存済みデータを確認
forge data list

forge strategy

戦略 JSON の作成・登録・確認を行います。戦略は JSON ファイルで定義し、バックテストや最適化の対象として登録します。

コマンド説明
forge strategy list登録済み戦略を一覧表示
forge strategy createテンプレートから戦略 JSON を作成
forge strategy save <FILE>JSON ファイルから戦略を登録
forge strategy show <ID>戦略定義 (JSON) を表示

使用例

# テンプレートから新規作成
forge strategy create --template ema_crossover --id usdjpy_ema_v1 \
  --out data/strategies/usdjpy_ema_v1.json

# JSON ファイルを登録
forge strategy save data/strategies/usdjpy_ema_v1.json

# 登録済み戦略を確認
forge strategy list

# 戦略定義を表示
forge strategy show usdjpy_ema_v1

forge backtest

戦略のバックテスト実行・履歴確認・分析を行います。結果は SQLite DB に自動保存されます。

コマンド説明
forge backtest run <SYMBOL>バックテストを実行
forge backtest wft <SYMBOL>ウォークフォワードテストを実行
forge backtest list保存済みバックテスト結果を一覧表示
forge backtest report <ID>バックテスト結果の詳細を表示
forge backtest compare複数の戦略結果を並べて比較
forge backtest chart <SYMBOL>インタラクティブ HTML チャートを生成
forge backtest diagnose <SYMBOL>パフォーマンス問題を自動診断
forge backtest monte-carlo <SYMBOL>モンテカルロシミュレーションを実行
forge backtest portfolioポートフォリオバックテストを実行
forge backtest batch複数戦略を並列バックテスト

使用例

# 基本的なバックテスト
forge backtest run USDJPY --strategy usdjpy_ema_v1

# 期間指定
forge backtest run USDJPY --strategy usdjpy_ema_v1 \
  --start 2021-01-01 --end 2024-12-31

# JSON 形式で出力
forge backtest run USDJPY --strategy usdjpy_ema_v1 --json

# ウォークフォワードテスト(5 フォールド)
forge backtest wft USDJPY --strategy usdjpy_ema_v1 --folds 5

# 結果一覧(Sharpe 降順)
forge backtest list --sort sharpe --limit 20

# 特定戦略の結果のみ
forge backtest list --strategy usdjpy_ema_v1

# インタラクティブチャートを生成してブラウザで開く
forge backtest chart USDJPY --strategy usdjpy_ema_v1

forge optimize

Optuna を使ったベイズ最適化でパラメータを効率的に探索します。過学習リスクの評価や、最適化結果の戦略への適用もできます。

コマンド説明
forge optimize run <SYMBOL>ベイズ最適化を実行
forge optimize apply <RESULT>最適化結果を戦略に適用して新規保存
forge optimize walk-forward <SYMBOL>ウォークフォワード最適化を実行
forge optimize sensitivity <SYMBOL>パラメータ感度分析(過学習リスク評価)
forge optimize history過去の最適化結果をスコアボード表示
forge optimize portfolioポートフォリオ最適配分を最適化
forge optimize cross-symbol複数銘柄への汎化性を最適化

使用例

# Sharpe Ratio を指標に 200 トライアル、4 並列で最適化
forge optimize run USDJPY --strategy usdjpy_ema_v1 \
  --metric sharpe_ratio --trials 200 -j 4 --save

# 最適化履歴を確認
forge optimize history --strategy usdjpy_ema_v1 --sort score

# 最適化結果を新しい戦略として保存
forge optimize apply data/results/usdjpy_ema_v1_opt.json \
  --to-strategy usdjpy_ema_v1_optimized

# 感度分析で過学習リスクを評価
forge optimize sensitivity USDJPY --strategy usdjpy_ema_v1_optimized

forge pine

戦略定義から TradingView 用の Pine Script v6 を自動生成します。HMM などの機械学習インジケータにも対応しています。

コマンド説明
forge pine generate --strategy <ID>Pine Script を生成してファイルに出力
forge pine preview --strategy <ID>生成される Pine Script を標準出力でプレビュー
forge pine import <FILE>.pine ファイルを戦略定義として取り込み

使用例

# Pine Script を生成(output/pinescript/ に保存)
forge pine generate --strategy usdjpy_ema_v1_optimized

# HMM モデルの学習済みパラメータを埋め込んで生成
forge pine generate --strategy cl_hmm_bb_rsi_v1 --with-training-data

# 内容をプレビュー(ファイル出力なし)
forge pine preview --strategy usdjpy_ema_v1_optimized

# 既存 .pine ファイルをインポート
forge pine import output/pinescript/usdjpy_ema_v1.pine --id usdjpy_ema_imported
生成ファイルの保存先は forge.yamlpinescript.output_path で設定します。デフォルトは output/pinescript/ です。

forge dashboard

Streamlit ベースの Web UI を起動します。バックテスト結果の可視化、戦略ランキング、アイデア管理を一画面で確認できます。

forge dashboard
forge dashboard --port 8501 --no-open

forge license

LemonSqueezy のライセンスキーを認証します。認証情報は ~/.forge/license.json にキャッシュされます。

コマンド説明
forge license activate <KEY>ライセンスキーを認証
forge license status現在のライセンス状態を表示
forge license deactivateこのデバイスのライセンスを無効化

エンドツーエンド 戦略開発ワークフロー

ヒストリカルデータの取得から自動発注まで、典型的な開発フローを示します。Claude Code などのコーディングエージェントと組み合わせると、各ステップの自動化やパラメータ探索を高速化できます。

以下のコマンドはすべて alpha-strategies/ ディレクトリから FORGE_CONFIG=forge.yaml uv run 付きで実行することを想定しています。
  • データ取得 対象シンボルのヒストリカルデータをローカルに保存します。
    forge data fetch USDJPY
  • 戦略テンプレート作成 テンプレートから戦略 JSON の雛形を生成し、パラメータを編集します。
    forge strategy create --template ema_crossover \
      --id usdjpy_ema_v1 \
      --out data/strategies/usdjpy_ema_v1.json
    
    # 生成されたファイルをエディタで編集し、パラメータを調整
    forge strategy save data/strategies/usdjpy_ema_v1.json
  • バックテスト実行 定義した戦略のパフォーマンスを過去データで検証します。
    forge backtest run USDJPY --strategy usdjpy_ema_v1
    
    # インタラクティブチャートで視覚的に確認
    forge backtest chart USDJPY --strategy usdjpy_ema_v1
  • パラメータ最適化 Optuna のベイズ最適化で最適なパラメータを探索します。
    forge optimize run USDJPY --strategy usdjpy_ema_v1 \
      --metric sharpe_ratio --trials 300 -j 4 --save
    
    # 結果を新しい戦略として保存
    forge optimize apply data/results/usdjpy_ema_v1_opt.json \
      --to-strategy usdjpy_ema_v1_optimized
  • ウォークフォワード検証 過学習を検出するために、訓練期間とテスト期間を分けた検証を行います。
    forge backtest wft USDJPY --strategy usdjpy_ema_v1_optimized \
      --folds 5
    
    # 感度分析でパラメータの堅牢性を確認
    forge optimize sensitivity USDJPY \
      --strategy usdjpy_ema_v1_optimized
  • Pine Script 生成 TradingView 用のアラートスクリプトを自動生成します。
    forge pine generate --strategy usdjpy_ema_v1_optimized
    出力先: output/pinescript/usdjpy_ema_v1_optimized.pine

TradingView への Pine Script 反映

forge pine generate で生成した .pine ファイルを TradingView に貼り付けてアラートを設定します。

  • Pine Script を開く TradingView でチャートを開き、画面下部の「Pine エディタ」タブをクリックします。
  • スクリプトを貼り付ける 生成した .pine ファイルの内容をエディタに貼り付け、「スクリプトを追加」(▶ ボタン)をクリックします。
  • アラートを設定する チャート右上のベルアイコン(アラート)→「アラートを追加」をクリック。
    • 条件: 追加したスクリプト名を選択
    • 「Webhook URL」にチェックを入れ、alpha-strike のエンドポイントを入力
    • 「メッセージ」に後述の JSON ペイロードを入力
  • アラートメッセージのヒント Pine Script 内でシグナル変数(例: longSignal)を定義しておくと、アラートの条件設定が簡単になります。
    // Pine Script 内でのアラート定義例
    longSignal = ta.crossover(ema_fast, ema_slow)
    shortSignal = ta.crossunder(ema_fast, ema_slow)
    alertcondition(longSignal, title="Long Entry", message="long")

TradingView と alpha-strike の連携

alpha-strike は TradingView のアラートを Webhook で受け取り、OANDA・moomoo 証券に自動発注します。

1. 環境変数の設定

alpha-strike/.env を作成して以下を設定します。

# 必須
WEBHOOK_PASSPHRASE=your-secret-passphrase   # 任意の秘密文字列

# OANDA 使用時
OANDA_API_KEY=your-personal-access-token
OANDA_ACCOUNT_ID=your-account-id
OANDA_ENV=PRACTICE    # 本番は LIVE

# moomoo 使用時
MOOMOO_HOST=127.0.0.1
MOOMOO_PORT=11111
MOOMOO_TRD_ENV=SIMULATE   # 本番は REAL

2. Webhook URL

TradingView のアラート Webhook URL に以下を設定します:
http://<your-server>:8080/webhook

3. ペイロード仕様

TradingView のアラートメッセージに JSON を記述します。

{
  "passphrase": "your-secret-passphrase",
  "broker": "oanda",
  "asset_class": "FX",
  "action": "buy",
  "ticker": "USDJPY",
  "quantity": 1000
}
フィールド説明値の例
passphrase
必須
.env の WEBHOOK_PASSPHRASE と一致させること"my-secret"
broker
必須
発注先の証券会社"oanda" / "moomoo"
asset_class
必須
アセットクラス"FX" / "COMMODITY" / "US" / "INDEX"
action
必須
注文方向"buy" / "sell"
ticker
必須
銘柄コード(TradingView のシンボル名)"USDJPY" / "XAUUSD"
quantity
必須
注文数量(0 より大きい正の数)1000 / 0.1

4. ティッカーと OANDA instrument の対応

asset_classticker 例OANDA instrument
FXUSDJPYUSD_JPY
COMMODITYXAUUSDXAU_USD
INDEXNAS100NAS100_USD
USAAPLAAPL_USD

5. 動作確認

# ヘルスチェック
curl http://localhost:8080/health
# → {"status":"ok"}

# テスト発注(PRACTICE / SIMULATE 環境で確認)
curl -X POST http://localhost:8080/webhook \
  -H "Content-Type: application/json" \
  -d '{"passphrase":"your-secret","broker":"oanda","asset_class":"FX","action":"buy","ticker":"USDJPY","quantity":1000}'
Documentation

Documentation

Command reference, strategy development workflow, and TradingView integration guide.

forge data

Fetch, update, and manage historical market data. Data is stored as Parquet files under alpha-strategies/data/historical/.

CommandDescription
forge data fetch <SYMBOL>Fetch and save historical data for a symbol
forge data updateIncrementally update all saved data to today
forge data update --symbol <SYMBOL>Update a specific symbol only
forge data listList all saved datasets

Examples

# Initial fetch
forge data fetch USDJPY
forge data fetch CL=F
forge data fetch SPY QQQ NAS100

# Incremental update (all symbols)
forge data update

# Update a single symbol
forge data update --symbol USDJPY

# Check what's saved
forge data list

forge strategy

Create, register, and inspect strategy JSON definitions. Strategies must be registered before use in backtests or optimization.

CommandDescription
forge strategy listList all registered strategies
forge strategy createGenerate a strategy JSON from a template
forge strategy save <FILE>Register a strategy from a JSON file
forge strategy show <ID>Print the strategy definition (JSON)

Examples

# Create from template
forge strategy create --template ema_crossover --id usdjpy_ema_v1 \
  --out data/strategies/usdjpy_ema_v1.json

# Register after editing the JSON
forge strategy save data/strategies/usdjpy_ema_v1.json

# List registered strategies
forge strategy list

# Inspect a strategy definition
forge strategy show usdjpy_ema_v1

forge backtest

Run backtests, view history, and analyse results. All results are automatically saved to SQLite.

CommandDescription
forge backtest run <SYMBOL>Run a backtest
forge backtest wft <SYMBOL>Run a walk-forward test
forge backtest listList saved backtest results
forge backtest report <ID>Show detailed result for a run
forge backtest compareCompare multiple strategy results side by side
forge backtest chart <SYMBOL>Generate an interactive HTML chart
forge backtest diagnose <SYMBOL>Auto-diagnose performance issues
forge backtest monte-carlo <SYMBOL>Run Monte Carlo simulation
forge backtest portfolioRun a portfolio backtest
forge backtest batchParallel backtest across multiple strategies

Examples

# Basic backtest
forge backtest run USDJPY --strategy usdjpy_ema_v1

# With date range
forge backtest run USDJPY --strategy usdjpy_ema_v1 \
  --start 2021-01-01 --end 2024-12-31

# JSON output
forge backtest run USDJPY --strategy usdjpy_ema_v1 --json

# Walk-forward test (5 folds)
forge backtest wft USDJPY --strategy usdjpy_ema_v1 --folds 5

# List results sorted by Sharpe
forge backtest list --sort sharpe --limit 20

# Open interactive chart in browser
forge backtest chart USDJPY --strategy usdjpy_ema_v1

forge optimize

Bayesian parameter search with Optuna. Includes overfitting risk evaluation, walk-forward optimization, and one-click apply.

CommandDescription
forge optimize run <SYMBOL>Run Bayesian optimization
forge optimize apply <RESULT>Apply results to a new strategy
forge optimize walk-forward <SYMBOL>Walk-forward optimization
forge optimize sensitivity <SYMBOL>Parameter sensitivity analysis (overfitting check)
forge optimize historyScoreboard of past optimization runs
forge optimize portfolioOptimize portfolio allocation weights
forge optimize cross-symbolOptimize across multiple symbols for generalization

Examples

# 300 trials, 4 workers, maximize Sharpe
forge optimize run USDJPY --strategy usdjpy_ema_v1 \
  --metric sharpe_ratio --trials 300 -j 4 --save

# View optimization history
forge optimize history --strategy usdjpy_ema_v1 --sort score

# Apply best result as a new strategy
forge optimize apply data/results/usdjpy_ema_v1_opt.json \
  --to-strategy usdjpy_ema_v1_optimized

# Check parameter robustness
forge optimize sensitivity USDJPY --strategy usdjpy_ema_v1_optimized

forge pine

Auto-generate TradingView Pine Script v6 from a strategy definition. Supports machine-learning indicators such as HMM by embedding trained parameters.

CommandDescription
forge pine generate --strategy <ID>Generate Pine Script and write to file
forge pine preview --strategy <ID>Preview Pine Script in stdout (no file written)
forge pine import <FILE>Parse a .pine file and import as a strategy

Examples

# Generate Pine Script (saved to output/pinescript/)
forge pine generate --strategy usdjpy_ema_v1_optimized

# Embed trained HMM parameters
forge pine generate --strategy cl_hmm_bb_rsi_v1 --with-training-data

# Preview without writing to disk
forge pine preview --strategy usdjpy_ema_v1_optimized

# Import existing .pine file as a strategy
forge pine import output/pinescript/usdjpy_ema_v1.pine --id usdjpy_ema_imported
The output path is configured via pinescript.output_path in forge.yaml. Default: output/pinescript/.

forge dashboard

Launch the Streamlit-based Web UI for backtest visualisation, strategy rankings, and idea tracking.

forge dashboard
forge dashboard --port 8501 --no-open

forge license

Activate and manage your LemonSqueezy license. Activation data is cached in ~/.forge/license.json.

CommandDescription
forge license activate <KEY>Activate a license key on this device
forge license statusShow current license status
forge license deactivateDeactivate this device

End-to-End Strategy Development Workflow

A typical flow from raw data to live execution. This pairs naturally with a coding agent (e.g. Claude Code) for automated parameter exploration and strategy generation.

All commands below assume you are running from alpha-strategies/ with FORGE_CONFIG=forge.yaml uv run prepended.
  • Fetch historical data
    forge data fetch USDJPY
  • Create a strategy from a template Generate a JSON scaffold, edit parameters, then register it.
    forge strategy create --template ema_crossover \
      --id usdjpy_ema_v1 \
      --out data/strategies/usdjpy_ema_v1.json
    
    # Edit the JSON, then register
    forge strategy save data/strategies/usdjpy_ema_v1.json
  • Run a backtest
    forge backtest run USDJPY --strategy usdjpy_ema_v1
    
    # Visual equity curve
    forge backtest chart USDJPY --strategy usdjpy_ema_v1
  • Optimize parameters Bayesian search with Optuna, then apply the best result.
    forge optimize run USDJPY --strategy usdjpy_ema_v1 \
      --metric sharpe_ratio --trials 300 -j 4 --save
    
    forge optimize apply data/results/usdjpy_ema_v1_opt.json \
      --to-strategy usdjpy_ema_v1_optimized
  • Walk-forward validation Detect overfitting with out-of-sample testing.
    forge backtest wft USDJPY --strategy usdjpy_ema_v1_optimized \
      --folds 5
    
    forge optimize sensitivity USDJPY \
      --strategy usdjpy_ema_v1_optimized
  • Generate Pine Script Export a TradingView alert script from the optimized strategy.
    forge pine generate --strategy usdjpy_ema_v1_optimized
    Output: output/pinescript/usdjpy_ema_v1_optimized.pine

Deploying Pine Script to TradingView

Paste the generated .pine file into TradingView and set up an alert to trigger alpha-strike.

  • Open the Pine Editor Open a chart in TradingView and click the "Pine Editor" tab at the bottom.
  • Paste the script Copy the contents of the generated .pine file and paste it into the editor. Click "Add to chart" (▶).
  • Create an alert Click the bell icon (Alerts) → "Create alert". Set the condition to your script, enable "Webhook URL", and paste the alpha-strike endpoint.
  • Tip: in-script alert conditions Define alertcondition in Pine Script for cleaner alert setup.
    longSignal = ta.crossover(ema_fast, ema_slow)
    alertcondition(longSignal, title="Long Entry", message="long")

Connecting TradingView to alpha-strike

alpha-strike receives TradingView webhook alerts and forwards orders to OANDA or moomoo.

1. Configure environment variables

Create alpha-strike/.env from the provided example:

# Required
WEBHOOK_PASSPHRASE=your-secret-passphrase

# OANDA
OANDA_API_KEY=your-personal-access-token
OANDA_ACCOUNT_ID=your-account-id
OANDA_ENV=PRACTICE    # or LIVE

# moomoo
MOOMOO_HOST=127.0.0.1
MOOMOO_PORT=11111
MOOMOO_TRD_ENV=SIMULATE   # or REAL

2. Webhook URL

Set the TradingView alert Webhook URL to:
http://<your-server>:8080/webhook

3. Payload format

{
  "passphrase": "your-secret-passphrase",
  "broker": "oanda",
  "asset_class": "FX",
  "action": "buy",
  "ticker": "USDJPY",
  "quantity": 1000
}
FieldDescriptionExample
passphrase
required
Must match WEBHOOK_PASSPHRASE in .env"my-secret"
broker
required
Target broker"oanda" / "moomoo"
asset_class
required
Asset class"FX" / "COMMODITY" / "US" / "INDEX"
action
required
Order direction"buy" / "sell"
ticker
required
Symbol (TradingView notation)"USDJPY" / "XAUUSD"
quantity
required
Order size (positive number)1000 / 0.1

4. Ticker to OANDA instrument mapping

asset_classtickerOANDA instrument
FXUSDJPYUSD_JPY
COMMODITYXAUUSDXAU_USD
INDEXNAS100NAS100_USD
USAAPLAAPL_USD

5. Verify connectivity

# Health check
curl http://localhost:8080/health
# → {"status":"ok"}

# Test order (use PRACTICE / SIMULATE environment)
curl -X POST http://localhost:8080/webhook \
  -H "Content-Type: application/json" \
  -d '{"passphrase":"your-secret","broker":"oanda","asset_class":"FX","action":"buy","ticker":"USDJPY","quantity":1000}'