mcpField
B
backtesting

backtesting

github.com/gauss314数据与数据库252324 次安装20 周前更新
代码仓库

关于 backtesting

这是面向量化研究人员和策略开发者的 Python 回测 skill,涵盖从数据、研究到指标、参数化和验证的流程。它结合事件驱动策略、风险指标、投资组合分析、模拟和滚动验证,依赖 numpy、pandas 与 scipy。

主要功能

  1. 0130 多种风险与绩效比率
  2. 0210 类指标
  3. 03含 8 种策略的事件驱动引擎
  4. 04滚动验证与参数扫描
  5. 05前瞻模拟与压力测试
  6. 06投资组合优化与基本面比率

适用场景

  1. 01用价格数据评估交易策略
  2. 02通过参数扫描比较策略参数
  3. 03用滚动分割检验稳健性
  4. 04模拟投资组合收益和压力情景

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gauss314/skills --skill backtesting

安装后在 Claude Code 中输入/backtesting确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
contrarian_bbands_returns.csv
defaults.json
frontier.csv
momentum_sma50_200_returns.csv
multi_asset_prices.csv
multi_ma_3_5_8_13_returns.csv
sample_portfolios.json
sp500_close.csv
sp500_returns.csv
trend_bbands_combo_returns.csv
validation_cases.json
references/
BACKTESTING_THEORY.md
FEATURES.md
OTHER_FEATURES.md
RATIOS.md
SIMULATIONS.md
VALIDATION.md
scripts/
__init__.py
backtesting.py
copulas.py
distributions.py
engine.py
forward.py
fundamental_ratios.py
indicators.py
ratios.py
simulations.py
validate.py
tests/
__init__.py
test_ratios.py

详细介绍

回测 — 完整回测技能

此技能实现了课程资料中的完整 5 阶段回测方法论: 数据 → 研究 → 指标 → 参数化 → 验证。它提供:

  • 30 多种风险/绩效比率(扁平函数、numpy 向量化、不使用类)
  • 10 类指标,遵循课程分类体系(趋势跟踪、振荡指标、反向指标、资金流、组合指标、离散计数、季节性、统计、参照、基本面)
  • 事件驱动回测引擎,内置 8 种策略
  • 前瞻模拟(Johnson SU 边缘分布 + t/Gaussian Copula)
  • 投资组合理论(Markowitz 有效前沿、投资组合的投资组合)
  • 滚动交叉验证,包含样本内/样本外划分 + 间隔
  • 压力测试,采用参数化情景冲击
  • 基本面分析(Altman Z、Piotroski F、DuPont)

所有脚本仅使用 numpy、pandas 和 scipy。没有沉重的依赖项。

属于 Gauss314 Skills Repository。


文件一览

skills/backtesting/
├── SKILL.md                         ← This file
├── references/
│   ├── BACKTESTING_THEORY.md        ← Marco conceptual: GIGO, trilema, 5 etapas (ES)
│   ├── RATIOS.md                    ← Fórmulas, convención de retornos, advertencias (ES)
│   ├── FEATURES.md                  ← Taxonomía de 10 clases de indicadores con edges (ES)
│   ├── SIMULATIONS.md               ← Pipeline Johnson SU + cópula (ES)
│   ├── VALIDATION.md                ← Suite de validación de 4 niveles (ES)
│   └── OTHER_FEATURES.md            ← Fundamental, Sentimiento, Exógenos (ES)
├── assets/
│   ├── sp500_returns.csv            ← SPY benchmark daily returns (lin + log), 1980-today
│   ├── momentum_sma50_200_returns.csv ← SMA(50)/SMA(200) crossover strategy returns
│   ├── contrarian_bbands_returns.csv  ← Bollinger Band contrarian strategy returns
│   ├── sample_portfolios.json       ← Real investor portfolios (Buffett, Dalio, Ackman, 60/40)
│   ├── defaults.json                ← Default parameters (VaR alpha, windows, etc.)
│   └── validation_cases.json        ← 6 known cases for ratio validation
├── scripts/
│   ├── __init__.py
│   ├── ratios.py                    ← 30+ flat numpy functions for all risk/performance ratios
│   ├── indicators.py                ← 10 classes of technical/statistical/fundamental indicators
│   ├── engine.py                    ← Event-driven BacktestEngine with 8 built-in strategies
│   ├── backtesting.py               ← CLI: run, sweep, walkforward, montecarlo, optmpt, event, validate
│   ├── simulations.py               ← CLI: marginal, copula, run, portfolio, scenarios
│   ├── forward.py                   ← CLI: project, risk, stress, summary
│   ├── distributions.py             ← Fit + KS test for Normal/t/NCt/Laplace/JohnsonSU
│   ├── copulas.py                   ← t/Gaussian/Clayton/Gumbel/Frank copulas + sampling
│   ├── fundamental_ratios.py        ← Income/balance/cashflow metrics, DuPont, Altman Z, Piotroski
│   └── validate.py                  ← 4-level validation: CLI modes, math consistency, edge cases, regression
└── tests/
    └── test_ratios.py               ← 18 pytest tests for core ratios
各文件的作用
文件用途主要函数/模式
ratios.py核心库。每种比率都是接受一维数组的扁平函数。sharpe_ratio、max_drawdown、var_all、cvar_all、kelly_fraction、payoff_ratio、profit_factor、rachev_a/b/c、common_sense_ratio、ruin_curve、compute_all
indicators.py10 类指标,涵盖课程分类体系中的所有类型。rsi、adx、bbands、macd、atr、cross_indicator、range_bound、zscore_norm、poisson_rate、binomial_ratio、fourier_terms、best_fit_dist
engine.pyBacktestEngine 类和 8 个策略函数。BacktestEngine、strategy_sma_crossover、strategy_rsi_cross、strategy_bbands_contrarian、strategy_growth_momentum_combo
backtesting.py主 CLI。运行完整回测、滚动分析、参数扫描和优化。run、sweep、walkforward、montecarlo、optmpt、event、validate、bench
simulations.py使用 Johnson SU + Copula 的前瞻模拟。marginal、copula、run、portfolio、scenarios
forward.py风险预测和压力测试。project、risk、stress、summary
distributions.py分布拟合与比较。fit、best_fit、compare_distributions、sample
copulas.pyCopula 拟合与采样。fit_t、fit_gaussian、sample_t、sample_gaussian、validate_copula
fundamental_ratios.py基本面分析比率。income_metrics、valuation_metrics、dupont、altman_z、piotroski
validate.py4 级集成测试套件。覆盖 CLI、数学、边界情况和回归的 33 项检查

快速开始

基本比率
# Compute all 30+ ratios on a CSV of prices
py scripts/backtesting.py run --prices assets/sp500_returns.csv

# Compute with benchmark comparison
py scripts/backtesting.py run --prices assets/momentum_sma50_200_returns.csv --benchmark assets/sp500_returns.csv
验证(4 级套件)
# Full validation (33 checks across 4 levels)
py scripts/validate.py

# Single level
py scripts/validate.py --nivel 1

验证 CLI 模式、所有比率的数学一致性、边界情况适应能力,以及修复后的回归情况。有关全部 33 项检查的详细说明,请参阅 references/VALIDATION.md。

事件驱动回测
# Load a CSV with OHLCV data and run SMA crossover
py scripts/backtesting.py event --data my_stock.csv --strategy sma_crossover --fast 50 --slow 200 --commission 0.001
参数扫描
# 2D sweep over fast/slow MA windows
py scripts/backtesting.py sweep --prices assets/sp500_returns.csv --p1-min 10 --p1-max 100 --p1-step 10
# 2D over 2 parameters
py scripts/backtesting.py sweep --prices assets/sp500_returns.csv --p1-min 10 --p1-max 50 --p1-step 5 --p2-min 25 --p2-max 200 --p2-step 25
滚动验证
py scripts/backtesting.py walkforward --prices assets/sp500_returns.csv --splits 5 --gap 21
Markowitz 优化
py scripts/backtesting.py optmpt --assets assets/sp500_returns.csv --iterations 5000
前瞻模拟
py scripts/simulations.py marginal --returns assets/sp500_returns.csv
py scripts/simulations.py copula --returns assets/sp500_returns.csv --df 4
py scripts/forward.py project --returns assets/sp500_returns.csv --horizon 252 --paths 10000 --drift 0.08
py scripts/forward.py risk --returns assets/sp500_returns.csv --horizon 252 --paths 10000
投资组合模拟
py scripts/simulations.py portfolio --name warren_buffett
py scripts/simulations.py scenarios --name warren_buffett --cagr -0.3,-0.15,0,0.2,0.35,0.5

将比率用作库

from scripts.ratios import *

prices = np.array([100, 105, 102, 110, 108, 115])
r = linear_returns(prices)    # [0.05, -0.0286, 0.0784, -0.0182, 0.0648]
lr = log_returns(prices)      # [0.0488, -0.0290, 0.0755, -0.0183, 0.0628]

sharpe_ratio(r)               # 0.847
max_drawdown(prices)          # -0.0370
kelly_fraction(lr)            # 0.0793
var_all(r, alpha=0.05)        # {'empirical': ..., 'normal': ..., 'johnsonsu': ...}
profit_factor(lr)             # 2.314
payoff_ratio(lr)              # 1.578
rachev_c(lr, alpha=0.05)      # 1.234
common_sense_ratio(lr)        # 2.856

使用引擎

from scripts.engine import BacktestEngine

eng = BacktestEngine(initial_capital=1.0, commission=0.001, slippage=0.0005)
eng.load_data(df_ohlcv)
result = eng.run(strategy='sma_crossover', strategy_params={'fast': 50, 'slow': 200})

print(result['metrics']['sharpe_ratio'])     # 0.847
print(result['trades'])
print(result['metrics'])

依赖项

库必需用途
numpy✅向量化计算、数组、累积乘积
pandas✅CSV 输入/输出、滚动运算、DataFrame
scipy.stats✅分布拟合、KS 检验、Copula
statsmodels可选indicators.py(第 5 类)中的 STL 分解

要运行完整验证套件(py scripts/validate.py),还需要 pytest 来执行第 4 级回归检查。

不需要 arch、quantlib、sklearn。


另请参阅

  • Gauss314 技能仓库 — 其他金融数据技能
  • references/BACKTESTING_THEORY.md — 回测的概念框架(西班牙语)
  • references/RATIOS.md — 公式、收益率约定、注意事项(西班牙语)
  • references/FEATURES.md — 10 类指标及其边的分类体系(西班牙语)
  • references/SIMULATIONS.md — Johnson SU + copula 流水线(西班牙语)
  • references/VALIDATION.md — 4 级验证套件(西班牙语)
  • references/OTHER_FEATURES.md — 基本面、情绪、外生因素(西班牙语)

评论

支持 Markdown