backtesting について
クオンツ研究者や戦略開発者向けの Python バックテストスキルで、データから研究、指標、パラメーター設定、検証までを扱います。イベント駆動型戦略、リスク指標、ポートフォリオ分析、シミュレーション、ウォークフォワード検証を numpy、pandas、scipy で実行します。
主な機能
- 0130 種類以上のリスク・パフォーマンス比率
- 0210 種類の指標分類
- 038 戦略を備えたイベント駆動型エンジン
- 04ウォークフォワード検証とパラメータースイープ
- 05将来シミュレーションとストレステスト
- 06ポートフォリオ最適化とファンダメンタル比率
活用シーン
- 01価格データで売買戦略を評価
- 02パラメータースイープで戦略設定を比較
- 03ウォークフォワード分割で頑健性を検証
- 04ポートフォリオ収益とストレスシナリオをシミュレーション
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gauss314/ skills --skill backtestingインストール後、Claude Code で/backtestingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/contrarian_bbands_returns.csvdefaults.jsonfrontier.csvmomentum_sma50_200_returns.csvmulti_asset_prices.csvmulti_ma_3_5_8_13_returns.csvsample_portfolios.jsonsp500_close.csvsp500_returns.csvtrend_bbands_combo_returns.csvvalidation_cases.jsonreferences/BACKTESTING_THEORY.mdFEATURES.mdOTHER_FEATURES.mdRATIOS.mdSIMULATIONS.mdVALIDATION.mdscripts/__init__.pybacktesting.pycopulas.pydistributions.pyengine.pyforward.pyfundamental_ratios.pyindicators.pyratios.pysimulations.pyvalidate.pytests/__init__.pytest_ratios.py詳細
バックテスト — フルバックテストスキル
このスキルは、講座の教材で紹介されている5段階のフルバックテスト手法を実装しています。 データ → リサーチ → 指標 → パラメーター化 → 検証。以下を提供します。
- 30種類以上のリスク/パフォーマンス比率(フラットな関数、NumPy によるベクトル化、クラス不使用)
- 講座の分類に沿った10種類の指標クラス(トレンドフォロー、オシレーター、逆張り、フロー、複合、離散カウント、季節性、統計、参照、ファンダメンタル)
- イベント駆動型バックテストエンジンと8種類の組み込み戦略
- 将来予測シミュレーション(Johnson SU 周辺分布+t/ガウシアンコピュラ)
- ポートフォリオ理論(Markowitz 効率的フロンティア、ポートフォリオ・オブ・ポートフォリオ)
- ウォークフォワード交差検証(IS/OOS 分割+ギャップ)
- ストレステスト(パラメトリックなシナリオショック)
- ファンダメンタル分析(Altman Z、Piotroski F、DuPont)
すべてのスクリプトは numpy、pandas、scipy のみを使用します。大規模な依存関係はありません。
Gauss314 Skills Repository の一部です。
ファイル一覧
skills/backtesting/
├── SKILL.md ← This file
├── references/
│ ├── BACKTESTING_THEORY.md ← Marco conceptual: GIGO, trilema, 5 etapas (ES)
│ ├── RATIOS.md ← Fórmulas, convención de retornos, advertencias (ES)
│ ├── FEATURES.md ← Taxonomía de 10 clases de indicadores con edges (ES)
│ ├── SIMULATIONS.md ← Pipeline Johnson SU + cópula (ES)
│ ├── VALIDATION.md ← Suite de validación de 4 niveles (ES)
│ └── OTHER_FEATURES.md ← Fundamental, Sentimiento, Exógenos (ES)
├── assets/
│ ├── sp500_returns.csv ← SPY benchmark daily returns (lin + log), 1980-today
│ ├── momentum_sma50_200_returns.csv ← SMA(50)/SMA(200) crossover strategy returns
│ ├── contrarian_bbands_returns.csv ← Bollinger Band contrarian strategy returns
│ ├── sample_portfolios.json ← Real investor portfolios (Buffett, Dalio, Ackman, 60/40)
│ ├── defaults.json ← Default parameters (VaR alpha, windows, etc.)
│ └── validation_cases.json ← 6 known cases for ratio validation
├── scripts/
│ ├── __init__.py
│ ├── ratios.py ← 30+ flat numpy functions for all risk/performance ratios
│ ├── indicators.py ← 10 classes of technical/statistical/fundamental indicators
│ ├── engine.py ← Event-driven BacktestEngine with 8 built-in strategies
│ ├── backtesting.py ← CLI: run, sweep, walkforward, montecarlo, optmpt, event, validate
│ ├── simulations.py ← CLI: marginal, copula, run, portfolio, scenarios
│ ├── forward.py ← CLI: project, risk, stress, summary
│ ├── distributions.py ← Fit + KS test for Normal/t/NCt/Laplace/JohnsonSU
│ ├── copulas.py ← t/Gaussian/Clayton/Gumbel/Frank copulas + sampling
│ ├── fundamental_ratios.py ← Income/balance/cashflow metrics, DuPont, Altman Z, Piotroski
│ └── validate.py ← 4-level validation: CLI modes, math consistency, edge cases, regression
└── tests/
└── test_ratios.py ← 18 pytest tests for core ratios
各ファイルの役割
| ファイル | 役割 | 主な関数/モード |
|---|---|---|
ratios.py | 中核ライブラリです。すべての比率は1次元配列を受け取るフラットな関数です。 | sharpe_ratio、max_drawdown、var_all、cvar_all、kelly_fraction、payoff_ratio、profit_factor、rachev_a/b/c、common_sense_ratio、ruin_curve、compute_all |
indicators.py | 講座の分類に含まれるあらゆるタイプを網羅した、10種類の指標クラスです。 | rsi、adx、bbands、macd、atr、cross_indicator、range_bound、zscore_norm、poisson_rate、binomial_ratio、fourier_terms、best_fit_dist |
engine.py | BacktestEngine クラスと8種類の戦略関数です。 | BacktestEngine、strategy_sma_crossover、strategy_rsi_cross、strategy_bbands_contrarian、strategy_growth_momentum_combo |
backtesting.py | メイン CLI です。フルバックテスト、ウォーク、スイープ、最適化を実行します。 | run、sweep、walkforward、montecarlo、optmpt、event、validate、bench |
simulations.py | Johnson SU+コピュラによる将来予測シミュレーションです。 | marginal、copula、run、portfolio、scenarios |
forward.py | リスク予測とストレステストです。 | project、risk、stress、summary |
distributions.py | 分布のフィッティングと比較です。 | fit、best_fit、compare_distributions、sample |
copulas.py | コピュラのフィッティングとサンプリングです。 | fit_t、fit_gaussian、sample_t、sample_gaussian、validate_copula |
fundamental_ratios.py | ファンダメンタル分析の比率です。 | income_metrics、valuation_metrics、dupont、altman_z、piotroski |
validate.py | 4段階の統合テストスイートです。 | CLI、数学、エッジケース、回帰にわたる33項目のチェック |
クイックスタート
基本的な比率
# Compute all 30+ ratios on a CSV of prices
py scripts/backtesting.py run --prices assets/sp500_returns.csv
# Compute with benchmark comparison
py scripts/backtesting.py run --prices assets/momentum_sma50_200_returns.csv --benchmark assets/sp500_returns.csv
検証(4段階のスイート)
# Full validation (33 checks across 4 levels)
py scripts/validate.py
# Single level
py scripts/validate.py --nivel 1
CLI モード、すべての比率の数学的整合性、エッジケースへの耐性、修正後の回帰を検証します。33項目のチェックの詳細については、references/VALIDATION.md を参照してください。
イベント駆動型バックテスト
# Load a CSV with OHLCV data and run SMA crossover
py scripts/backtesting.py event --data my_stock.csv --strategy sma_crossover --fast 50 --slow 200 --commission 0.001
パラメーターのスイープ
# 2D sweep over fast/slow MA windows
py scripts/backtesting.py sweep --prices assets/sp500_returns.csv --p1-min 10 --p1-max 100 --p1-step 10
# 2D over 2 parameters
py scripts/backtesting.py sweep --prices assets/sp500_returns.csv --p1-min 10 --p1-max 50 --p1-step 5 --p2-min 25 --p2-max 200 --p2-step 25
ウォークフォワード
py scripts/backtesting.py walkforward --prices assets/sp500_returns.csv --splits 5 --gap 21
Markowitz 最適化
py scripts/backtesting.py optmpt --assets assets/sp500_returns.csv --iterations 5000
将来予測シミュレーション
py scripts/simulations.py marginal --returns assets/sp500_returns.csv
py scripts/simulations.py copula --returns assets/sp500_returns.csv --df 4
py scripts/forward.py project --returns assets/sp500_returns.csv --horizon 252 --paths 10000 --drift 0.08
py scripts/forward.py risk --returns assets/sp500_returns.csv --horizon 252 --paths 10000
ポートフォリオシミュレーション
py scripts/simulations.py portfolio --name warren_buffett
py scripts/simulations.py scenarios --name warren_buffett --cagr -0.3,-0.15,0,0.2,0.35,0.5
ライブラリとして比率を使用する
from scripts.ratios import *
prices = np.array([100, 105, 102, 110, 108, 115])
r = linear_returns(prices) # [0.05, -0.0286, 0.0784, -0.0182, 0.0648]
lr = log_returns(prices) # [0.0488, -0.0290, 0.0755, -0.0183, 0.0628]
sharpe_ratio(r) # 0.847
max_drawdown(prices) # -0.0370
kelly_fraction(lr) # 0.0793
var_all(r, alpha=0.05) # {'empirical': ..., 'normal': ..., 'johnsonsu': ...}
profit_factor(lr) # 2.314
payoff_ratio(lr) # 1.578
rachev_c(lr, alpha=0.05) # 1.234
common_sense_ratio(lr) # 2.856
エンジンの使用
from scripts.engine import BacktestEngine
eng = BacktestEngine(initial_capital=1.0, commission=0.001, slippage=0.0005)
eng.load_data(df_ohlcv)
result = eng.run(strategy='sma_crossover', strategy_params={'fast': 50, 'slow': 200})
print(result['metrics']['sharpe_ratio']) # 0.847
print(result['trades'])
print(result['metrics'])
依存関係
| ライブラリ | 必須 | 用途 |
|---|---|---|
numpy | ✅ | ベクトル化計算、配列、cumprod |
pandas | ✅ | CSV 入出力、ローリング処理、DataFrame |
scipy.stats | ✅ | 分布フィッティング、KS 検定、コピュラ |
statsmodels | 任意 | indicators.py の STL 分解(クラス5) |
フル検証スイート(py scripts/validate.py)を実行するには、レベル4の回帰チェック用に pytest も必要です。
arch、quantlib、sklearn は不要です。
関連項目
- Gauss314 Skills Repository — 金融データ向けのその他のスキル
references/BACKTESTING_THEORY.md— バックテストの概念的な枠組み(ES)references/RATIOS.md— 数式、リターンの規約、注意事項(ES)references/FEATURES.md— エッジを含む10クラスの指標の分類(ES)references/SIMULATIONS.md— Johnson SU + コピュラのパイプライン(ES)references/VALIDATION.md— 4段階の検証スイート(ES)references/OTHER_FEATURES.md— ファンダメンタル、センチメント、外生変数(ES)
コメント
Markdown 対応