backtesting
Skill242 starsChanged 5 months agoMITView on GitHub
Academic backtesting framework for quantitative research. ~30 risk and performance ratios, 10 classes of indicators, event-driven engine with 6+ strategies, MPT optimizer, forward-looking simulation with Johnson SU + t-Copula, walk-forward CV, stress testing, fundamental analysis (Altman Z, Piotroski, DuPont). All flat Python + numpy.
6 other projects use a version of this.
Adopted by
Most recently taken up by
- noahowsh/birdieapi-mcptheir own version, first seen Oct 25, 2026
- noahowsh/endzoneapi-mcptheir own version, first seen Oct 17, 2026
- PuckAPI/claude-sports-analyticstheir own version, first seen Oct 14, 2026
- nimadorostkar/Claude-Skills-collectiontheir own version, first seen Oct 13, 2026
- noahowsh/acesapi-mcptheir own version, first seen Oct 13, 2026
- Yahmez3/Claude-Skillstheir own version, first seen Apr 15, 2026
Used with
Projects with it also use edge-detection, odds-analysis and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
noahowshSkilledge-detection
Comparing a tennis model's probability with the market: no-vig close, expected value at the best available price, closing line value, fractional Kelly sizing, and the checks that separate an estimated edge from noise. Use when the user has a probability and wants to know whether a price is better than fair, how large a stake is reasonable, or whether an edge is real. Requires a probability the user trusts. Do not use for fetching prices: see odds-explorer. Do not use for devig math alone: see odds-analysis. Do not use for historical testing: see backtesting.
Also in 4 projects that use this
noahowshSkillodds-analysis
Odds math for two-way tennis markets: American to implied probability, margin, devigging (multiplicative, power, Shin), no-vig fair odds, consensus across books, favorite-longshot bias, and expected value of a price. Use when the user asks what a price implies, how to remove the vig, what the true probability is, or how to compare books. Do not use for fetching or comparing live prices: see odds-explorer. Do not use for deciding a bet against a model: see edge-detection.
Also in 4 projects that use this
agiprolabsSkillwalk-forward-validation
Walk-forward validation framework for trading strategies and ML models with time-series-aware splits, overfit detection, and regime-aware validation
Also in 4 projects that use this
ffsshhttiikkSkillfeature-engineering
Machine learning feature engineering
Also in 4 projects that use this
bassimeledathSkilldispatch
Dispatch background AI worker agents to execute tasks via checklist-based plans.
Also in 4 projects that use this
- +3 more from noahowsh
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- nimadorostkar/Claude-Skills-collection★ 33same name
- PuckAPI/claude-sports-analytics★ 3same name
- noahowsh/acesapi-mcp★ 1same name
- noahowsh/birdieapi-mcp★ 0same name
- noahowsh/endzoneapi-mcp★ 0same name
- Yahmez3/Claude-Skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository31 other files it gives its agents.
- alpaca-dataSkill
- alpaca-tradingSkill
- alpha-vantageSkill
- barchartSkill
- bcra-macroSkill
- bymaSkill
- cafciSkill
- cboe-dataSkill
- companiesmarketcapSkill
- data912Skill
- earningswhispersSkill
- finnhubSkill
- finvizSkill
- fred-macroSkill
- google-financeSkill
- historyofmarketSkill
- indecSkill
- investingSkill
- macrotrendsSkill
- maeSkill
- marketscreenerSkill
- marketwatchSkill
- morningstarSkill
- nasdaq-dataSkill
- option-pricingSkill
- portfolioSkill
- primarySkill
- sec-dataSkill
- simplywallstSkill
- tradingviewSkill
- yahoo-financeSkill
The file
We split this skill into the rules it gives an agent
1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 6 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 21
All scripts use only numpy, pandas, and scipy.
“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Backtesting — Full Backtesting Skill
This skill implements the full 5-stage backtesting methodology from the course material: Data → Research → Metrics → Parameterisation → Validation. It provides:
- 30+ risk/performance ratios (flat, numpy-vectorized, no classes)
- 10 classes of indicators following the course taxonomy (trend-following, oscillators, contrarians, flow, combined, discrete counts, seasonality, statistical, referential, fundamental)
- Event-driven backtesting engine with 8 built-in strategies
- Forward-looking simulation (Johnson SU marginals + t/Gaussian copula)
- Portfolio theory (Markowitz efficient frontier, portfolio-of-portfolios)
- Walk-forward cross-validation with IS/OOS split + gap
- Stress testing with parametric scenario shocks
- Fundamental analysis (Altman Z, Piotroski F, DuPont)
All scripts use only numpy, pandas, and scipy. No heavy dependencies.
Part of the Gauss314 Skills Repository.
File Map
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 ratiosWhat each file does
| File | Role | Key Functions / Modes |
ratios.py | The core library. Every ratio is a flat function accepting 1-D arrays. | 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.py | 10 classes of indicators, covering all types from the course taxonomy. | rsi, adx, bbands, macd, atr, cross_indicator, range_bound, zscore_norm, poisson_rate, binomial_ratio, fourier_terms, best_fit_dist |
engine.py | BacktestEngine class and 8 strategy functions. | BacktestEngine, strategy_sma_crossover, strategy_rsi_cross, strategy_bbands_contrarian, strategy_growth_momentum_combo |
backtesting.py | Main CLI. Run full backtests, walks, sweeps, optimization. | run, sweep, walkforward, montecarlo, optmpt, event, validate, bench |
simulations.py | Forward-looking simulation with Johnson SU + copula. | marginal, copula, run, portfolio, scenarios |
forward.py | Risk projection and stress testing. | project, risk, stress, summary |
distributions.py | Distribution fitting and comparison. | fit, best_fit, compare_distributions, sample |
copulas.py | Copula fitting and sampling. | fit_t, fit_gaussian, sample_t, sample_gaussian, validate_copula |
fundamental_ratios.py | Fundamental analysis ratios. | income_metrics, valuation_metrics, dupont, altman_z, piotroski |
validate.py | 4-level integration testing suite. | 33 checks across CLI, math, edge cases, regression |
Quick Start
Basic Ratios
# 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.csvValidate (4-level suite)
# Full validation (33 checks across 4 levels)
py scripts/validate.py
# Single level
py scripts/validate.py --nivel 1Validates CLI modes, mathematical consistency of all ratios, edge case resilience, and post-fix regression. See references/VALIDATION.md for the detailed breakdown of all 33 checks.
Event-Driven Backtest
# 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.001Parameter Sweep
# 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 25Walk-Forward
py scripts/backtesting.py walkforward --prices assets/sp500_returns.csv --splits 5 --gap 21Markowitz Optimization
py scripts/backtesting.py optmpt --assets assets/sp500_returns.csv --iterations 5000Forward Simulation
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 10000Portfolio Simulation
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.5Using Ratios as a Library
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.856Using the Engine
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'])Dependencies
| Library | Required | Used for |
numpy | ✅ | Vectorised computation, arrays, cumprod |
pandas | ✅ | CSV I/O, rolling operations, DataFrames |
scipy.stats | ✅ | Distribution fitting, KS test, copulas |
statsmodels | Optional | STL decomposition in indicators.py (Class 5) |
To run the full validation suite (py scripts/validate.py) you also need pytest for the Level 4 regression check.
No arch, quantlib, sklearn required.
See Also
- Gauss314 Skills Repository — other skills for financial data
references/BACKTESTING_THEORY.md— marco conceptual del backtesting (ES)references/RATIOS.md— fórmulas, convención de retornos, advertencias (ES)references/FEATURES.md— taxonomía de 10 clases de indicadores con edges (ES)references/SIMULATIONS.md— pipeline de Johnson SU + cópula (ES)references/VALIDATION.md— suite de validación de 4 niveles (ES)references/OTHER_FEATURES.md— fundamental, sentimiento, exógenos (ES)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

