ClawForge strategy-backtest
Runs SMA crossover backtests on historical OHLCV/candlestick data, calculating total return, Sharpe ratio, max drawdown, win rate, and trade log. Supports CSV files and JSON input with automatic AKShare/hhxg column normalization. Use when the user asks to backtest a trading strategy, evaluate strategy performance on historical price data, run quantitative analysis, or mentions OHLCV, candlestick data, or equity curves.
install
source · Clone the upstream repo
git clone https://github.com/leionion/ClawForge
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/leionion/ClawForge "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/04-Process/strategy_backtest" ~/.claude/skills/leionion-clawforge-strategy-backtest && rm -rf "$T"
manifest:
skills/04-Process/strategy_backtest/SKILL.mdsource content
strategy-backtest — Quantitative Strategy Backtesting
Runs strategy backtests on historical OHLCV data and returns performance metrics as JSON. Supports SMA crossover strategy with configurable fast/slow periods.
Usage
# Demo mode — uses built-in sample_ohlcv.csv python3 strategy_backtest.py # Backtest with custom CSV data python3 strategy_backtest.py --data path/to/ohlcv.csv # Backtest with JSON string input python3 strategy_backtest.py --data '[{"open":10,"high":11,"low":9,"close":10.5,"volume":100}]' # Custom SMA periods python3 strategy_backtest.py --data prices.csv --fast 10 --slow 30 # Human-readable output python3 strategy_backtest.py --data prices.csv --output print
Parameters
| Flag | Default | Description |
|---|---|---|
| | CSV path or JSON string (OHLCV) |
| | Strategy type |
| | Fast SMA period |
| | Slow SMA period |
| | Output format ( or ) |
Supports column names in English (
open/high/low/close/volume) or Chinese AKShare format (开盘/收盘/最高/最低/成交量/日期).
Example output
{ "total_return": 0.0523, "sharpe_ratio": 1.2345, "max_drawdown": -0.0812, "win_rate": 0.6, "trade_count": 10, "trades": [ {"date": "2024-01-15", "action": "buy", "price": 150.25}, {"date": "2024-02-01", "action": "sell", "price": 158.50, "pnl": 0.0549} ] }
Error handling
- Missing pandas: prints
{"error": "pandas required: pip install pandas"} - Missing columns: reports which OHLCV columns are absent
- Insufficient data: returns error if fewer rows than the slow SMA window
- Unknown strategy: reports the unrecognized strategy name
Programmatic API
from strategy_backtest import run_backtest metrics = run_backtest("prices.csv", strategy="sma_crossover", fast=5, slow=20)
Related skills
- hhxg-top-hhxg-python: fetch A-share OHLCV data → feed into this skill
- session-memory: store backtest metrics for later comparison