Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -18% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -32% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 34% | 0% |
Validate trading strategies against historical data before risking real capital. This skill provides a complete backtesting framework with 8 built-in strategies, comprehensive performance metrics, and parameter optimization.
Key Features:
Install required dependencies:
bashset -euo pipefail pip install pandas numpy yfinance matplotlib
Optional for advanced features:
bashset -euo pipefail pip install ta-lib scipy scikit-learn
${CLAUDE_SKILL_DIR}/data/ for reuse):bash python ${CLAUDE_SKILL_DIR}/scripts/fetch_data.py --symbol BTC-USD --period 2y --interval 1d
bash python ${CLAUDE_SKILL_DIR}/scripts/backtest.py --strategy sma_crossover --symbol BTC-USD --period 1y python ${CLAUDE_SKILL_DIR}/scripts/backtest.py \ --strategy rsi_reversal \ --symbol ETH-USD \ --period 1y \ --capital 10000 \ # 10000: 10 seconds in ms --params '{"period": 14, "overbought": 70, "oversold": 30}'
${CLAUDE_SKILL_DIR}/reports/ -- includes *_summary.txt (performance metrics), *_trades.csv (trade log), *_equity.csv (equity curve data), and *_chart.png (visual equity curve).bash python ${CLAUDE_SKILL_DIR}/scripts/optimize.py \ --strategy sma_crossover \ --symbol BTC-USD \ --period 1y \ --param-grid '{"fast_period": [10, 20, 30], "slow_period": [50, 100, 200]}' # HTTP 200 OK
| Metric | Description | |--------|-------------| | Total Return | Overall percentage gain/loss | | CAGR | Compound annual growth rate | | Sharpe Ratio | Risk-adjusted return (target: >1.5) | | Sortino Ratio | Downside risk-adjusted return | | Calmar Ratio | Return divided by max drawdown |
| Metric | Description | |--------|-------------| | Max Drawdown | Largest peak-to-trough decline | | VaR (95%) | Value at Risk at 95% confidence | | CVaR (95%) | Expected loss beyond VaR | | Volatility | Annualized standard deviation |
| Metric | Description | |--------|-------------| | Total Trades | Number of round-trip trades | | Win Rate | Percentage of profitable trades | | Profit Factor | Gross profit divided by gross loss | | Expectancy | Expected value per trade |
================================================================================
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
================================================================================| Strategy | Description | Key Parameters | |----------|-------------|----------------| | sma_crossover | Simple moving average crossover | fast_period, slow_period | | ema_crossover | Exponential MA crossover | fast_period, slow_period | | rsi_reversal | RSI overbought/oversold | period, overbought, oversold | | macd | MACD signal line crossover | fast, slow, signal | | bollinger_bands | Mean reversion on bands | period, std_dev | | breakout | Price breakout from range | lookback, threshold | | mean_reversion | Return to moving average | period, z_threshold | | momentum | Rate of change momentum | period, threshold |
Create ${CLAUDE_SKILL_DIR}/config/settings.yaml:
yamldata: provider: yfinance cache_dir: ./data backtest: default_capital: 10000 # 10000: 10 seconds in ms 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
See ${CLAUDE_SKILL_DIR}/references/errors.md for common issues and solutions.
See ${CLAUDE_SKILL_DIR}/references/examples.md for detailed usage examples including:
| File | Purpose | |------|---------| | scripts/backtest.py | Main backtesting engine | | scripts/fetch_data.py | Historical data fetcher | | scripts/strategies.py | Strategy definitions | | scripts/metrics.py | Performance calculations | | scripts/optimize.py | Parameter optimization |
Other measured skills in the registry, with their headline benchmark lift.