← ClaudeAtlas

backtest-validationlisted

Validate whether a backtest result is trustworthy before drawing any conclusion from it. Trigger for "回测这个策略", "这个策略过拟合吗", "夏普这么高可信吗", "加上手续费还赚钱吗", "样本外表现", "validate this backtest", "is this strategy overfit", or whenever the user (1) presents or produces backtest results and wants a judgement, (2) asks whether an edge is real, (3) compares strategy variants and picks the best one, or (4) is about to deploy/paper-trade a strategy based on historical performance. Fire even when the user only asks for the metrics ("just show me the Sharpe") — the metrics are not a conclusion until the gauntlet passes. Pair with point-in-time-research: that skill guards the data going in; this one guards the claim coming out. Do NOT trigger for pure data fetching or for live trading questions with no historical simulation involved.
artherahq/skills · ★ 2 · Testing & QA · score 66
Install: claude install-skill artherahq/skills
# Backtest Validation A backtest is a claim, not a result. In-sample performance is the *cheapest* number in quant research: it rises with every parameter you tune and every variant you discard. This skill converts "the backtest looks great" into a defensible verdict — or an honest rejection. ## The four ways a backtest lies 1. **Selection bias.** You tried N variants and reported the best. The maximum of N noise strategies has a positive expected Sharpe that grows with N. Ask the user how many variants were tried; disclose that number to the Deflated Sharpe Ratio. Undisclosed trials are the most common lie by omission. 2. **Cost blindness.** Gross returns ignore what turnover costs. An edge that dies at 10 bps per unit of turnover was never an edge — it was a liquidity donation you had not made yet. 3. **In-sample memorization.** Parameters fitted on the full history describe the past, not the future. A chronological in-sample / out-of-sample split is the minimum; walk-forward is better when the series is long enough. 4. **Fragility.** One draw of history is one draw. If a stationary block bootstrap says p(Sharpe ≤ 0) is 10%, the "edge" is statistically indistinguishable from luck regardless of how the equity curve looks. Look-ahead and revision leakage are the *fifth* way — that is `point-in-time-research`'s jurisdiction. When the input data has not passed PIT discipline, run that skill first; a gauntlet on contaminated data validates nothing.