backtesting-trading-strategies
jeremylongshore/tons-of-skills-marketplace
Backtest crypto and traditional trading strategies with performance metrics and parameter optimization.
What is backtesting-trading-strategies?
Validate trading strategies against historical data before risking capital. This skill provides 8 pre-built strategies, comprehensive performance metrics (Sharpe, Sortino, max drawdown), equity curve visualization, and parameter grid search optimization.
- Run backtests on 8 built-in strategies (SMA, EMA, RSI, MACD, Bollinger, Breakout, Mean Reversion, Momentum)
- Calculate performance metrics including Sharpe ratio, Sortino ratio, Calmar ratio, max drawdown, and VaR
- Generate equity curves and trade-by-trade analysis logs
- Optimize strategy parameters via grid search to find best combinations
- Fetch and cache historical data from yfinance for reuse
- Visualize backtest results with equity curve charts and summary reports
How to install backtesting-trading-strategies
npx skills add https://github.com/jeremylongshore/tons-of-skills-marketplace --skill backtesting-trading-strategies- Python 3.7+
- pandas, numpy, yfinance, matplotlib (required)
- ta-lib, scipy, scikit-learn (optional, for advanced features)
How to use backtesting-trading-strategies
- 1.Install dependencies: pip install pandas numpy yfinance matplotlib
- 2.Fetch historical data: python ${CLAUDE_SKILL_DIR}/scripts/fetch_data.py --symbol BTC-USD --period 2y --interval 1d
- 3.Run a backtest: python ${CLAUDE_SKILL_DIR}/scripts/backtest.py --strategy sma_crossover --symbol BTC-USD --period 1y
- 4.Review results in ${CLAUDE_SKILL_DIR}/reports/ for summary metrics, trade log, equity curve, and chart
- 5.(Optional) Optimize parameters: 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]}'
Use cases
- Test a new trading strategy idea against 1-2 years of historical data before deploying live
- Compare performance of SMA crossover vs RSI reversal on Bitcoin to decide which to trade
- Optimize RSI period and overbought/oversold thresholds to maximize Sharpe ratio on Ethereum
- Validate that a breakout strategy's win rate and profit factor meet your risk criteria
- Run walk-forward analysis to check if strategy parameters remain stable over time
- Retail traders evaluating new strategies before risking capital
- Quantitative analysts comparing strategy performance across assets
- Crypto traders testing signal-based approaches on historical data
- Anyone building a trading system who needs to validate assumptions with backtests
backtesting-trading-strategies FAQ
yfinance, which pulls from Yahoo Finance. Data is cached locally to ${CLAUDE_SKILL_DIR}/data/ for reuse across backtests.
Yes. Define your strategy in scripts/strategies.py following the template, then run backtest.py with --strategy your_strategy_name.
Sharpe ratio measures risk-adjusted return (target >1.5); Sortino focuses on downside risk; max drawdown is the largest peak-to-trough decline; Calmar is return divided by max drawdown.
Use optimize.py with --param-grid to specify ranges for each parameter. It runs grid search and returns the best combination by Sharpe ratio.
Yes. Default commission is 0.1% per trade and slippage is 0.05%. Both are configurable in config/settings.yaml.
Full instructions (SKILL.md)
Source of truth, from jeremylongshore/tons-of-skills-marketplace.
name: 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".
' allowed-tools: Read, Write, Edit, Grep, Glob, Bash(python:*) version: 1.28.0 author: Jeremy Longshore jeremy@intentsolutions.io license: MIT tags:
- crypto
- testing
- performance compatibility: Designed for Claude Code
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
- yfinance - Yahoo Finance data
- TA-Lib - Technical analysis library
- QuantStats - Portfolio analytics
Related skills
More from jeremylongshore/tons-of-skills-marketplace and the wider catalog.

svg-icon-generator
Generate SVG icons with automated assistance and best-practice guidance.

use-modern-go
Apply Modern Go Guidelines CLI to ensure idiomatic, version-specific Go code during development.

ai-image-generator
Generate professional images using Gemini or GPT APIs with model selection, prompting framework, and multi-turn editing.

app-docs
Generate complete user documentation for a web app with screenshots. Browses the app via browser automation, screenshots every screen, and produces a structured user guide with step-by-step instructions, annotated screenshots, workflow diagrams, and reference tables. Supports quick (key screens), standard (all pages), thorough (every state and flow), and exhaustive (publishable documentation suite). Triggers: 'document the app', 'user guide', 'app documentation', 'screenshot docs', 'generate user docs', 'help docs', 'how-to guide', 'write the docs'.

aussie-business-english
Australian business English writing style for professional communications — warm, direct, EN-AU spelling (colour, organise, centre). Use whenever the user is writing for an Australian audience: emails, chat messages, proposals, client communications, blog posts, web copy, or any business writing. Apply to drafting, editing, and tone-checking professional text.

award-application
Write compelling award submissions, grant applications, and competition entries. Maps achievements to selection criteria using evidence-based narratives. Use whenever the user is applying for a business award (Telstra, chamber of commerce, industry awards), a grant, a competition, or any submission demonstrating merit against defined criteria.