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 |
|---|---|---|
--data |
sample_ohlcv.csv |
CSV path or JSON string (OHLCV) |
--strategy |
sma_crossover |
Strategy type |
--fast |
5 |
Fast SMA period |
--slow |
20 |
Slow SMA period |
--output |
json |
Output format (json or print) |
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