backtesting-trading-strategies
暗号資産や従来の金融商品における取引戦略を過去の価格データに基づいてバックテストします。シャープレシオ・ソルティノレシオ・最大ドローダウンなどのパフォーマンス指標の算出、エクイティカーブの生成、戦略パラメータの最適化を行います。取引戦略の検証、シグナルの妥当性確認、複数アプローチの比較検討を行いたい場合にご活用ください。
description の原文を見る
| Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".
SKILL.md 本文
トレーディング戦略のバックテスト
概要
実際の資金をリスクにさらす前に、過去のデータに対してトレーディング戦略を検証します。このスキルは、8つの組み込み戦略、包括的なパフォーマンス指標、パラメータ最適化を備えた完全なバックテストフレームワークを提供します。
主な機能:
- 8つの事前構築されたトレーディング戦略(SMA、EMA、RSI、MACD、Bollinger、Breakout、Mean Reversion、Momentum)
- 完全なパフォーマンス指標(Sharpe、Sortino、Calmar、VaR、最大ドローダウン)
- パラメータグリッドサーチ最適化
- エクイティカーブ可視化
- 取引ごとの詳細分析
前提条件
必要な依存関係をインストール:
pip install pandas numpy yfinance matplotlib
高度な機能向けのオプション:
pip install ta-lib scipy scikit-learn
使用方法
ステップ 1: 過去データを取得
python {baseDir}/scripts/fetch_data.py --symbol BTC-USD --period 2y --interval 1d
データは再利用のため {baseDir}/data/{symbol}_{interval}.csv にキャッシュされます。
ステップ 2: バックテストを実行
デフォルトパラメータでの基本的なバックテスト:
python {baseDir}/scripts/backtest.py --strategy sma_crossover --symbol BTC-USD --period 1y
カスタムパラメータを使用した高度なバックテスト:
# 例:特定の日付範囲でバックテストを実行
python {baseDir}/scripts/backtest.py \
--strategy rsi_reversal \
--symbol ETH-USD \
--period 1y \
--capital 10000 \
--params '{"period": 14, "overbought": 70, "oversold": 30}'
ステップ 3: 結果を分析
結果は {baseDir}/reports/ に以下を含めて保存されます:
*_summary.txt- パフォーマンス指標*_trades.csv- 取引ログ*_equity.csv- エクイティカーブデータ*_chart.png- ビジュアルエクイティカーブ
ステップ 4: パラメータを最適化
グリッドサーチで最適なパラメータを検出:
python {baseDir}/scripts/optimize.py \
--strategy sma_crossover \
--symbol BTC-USD \
--period 1y \
--param-grid '{"fast_period": [10, 20, 30], "slow_period": [50, 100, 200]}'
出力
パフォーマンス指標
| 指標 | 説明 |
|---|---|
| Total Return | 全体的なパーセンテージ利益/損失 |
| CAGR | 複合年間成長率 |
| Sharpe Ratio | リスク調整済みリターン(目標: >1.5) |
| Sortino Ratio | 下リスク調整済みリターン |
| Calmar Ratio | リターンを最大ドローダウンで除した値 |
リスク指標
| 指標 | 説明 |
|---|---|
| Max Drawdown | 最大ピークからボトム下落率 |
| VaR (95%) | 95%信頼度における Value at Risk |
| CVaR (95%) | VaRを超える予想損失 |
| Volatility | 年率化標準偏差 |
取引統計
| 指標 | 説明 |
|---|---|
| Total Trades | ラウンドトリップ取引の数 |
| Win Rate | 利益を上げた取引の割合 |
| Profit Factor | 総利益を総損失で除した値 |
| Expectancy | 1取引あたりの期待値 |
出力例
================================================================================
BACKTEST RESULTS: SMA CROSSOVER
BTC-USD | [start_date] to [end_date]
================================================================================
PERFORMANCE | RISK
Total Return: +47.32% | Max Drawdown: -18.45%
CAGR: +47.32% | VaR (95%): -2.34%
Sharpe Ratio: 1.87 | Volatility: 42.1%
Sortino Ratio: 2.41 | Ulcer Index: 8.2
--------------------------------------------------------------------------------
TRADE STATISTICS
Total Trades: 24 | Profit Factor: 2.34
Win Rate: 58.3% | Expectancy: $197.17
Avg Win: $892.45 | Max Consec. Losses: 3
================================================================================
サポート対象の戦略
| 戦略 | 説明 | 主要パラメータ |
|---|---|---|
sma_crossover | シンプル移動平均クロスオーバー | fast_period, slow_period |
ema_crossover | 指数移動平均クロスオーバー | fast_period, slow_period |
rsi_reversal | RSI 買われすぎ/売られすぎ | period, overbought, oversold |
macd | MACD シグナルラインクロスオーバー | fast, slow, signal |
bollinger_bands | バンド上での平均回帰 | period, std_dev |
breakout | 値幅からの価格ブレークアウト | lookback, threshold |
mean_reversion | 移動平均への回帰 | period, z_threshold |
momentum | 変化率モメンタム | period, threshold |
設定
{baseDir}/config/settings.yaml を作成:
data:
provider: yfinance
cache_dir: ./data
backtest:
default_capital: 10000
commission: 0.001 # 0.1% per trade
slippage: 0.0005 # 0.05% slippage
risk:
max_position_size: 0.95
stop_loss: null # Optional fixed stop loss
take_profit: null # Optional fixed take profit
エラーハンドリング
一般的な問題と解決策については {baseDir}/references/errors.md を参照してください。
例
詳細な使用例については {baseDir}/references/examples.md を参照してください。以下の内容を含みます:
- マルチアセット比較
- ウォークフォワード分析
- パラメータ最適化ワークフロー
ファイル
| ファイル | 用途 |
|---|---|
scripts/backtest.py | メインバックテストエンジン |
scripts/fetch_data.py | 過去データ取得ツール |
scripts/strategies.py | 戦略定義 |
scripts/metrics.py | パフォーマンス計算 |
scripts/optimize.py | パラメータ最適化 |
リソース
- yfinance - Yahoo Finance データ
- TA-Lib - テクニカル分析ライブラリ
- QuantStats - ポートフォリオ分析
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- gracefullight
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/gracefullight/stock-checker / ライセンス: MIT
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。