Communityコーディング&開発github.com

milesdeutscher/garch-method

ボラティリティ予測とポジションサイジングをウォークフォワードGARCH(1,1)で実行します。ユーザーがボラティリティ予測、ポジションサイジング、「いくら投入すべきか」、ボラティリティターゲット、リスクスロットル、ストーム/平穏レジームについて質問した場合、または既存の戦略をボラティリティターゲットで改善できるかテストしたい場合に使用します。任意のティッカー(yfinance)または日付+終値列を持つCSVで動作します。「どのくらい」に答えます。「どちら方向」には答えません。

garch-method とは?

GARCH Methodは、金融時系列データにおけるボラティリティ(値動きの大きさ)を予測し、それに基づいてポジションサイズを決定するAIエージェントスキルです。ウォークフォワードGARCH(1,1)モデルを使用して、将来のボラティリティを推定し、「いくら投資すべきか」というポジションサイジングの質問に答えます。方向性予測は行わず、あくまでも値動きの規模(ボラティリティ)を予測します。yfinanceから取得した任意のティッカー、または日付と終値列を含むCSVファイルを入力として使用できます。主な機能として、GARCH予測の実行(`garch_forecast.py`)、ボラティリティターゲットに基づくポジションサイズの計算(`vol_target.py`)、および固定サイズとボラティリティターゲット戦略の比較(`compare.py`)の3つのスクリプトを備えています。すべてのスクリプトはJSON出力をサポートし、`uv run`で依存関係が自動解決されるため、pipインストールは不要です。Claude Code、Cursor、Codex、および一般的なPython実行環境で動作します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/milesdeutscher/garchmethod/tree/main/skills/garch

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

GARCH Method — ボラティリティ予測 + ポジションサイジング

このスキルは、個人投資家が決して尋ねず、すべてのファンドが毎日尋ねる質問に答えます:いくら?

これは方向性を予測しません。GARCHは値動きの規模 — 明日の動きがどれほど激しいか — を予測します。どちらの方向に行くかではありません。結果を提示する際には、これをユーザーに必ず伝えてください。

3つのツール

すべてのスクリプトは scripts/ にあり、uv run で実行します(依存関係はインライン・メタデータにより自動解決されます — pipインストール不要)。

1. garch_forecast.py — 予測

ウォークフォワードGARCH(1,1)、先読みゼロ(パラメータは21日ごとに拡張ウィンドウ上で再推定。再フィッティング間の再帰は過去データのみを使用して前方にロール)。

uv run scripts/garch_forecast.py --csv prices.csv --json
uv run scripts/garch_forecast.py --ticker BTC-USD --json

出力:1日先のボラティリティ予測(日次+年率)、過去1年間に対するボラティリティパーセンタイル、レジーム(平穏 / 通常 / ストーム)。

2. vol_target.py — サイズ

核となる考え方:size = target_vol / forecast_vol、[0.25倍, 2.0倍] でキャップ。

uv run scripts/vol_target.py --csv prices.csv --target-vol 15 --json

出力:ポジションサイズ倍率。「ベースラインの0.6倍で実行」 — それが答えです。

3. compare.py — 正直なテスト

同じシグナルを2回(固定サイズとボラティリティターゲット)実行し、両方の資産曲線と統計を並べて表示します。EMA 9/21クロスオーバーのデモが付属しており、任意の戦略を --signals mine.csv(列:date, signal({-1,0,1}))で受け入れます。

uv run scripts/compare.py --csv prices.csv --target-vol 58 --chart equity.png --json
uv run scripts/compare.py --csv prices.csv --signals mine.csv

出力:CAGR、年率ボラティリティ、シャープレシオ、最大ドローダウン、最悪の月、最終資産 — 両方のバージョン — に加えて、ストームレジームが網掛けされた資産曲線チャート。

JSON契約

すべてのスクリプトは --json をサポートします。核となる出力形式:

{
  "as_of": "2026-05-23",
  "forecast_vol_annualized_pct": 41.2,
  "vol_percentile_1y": 78.0,
  "regime": "storm",
  "position_size_multiplier": 0.6,
  "note": "GARCH forecasts magnitude (volatility), not direction."
}

3つの構成パターン

A. サイジングレイヤー — 任意の既存の戦略に組み込む。あなたの戦略が if(実行するかどうか)を決定し、このスキルが how much(いくら実行するか)を決定します。戦略のシグナルに position_size_multiplier を掛けるだけです。

B. リスクスロットル — スタンドアロンのキルスイッチ。regime == "storm" の場合、シグナルに関係なくすべてのエクスポージャーをその倍率に削減します。ポジションを管理する任意のエージェントと連携します。

C. 比較ハーネス — 任意の戦略を信頼する前に、compare.py で実行し、ボラティリティターゲットがそのシャープレシオ/ドローダウンを改善するかどうかを確認します。サイジングが役に立たない場合、その戦略のエッジは実際の市場環境を生き残るには弱すぎる可能性があります。

レジーム方向性スキル(例:マルコフ式の強気/弱気分類器)とクリーンに構成できます。それらの出力は which way(どちらの方向)に答え、これは how much(いくら)に答えます。両方を掛け合わせます。

デフォルトと規則

  • 暗号資産:--periods-per-year 365(デフォルト)。株式:--periods-per-year 252。
  • ターゲットボラティリティ:15%は安全な控えめなデフォルト値。無レバレッジ戦略とのリスク調整済み比較では、ターゲットを戦略自身の実現ボラティリティとほぼ同じに設定します。
  • データ:yfinanceティッカー(インターネット接続が必要)または date + close 列を持つ任意のCSV — ユーザーがすでに実行しているパイプラインにそのまま組み込めます。
  • 最低履歴:最初の予測の前に約510日分の日次観測値が必要。

正直ルール(譲歩不可)

  1. GARCHの出力を方向性の判断として提示しないでください。
  2. 比較結果を報告する際、ドローダウンや最悪の月の数値を隠さないでください。
  3. ボラティリティターゲットがユーザーの戦略を改善しない場合、それを明確に述べてください — その結果も同様に価値があります。

関連スキル