test-trading-strategies について
Test Trading Strategies は、導入前に過去データで暗号資産および予測市場の戦略を評価するスキルです。バックテストと性能指標を提供し、最近の結果を再実行せずに確認・比較できます。
主な機能
- 01暗号資産の無期限戦略をバックテスト
- 02Polymarket 戦略をバックテスト
- 03リターンとリスク指標の表示
- 04最近の結果とエクイティカーブの確認
- 05戦略バージョンと期間の比較
活用シーン
- 01導入前の新戦略のスクリーニング
- 02戦略変更による改善の確認
- 03期間ごとの性能比較
- 04既存バックテストの再実行回避
MCP 対応
このスキルは MCP ツールで暗号資産および予測市場のバックテストを実行し、最近の結果を取得します。MCPSearch から関連ツールを選ぶ手順を示します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ robonet-tech/ skills --skill test-trading-strategiesインストール後、Claude Code で/test-trading-strategiesを入力して読み込まれたか確認します。
詳細
取引戦略をテストする
クイックスタート
このスキルは、実資金をリスクにさらす前に、過去のデータを使って戦略のパフォーマンスを検証します。テストは高速(20~60秒)で、低コスト($0.001)、安全な取引に不可欠です。
まずツールを読み込みます:
Use MCPSearch to select: mcp__workbench__run_backtest
Use MCPSearch to select: mcp__workbench__get_latest_backtest_results
基本的なバックテスト:
run_backtest(
strategy_name="MyStrategy",
start_date="2024-01-01",
end_date="2024-12-31",
symbol="BTC-USDT",
timeframe="1h"
)
20~40秒でパフォーマンス指標が返されます:
- シャープレシオ:1.4(リスク調整後リターンは良好)
- 最大ドローダウン:12%(リスクは中程度)
- 勝率:52%(現実的)
- プロフィットファクター:1.8(利益が出ています)
このスキルを使う場面:
- 新しい戦略を構築した後(正常に動作することを検証)
- 戦略を改善した後(改善を確認)
- ライブ取引に導入する前(必ず実施)
- 複数の戦略バージョンを比較する場合
- パラメーターのバリエーションをテストする場合
重要なルール:6か月分以上のデータでバックテストせずに導入してはいけません。
利用可能なツール(3)
run_backtest
目的:過去のデータを使って暗号資産取引戦略のパフォーマンスをテストします
パラメーター:
strategy_name(必須):テストする戦略start_date(必須):開始日(YYYY-MM-DD)end_date(必須):終了日(YYYY-MM-DD)symbol(必須):取引ペア(例:「BTC-USDT」)timeframe(必須):時間足(1m、5m、15m、30m、1h、2h、4h、6h、8h、12h、1d)config(任意):バックテスト設定オブジェクト:fee:片道あたりの取引手数料(デフォルト:0.0005 = 0.05%)slippage:取引あたりのスリッページ(デフォルト:0.0005 = 0.05%)leverage:ポジション倍率(デフォルト:1、最大:5)
戻り値:パフォーマンス指標:
- 純利益:USDC建ての合計損益
- 総リターン:リターン率
- 年間リターン:年率換算したリターン率
- シャープレシオ:リスク調整後リターン(業界標準の指標)
- 最大ドローダウン:ピークから底値までの最大下落幅
- 勝率:利益が出た取引の割合
- プロフィットファクター:総利益/総損失
- 取引統計:取引回数、平均取引期間、連続損失
- エクイティカーブ:時間経過に伴う残高(可視化用)
料金:$0.001(実質無料)
実行時間:約20~40秒
使用場面:Hyperliquidで暗号資産の無期限先物戦略をテストする場合
run_prediction_market_backtest
目的:過去のデータを使ってPolymarketの予測市場戦略をテストします
パラメーター:
strategy_name(必須):テストするPolymarketStrategystart_date(必須):開始日(YYYY-MM-DD)end_date(必須):終了日(YYYY-MM-DD)condition_id(単一市場の場合):特定のPolymarket条件IDasset(ローリング市場の場合):資産シンボル(「BTC」、「ETH」)interval(ローリング市場の場合):市場の時間間隔(「15m」、「1h」)initial_balance(任意):開始時のUSDC(デフォルト:10000)timeframe(任意):実行時間足(デフォルト:1m)
戻り値:バックテスト指標:
- 損益
- 勝率
- YES/NOトークンのポジション履歴
- 市場の決済結果
料金:$0.001
実行時間:約20~60秒
使用場面:Polymarketの予測市場戦略をテストする場合
get_latest_backtest_results
目的:再実行せずに最近のバックテスト結果を確認します
パラメーター:
strategy_name(任意):戦略名で絞り込みlimit(任意、1~100):結果の件数(デフォルト:10)include_equity_curve(任意):エクイティカーブのデータを含めるequity_curve_max_points(任意、50~1000):カーブの解像度
戻り値:指標を含む最近のバックテスト記録のリスト
料金:無料
使用場面:バックテストがすでにあるか確認する場合、戦略を比較する場合、重複したバックテストを避ける場合
基本概念
パフォーマンス指標の解釈
シャープレシオ(リスク調整後リターン):
Formula: (Mean Return - Risk-Free Rate) / Standard Deviation of Returns
Interpretation:
>2.0 → Excellent (very rare for algo strategies)
1.0-2.0 → Good (achievable with solid strategy)
0.5-1.0 → Acceptable (worth testing further)
<0.5 → Poor (likely not profitable after costs)
Why it matters:
- Accounts for volatility (high return with high volatility = lower Sharpe)
- Industry standard for comparing strategies
- More useful than total return alone
最大ドローダウン(ピークから底値までの最大下落幅):
Example: Strategy grows from $10k → $15k → $12k
Drawdown: ($15k - $12k) / $15k = 20%
Interpretation:
<10% → Conservative (lower returns, safer)
10-20% → Moderate (balanced risk/reward)
20-40% → Aggressive (higher returns, higher risk)
>40% → Very risky (difficult to recover from)
Why it matters:
- Measures worst-case scenario
- Predicts emotional difficulty of holding strategy
- 50% drawdown requires 100% return to recover
勝率(利益が出た取引の割合):
Formula: (Winning Trades / Total Trades) × 100%
Interpretation:
45-65% → Realistic for most strategies
>70% → Suspicious (possible overfitting or unrealistic fills)
<40% → Needs improvement (unless very high profit factor)
Why it matters:
- High win rate doesn't guarantee profitability
- Can have 40% win rate but profitable (if winners > losers)
- Very high win rate (>75%) often indicates overfitting
Common misconception: Higher is always better
Reality: 40% win rate with 3:1 reward:risk is better than 60% win rate with 1:1
プロフィットファクター(総利益/総損失):
Formula: Sum of All Winning Trades / Sum of All Losing Trades
Interpretation:
>2.0 → Excellent
1.5-2.0 → Good
1.2-1.5 → Acceptable
<1.2 → Marginal (risky to deploy)
<1.0 → Unprofitable (losses exceed profits)
Why it matters:
- Simple profitability measure
- <1.5 means small edge, vulnerable to slippage/fees
- Combines win rate and win size into single metric
Example:
10 trades: 6 winners ($100 each), 4 losers ($50 each)
Gross profit: $600, Gross loss: $200
Profit factor: $600 / $200 = 3.0 (excellent)
総リターンと年間リターンの違い:
Total Return: 50% over 6 months
Annual Return: ~100% (extrapolated to 12 months)
Why both matter:
- Total return: Actual profit over test period
- Annual return: Standardized for comparison across time periods
- Longer test periods more reliable (6-12 months minimum)
テスト方法
最低限必要なデータ:
Quick test: 1-3 months
- Limited validation
- Use for initial screening only
- High risk of luck/overfitting
Standard test: 6-12 months (RECOMMENDED MINIMUM)
- Captures multiple market regimes
- Sufficient trades for statistical significance
- Industry standard for strategy validation
Robust test: 12-24 months
- Ideal for high-confidence validation
- Includes bull, bear, and ranging markets
- Best for strategies before live deployment
複数期間でのテスト(堅牢性の検証に不可欠):
1. Train period: 2024-01-01 to 2024-08-31
run_backtest(..., start_date="2024-01-01", end_date="2024-08-31")
→ Sharpe: 1.5
2. Validation period: 2024-09-01 to 2024-12-31
run_backtest(..., start_date="2024-09-01", end_date="2024-12-31")
→ Sharpe: 1.3
3. Compare:
Performance similar → Robust strategy ✓
Performance degraded significantly → Overfit to train period ✗
市場レジームのテスト:
Test strategy across different market conditions:
1. Trending up (bull market): 2023-10 to 2024-03
→ Sharpe: 1.8
2. Trending down (bear market): 2024-04 to 2024-07
→ Sharpe: 0.9
3. Ranging (sideways): 2024-08 to 2024-12
→ Sharpe: 1.1
Analysis:
- Works well in all regimes ✓
- Or works in specific regime (trend-following good in trends)
- Fails in all regimes → Fundamentally broken ✗
危険信号(過学習の兆候)
バックテストの結果が今後も持続しない可能性を示す警告サイン:
1. 非現実的に高い勝率(>70%):
Win rate: 82%
Problem: Markets are noisy; >70% suggests strategy memorized past data
Solution: Test on out-of-sample data; expect performance degradation
2. 取引回数が非常に少ない(6か月で<20回):
Total trades: 8 over 6 months
Problem: Not enough data for statistical significance; could be luck
Solution: Test longer period or adjust strategy to generate more trades
3. バックテストの結果は優秀だが、アウトオブサンプルでは非常に悪い:
Train period (Jan-Aug): Sharpe 2.5
Test period (Sep-Dec): Sharpe 0.3
Problem: Overfitted to training data
Solution: Simplify strategy, reduce parameters, test on more data
4. 短期間に成績が集中している:
6-month test: 50% return
- Month 1-5: -5% return
- Month 6: 55% return (one lucky trade)
Problem: Performance driven by single event, not consistent edge
Solution: Analyze equity curve; look for consistent growth, not spikes
5. 戦略の複雑さと成績が釣り合っていない:
Strategy uses 12 indicators, 20+ parameters
Sharpe ratio: 1.3 (only modest improvement)
Problem: Complex strategies should dramatically outperform simple ones
Solution: Simplify; complexity without performance = overfitting
6. バックテストは完璧だが、実取引では失敗する:
Backtest: Win rate 75%, Sharpe 2.3
Live: Win rate 45%, Sharpe 0.6
Problem: Backtest didn't account for slippage, fees, execution delays
Solution: Use realistic fees (0.05-0.1%), slippage (0.05-0.1%), and test on higher timeframes
導入前の検証チェックリスト
実取引に導入する前に、以下を確認してください:
- バックテスト期間:最低6か月(12か月以上を推奨)のデータでテスト済み
- シャープレシオ:>1.0(できれば>1.5)
- 最大ドローダウン:<20%(許容可能なリスク水準)
- 勝率:45~65%(現実的な範囲)
- プロフィットファクター:>1.5(十分な優位性)
- 取引回数:テスト期間中に50回以上(統計的有意性)
- 複数期間での検証:複数の期間でテストし、一貫した結果を確認済み
- アウトオブサンプルテスト:開発に使用していないデータで良好な成績
- 相場環境の検証:異なる市場状況でも機能する(または、どのような場合に失敗するかを把握している)
- 現実的な手数料:実際の取引手数料(0.05-0.1%)を設定済み
- 現実的なスリッページ:想定されるスリッページ(0.05-0.1%)を設定済み
- 危険信号がない:勝率が>70%ではなく、十分な取引回数があり、成績が一貫している
- 資産曲線の確認:成長が安定しており、単発の幸運な取引によるものではない
- リスク管理の確認:ストップロスとポジションサイズが妥当
項目に1つでも不合格がある場合は、導入しないでください。まず戦略を改善してください。
ベストプラクティス
設定に関するベストプラクティス
現実的な手数料とスリッページ:
config = {
"fee": 0.0005, # 0.05% per trade (Hyperliquid taker fee)
"slippage": 0.0005, # 0.05% slippage (liquid markets)
"leverage": 1 # Start with 1x (no leverage)
}
run_backtest(
...,
config=config
)
現実的な設定が重要な理由:
Without fees/slippage:
- Backtest: 50% return, Sharpe 2.0
- Reality: Fees eat 5-10% of profit → 40% return, Sharpe 1.5
With realistic fees/slippage:
- Backtest: 40% return, Sharpe 1.5
- Reality: Matches expectation → 38-42% return
レバレッジのテスト:
# Test without leverage first
run_backtest(..., config={"leverage": 1})
→ Sharpe: 1.5, Drawdown: 12%
# Then test with leverage (if deploying with leverage)
run_backtest(..., config={"leverage": 2})
→ Sharpe: 1.4, Drawdown: 24% (doubled)
Risk assessment:
- Leverage amplifies returns AND drawdowns
- 2x leverage doesn't mean 2x Sharpe (risk increases faster)
- Start deployment at 1x, increase cautiously
戦略バージョンの比較
体系的な比較:
1. Backtest all versions on SAME date range:
run_backtest(strategy_name="Strategy_v1", start_date="2024-01-01", end_date="2024-12-31", ...)
run_backtest(strategy_name="Strategy_v2", start_date="2024-01-01", end_date="2024-12-31", ...)
run_backtest(strategy_name="Strategy_v3", start_date="2024-01-01", end_date="2024-12-31", ...)
2. Compare all metrics (not just one):
| Version | Sharpe | Drawdown | Win Rate | Profit Factor |
|---------|--------|----------|----------|---------------|
| v1 | 1.2 | 15% | 50% | 1.6 |
| v2 | 1.5 | 12% | 52% | 1.8 |
| v3 | 1.8 | 25% | 48% | 2.2 |
3. Analyze trade-offs:
v1: Baseline (acceptable)
v2: Better across all metrics ✓ (clear winner)
v3: Higher Sharpe but excessive drawdown ✗ (too risky)
4. Decision:
Deploy v2 (balanced improvement without excessive risk)
重複するバックテストの回避
バックテストがすでに存在するか確認する:
1. Before running backtest:
get_latest_backtest_results(strategy_name="MyStrategy")
2. Review results:
- If recent backtest exists with same parameters → Use cached result
- If parameters differ (date range, symbol, timeframe) → Run new backtest
3. Saves time and clutter:
- Backtests are fast (20-40s) but avoiding duplicates is cleaner
- Easier to find specific backtest results later
よくあるワークフロー
ワークフロー1:戦略の初回検証
目的:新しく作成した戦略を初めてテストする
1. Check data availability (use browse-robonet-data):
get_data_availability(symbols=["BTC-USDT"], only_with_data=true)
→ Verify 6+ months of history available
2. Run initial backtest (6 months):
run_backtest(
strategy_name="NewStrategy",
start_date="2024-06-01",
end_date="2024-12-31",
symbol="BTC-USDT",
timeframe="1h",
config={"fee": 0.0005, "slippage": 0.0005, "leverage": 1}
)
3. Evaluate results:
Sharpe: 1.3 ✓ (good)
Drawdown: 14% ✓ (moderate)
Win rate: 51% ✓ (realistic)
Profit factor: 1.7 ✓ (profitable)
Total trades: 87 ✓ (sufficient)
4. Decision:
→ Strong initial results
→ Proceed to multi-period validation (Workflow 2)
費用:$0.001(ほぼ無料)
ワークフロー2:複数期間での検証
目的:異なる期間にわたって戦略の堅牢性を確認する
1. Test Period 1 (Train):
run_backtest(..., start_date="2024-01-01", end_date="2024-06-30")
→ Sharpe: 1.5, Drawdown: 12%
2. Test Period 2 (Validation):
run_backtest(..., start_date="2024-07-01", end_date="2024-12-31")
→ Sharpe: 1.3, Drawdown: 15%
3. Compare:
Period 2 slightly worse but consistent ✓
Sharpe drop: 13% (acceptable variation)
Drawdown increase: 3% (acceptable)
4. Test Period 3 (Recent):
run_backtest(..., start_date="2024-10-01", end_date="2024-12-31")
→ Sharpe: 1.4, Drawdown: 11%
5. Analysis:
Consistent performance across all periods ✓
No significant degradation ✓
Strategy is robust ✓
6. Decision:
→ Ready for deployment consideration
→ Review pre-deployment checklist
費用:$0.003(バックテスト3回)
ワークフロー3:改善前後のテスト
目的:改善によって実際に効果があったことを検証する
1. Baseline (before improvement):
run_backtest(
strategy_name="Strategy_original",
start_date="2024-01-01",
end_date="2024-12-31",
...
)
→ Sharpe: 1.0, Drawdown: 18%, Win rate: 48%
2. Improve strategy (use improve-trading-strategies):
refine_strategy(strategy_name="Strategy_original", changes="Add trailing stop", mode="new")
3. Test improvement:
run_backtest(
strategy_name="Strategy_original_refined",
start_date="2024-01-01", # SAME date range!
end_date="2024-12-31",
...
)
→ Sharpe: 1.3, Drawdown: 14%, Win rate: 52%
4. Compare (apples-to-apples on same data):
Sharpe: +0.3 (+30%) ✓
Drawdown: -4% (-22%) ✓
Win rate: +4% (+8%) ✓
→ Clear improvement across all metrics
5. Validate on different period (avoid overfitting to test data):
run_backtest(
strategy_name="Strategy_original_refined",
start_date="2023-07-01", # Different period
end_date="2023-12-31",
...
)
→ Sharpe: 1.2 (still better than original's 1.0)
→ Improvement is real, not overfitted
6. Decision:
→ Keep improved version
→ Consider further optimization or deployment
費用:$0.003(バックテスト3回)
ワークフロー4:パラメーター感度のテスト
目的:戦略のパラメーターに対する感度を把握する
1. Baseline (default parameters):
Strategy uses RSI(14) threshold of 30
run_backtest(...) → Sharpe: 1.3
2. Test parameter variations:
Create variants: RSI threshold 25, 30, 35
run_backtest(strategy_name="Strategy_RSI25", ...) → Sharpe: 1.1
run_backtest(strategy_name="Strategy_RSI30", ...) → Sharpe: 1.3
run_backtest(strategy_name="Strategy_RSI35", ...) → Sharpe: 1.2
3. Analysis:
Performance varies only slightly (1.1 to 1.3)
→ Strategy is robust (not overly sensitive to exact parameters) ✓
vs. High sensitivity:
RSI25: Sharpe 2.5
RSI30: Sharpe 1.3
RSI35: Sharpe 0.4
→ Overfitted to specific parameter value ✗
4. Decision:
Robust strategy (small variation) → Safe to deploy
Sensitive strategy (large variation) → Likely overfit, risky to deploy
費用:$0.003(バックテスト3回)
トラブルシューティング
「利用可能なデータがありません」
問題:バックテストで「データ不足」エラーが発生する
解決策:
1. Check data availability first (use browse-robonet-data):
get_data_availability(symbols=["YOUR-SYMBOL"], only_with_data=true)
2. Adjust date range:
- BTC-USDT, ETH-USDT: Available from 2020-present
- Altcoins: Typically 6-24 months
- Use date range within available data
3. Try different symbol:
- BTC-USDT and ETH-USDT have longest history
- Start testing on these, then expand to altcoins
「取引が生成されません」
問題:バックテストは完了するが、取引が1件も実行されない
解決策:
1. Entry conditions too restrictive:
- Review strategy code (use browse-robonet-data: get_strategy_code)
- Conditions may never be met simultaneously
- Example: "RSI < 20 AND price > 200 EMA" (RSI rarely gets to 20)
2. Test on longer period:
- 6 months may not have ideal conditions
- Try 12-24 months
3. Adjust thresholds (use improve-trading-strategies):
- Loosen entry conditions slightly
- Example: Change "RSI < 25" to "RSI < 30"
「バックテストに2分以上かかります」
問題:バックテストの実行に長時間かかる
解決策:
1. Long date range + high-frequency timeframe:
- 2+ years on 1m timeframe = slow
- Solution: Test shorter range or use 5m/15m timeframe
2. Complex strategy with many indicators:
- Some indicators are computationally expensive
- Solution: Simplify strategy if possible
3. Normal for prediction markets:
- run_prediction_market_backtest can take 30-60s
- This is expected
「結果が良すぎるように見えます」
問題:シャープレシオが>3.0、勝率が>75%、プロフィットファクターが>5.0
解決策:
1. Likely overfitted to historical data
2. Test on out-of-sample period (different dates)
3. Check for look-ahead bias (using future data)
4. Verify realistic fees and slippage configured
5. If too-good-to-be-true persists, be very skeptical
6. Start with tiny deployment size to validate in live market
次のステップ
戦略のバックテスト後:
成績が振るわない戦略を改善する:
improve-trading-strategiesスキルを使って調整する- 費用:1回あたり$0.50~$4.00
- このスキルでもう一度、改善内容をテストする
合格した戦略を導入する(高リスク):
- 十分なテストを行った後に限り、
deploy-live-tradingスキルを使う - 費用:導入手数料$0.50
- 導入前チェックリストのすべての項目に合格していることを確認する
- 少額の資金で始め、注意深く監視する
ほかの戦略を閲覧する:
browse-robonet-dataスキルを使って既存の戦略を確認する- 自分の結果をほかの戦略と比較する
- 成績の良い戦略から学ぶ
概要
このスキルでは、バックテストによる戦略の検証を行います。
- 3 つのツール:run_backtest(暗号資産)、run_prediction_market_backtest(Polymarket)、get_latest_backtest_results(キャッシュ済み)
- 費用:バックテスト 1 回あたり $0.001(実質無料)
- 実行時間:20〜60 秒
- 目的:資金をリスクにさらす前に、戦略のパフォーマンスを検証します
基本原則:戦略を検証する唯一の方法は、徹底したバックテスト(6 か月以上、複数の期間)です。過去の実績が将来の成果を保証するわけではありませんが、過去の実績がなければ、将来の損失は確実です。
重大な警告:バックテストをせずに戦略を本番運用してはいけません。バックテストは安価($0.001)で迅速(20〜60 秒)です。未検証の戦略を本番運用すると、実資金をリスクにさらすことになり、ほぼ確実に損失につながります。
本番運用前のチェックリスト:シャープレシオが 1.0 超、ドローダウンが 20% 未満、勝率が 45〜65%、プロフィットファクターが 1.5 超、取引回数が 50 回以上、6 か月以上を対象に検証済み、複数期間で検証済み、手数料とスリッページが現実的、危険信号がないことを確認します。項目に 1 つでも不合格があれば、本番運用の前に戦略を改善してください。
ベストプラクティス:テスト → 改善 → テスト → 改善(反復)。改善のたびに、同じデータを使った新しいバックテストで検証し、ノイズではなく実際に改善したことを確認してください。