Backtesting Trading Strategies
Overview
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:
- 8 pre-built trading strategies (SMA, EMA, RSI, MACD, Bollinger, Breakout, Mean Reversion, Momentum)
- Full performance metrics (Sharpe, Sortino, Calmar, VaR, max drawdown)
- Parameter grid search optimization
- Equity curve visualization
- Trade-by-trade analysis
Prerequisites
Install required dependencies:
set -euo pipefail
pip install pandas numpy yfinance matplotlib
Optional for advanced features:
set -euo pipefail
pip install ta-lib scipy scikit-learn
Instructions
Fetch historical data (cached to ${CLAUDE_SKILL_DIR}/data/ for reuse):
python ${CLAUDE_SKILL_DIR}/scripts/fetch_data.py --symbol BTC-USD --period 2y --interval 1d
Run a backtest with default or custom parameters:
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}'
Analyze results saved to ${CLAUDE_SKILL_DIR}/reports/ -- includes *_summary.txt (performance metrics), *_trades.csv (trade log), *_equity.csv (equity curve data), and *_chart.png (visual equity curve).
Optimize parameters via grid search to find the best combination:
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
Output
Performance Metrics
| 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 |
Risk Metrics
| 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 |
Trade Statistics
| 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 |
Example Output
================================================================================
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
================================================================================
Supported Strategies
| 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 |
Configuration
Create ${CLAUDE_SKILL_DIR}/config/settings.yaml:
data:
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
Error Handling
See ${CLAUDE_SKILL_DIR}/references/errors.md for common issues and solutions.
Examples
See ${CLAUDE_SKILL_DIR}/references/examples.md for detailed usage examples including:
- Multi-asset comparison
- Walk-forward analysis
- Parameter optimization workflows
Files
| 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 |
Resources
Source: jeremylongshore/claude-code-plugins-plus-skills → skills/.curated/backtesting-trading-strategies/SKILL.md
Also appears in: jeremylongshore/claude-code-plugins-plus-skills/plugins/crypto/trading-strategy-backtester/skills/backtesting-trading-strategies/SKILL.md
1---2name: backtesting-trading-strategies3description: '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". '4---5
6# Backtesting Trading Strategies
7
8## Overview
9
10Validate 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.
11
12**Key Features:**
13
14- 8 pre-built trading strategies (SMA, EMA, RSI, MACD, Bollinger, Breakout, Mean Reversion, Momentum)
15- Full performance metrics (Sharpe, Sortino, Calmar, VaR, max drawdown)
16- Parameter grid search optimization
17- Equity curve visualization
18- Trade-by-trade analysis
19
20## Prerequisites
21
22Install required dependencies:
23
24```bash
25set -euo pipefail
26pip install pandas numpy yfinance matplotlib
27```
28
29Optional for advanced features:
30
31```bash
32set -euo pipefail
33pip install ta-lib scipy scikit-learn
34```
35
36## Instructions
37
381. Fetch historical data (cached to `${CLAUDE_SKILL_DIR}/data/` for reuse):
39
40 ```bash
41 python ${CLAUDE_SKILL_DIR}/scripts/fetch_data.py --symbol BTC-USD --period 2y --interval 1d
42 ```
43
442. Run a backtest with default or custom parameters:
45
46 ```bash
47 python ${CLAUDE_SKILL_DIR}/scripts/backtest.py --strategy sma_crossover --symbol BTC-USD --period 1y
48 python ${CLAUDE_SKILL_DIR}/scripts/backtest.py \
49 --strategy rsi_reversal \
50 --symbol ETH-USD \
51 --period 1y \
52 --capital 10000 \ # 10000: 10 seconds in ms
53 --params '{"period": 14, "overbought": 70, "oversold": 30}'
54 ```
55
563. Analyze results saved to `${CLAUDE_SKILL_DIR}/reports/` -- includes `*_summary.txt` (performance metrics), `*_trades.csv` (trade log), `*_equity.csv` (equity curve data), and `*_chart.png` (visual equity curve).
574. Optimize parameters via grid search to find the best combination:
58
59 ```bash
60 python ${CLAUDE_SKILL_DIR}/scripts/optimize.py \
61 --strategy sma_crossover \
62 --symbol BTC-USD \
63 --period 1y \
64 --param-grid '{"fast_period": [10, 20, 30], "slow_period": [50, 100, 200]}' # HTTP 200 OK
65 ```
66
67## Output
68
69### Performance Metrics
70
71| Metric | Description |
72|--------|-------------|
73| Total Return | Overall percentage gain/loss |
74| CAGR | Compound annual growth rate |
75| Sharpe Ratio | Risk-adjusted return (target: >1.5) |
76| Sortino Ratio | Downside risk-adjusted return |
77| Calmar Ratio | Return divided by max drawdown |
78
79### Risk Metrics
80
81| Metric | Description |
82|--------|-------------|
83| Max Drawdown | Largest peak-to-trough decline |
84| VaR (95%) | Value at Risk at 95% confidence |
85| CVaR (95%) | Expected loss beyond VaR |
86| Volatility | Annualized standard deviation |
87
88### Trade Statistics
89
90| Metric | Description |
91|--------|-------------|
92| Total Trades | Number of round-trip trades |
93| Win Rate | Percentage of profitable trades |
94| Profit Factor | Gross profit divided by gross loss |
95| Expectancy | Expected value per trade |
96
97### Example Output
98
99```
100================================================================================
101 BACKTEST RESULTS: SMA CROSSOVER
102 BTC-USD | [start_date] to [end_date]
103================================================================================
104 PERFORMANCE | RISK
105 Total Return: +47.32% | Max Drawdown: -18.45%
106 CAGR: +47.32% | VaR (95%): -2.34%
107 Sharpe Ratio: 1.87 | Volatility: 42.1%
108 Sortino Ratio: 2.41 | Ulcer Index: 8.2
109--------------------------------------------------------------------------------
110 TRADE STATISTICS
111 Total Trades: 24 | Profit Factor: 2.34
112 Win Rate: 58.3% | Expectancy: $197.17
113 Avg Win: $892.45 | Max Consec. Losses: 3
114================================================================================
115```
116
117## Supported Strategies
118
119| Strategy | Description | Key Parameters |
120|----------|-------------|----------------|
121| `sma_crossover` | Simple moving average crossover | `fast_period`, `slow_period` |
122| `ema_crossover` | Exponential MA crossover | `fast_period`, `slow_period` |
123| `rsi_reversal` | RSI overbought/oversold | `period`, `overbought`, `oversold` |
124| `macd` | MACD signal line crossover | `fast`, `slow`, `signal` |
125| `bollinger_bands` | Mean reversion on bands | `period`, `std_dev` |
126| `breakout` | Price breakout from range | `lookback`, `threshold` |
127| `mean_reversion` | Return to moving average | `period`, `z_threshold` |
128| `momentum` | Rate of change momentum | `period`, `threshold` |
129
130## Configuration
131
132Create `${CLAUDE_SKILL_DIR}/config/settings.yaml`:
133
134```yaml
135data:
136 provider: yfinance
137 cache_dir: ./data
138
139backtest:
140 default_capital: 10000 # 10000: 10 seconds in ms
141 commission: 0.001 # 0.1% per trade
142 slippage: 0.0005 # 0.05% slippage
143
144risk:
145 max_position_size: 0.95
146 stop_loss: null # Optional fixed stop loss
147 take_profit: null # Optional fixed take profit
148```
149
150## Error Handling
151
152See `${CLAUDE_SKILL_DIR}/references/errors.md` for common issues and solutions.
153
154## Examples
155
156See `${CLAUDE_SKILL_DIR}/references/examples.md` for detailed usage examples including:
157
158- Multi-asset comparison
159- Walk-forward analysis
160- Parameter optimization workflows
161
162## Files
163
164| File | Purpose |
165|------|---------|
166| `scripts/backtest.py` | Main backtesting engine |
167| `scripts/fetch_data.py` | Historical data fetcher |
168| `scripts/strategies.py` | Strategy definitions |
169| `scripts/metrics.py` | Performance calculations |
170| `scripts/optimize.py` | Parameter optimization |
171
172## Resources
173
174- [yfinance](https://github.com/ranaroussi/yfinance) - Yahoo Finance data
175- [TA-Lib](https://ta-lib.org/) - Technical analysis library
176- [QuantStats](https://github.com/ranaroussi/quantstats) - Portfolio analytics
177
178---
179
180**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `skills/.curated/backtesting-trading-strategies/SKILL.md`
181
182**Also appears in:** `jeremylongshore/claude-code-plugins-plus-skills/plugins/crypto/trading-strategy-backtester/skills/backtesting-trading-strategies/SKILL.md`