← ClaudeAtlas

point-in-time-researchlisted

Enforce point-in-time data discipline for any quant research task. Trigger for requests such as "回测策略", "因子IC", "检查前视偏差", "量化选股", "验证夏普比率", or "point-in-time backtest". Also trigger this skill whenever the user: (1) backtests a strategy or factor, (2) asks for a Sharpe / alpha / IC / return — even as a quick one-liner ("just give me the Sharpe", "run this backtest"), (3) reviews or asks you to confirm / audit / validate quant or backtest code ("is my code PIT clean?", "confirm this is correct", "check my backtest for look-ahead"), (4) evaluates whether a signal or edge is real, or (5) screens on fundamentals. Fire even when the user claims they already fixed PIT issues — check specifically for whichever of the three silent leaks (period-end dating, latest-value overwrite, same-session execution) may remain. Do NOT trigger for generic finance questions that involve no simulation or data join.
artherahq/skills · ★ 2 · Testing & QA · score 66
Install: claude install-skill artherahq/skills
# Point-in-Time Quant Research A historical price series is not enough to make a backtest point-in-time. The moment a strategy reads a financial fact, that fact must already have been **observable, admissible, and executable** by a real investor. Most "great" backtests are not fraudulent — they are *contaminated* by information that did not exist yet. This skill is the discipline that prevents it. ## When this matters Trigger this skill for any research that turns data into a claim about future returns: factor IC, long-short alpha, Sharpe, a screener edge, an ML signal, a strategy backtest. The user usually will **not** say "look-ahead bias" — they will say "does this strategy work?", "backtest momentum on SPY", "is this factor predictive?". That is exactly when the leaks below do their quiet damage. ## The three silent leaks 1. **Period-end dating.** A fact for the quarter ended 31 Mar describes activity through 31 Mar, but the market only learns it weeks later (earnings release, 10-Q in May). Joining on `period_end` hands the simulated investor weeks of free foresight. Anchor on the **filing/acceptance** time, never the period end. 2. **Latest-value overwrite.** Databases answer "what is the value for this period *now*?" — overwriting the originally-reported number with later restatements. A backtest then trades on a revision that did not exist at the time. Use the **originally-filed** version, not the latest. 3. **Same-session execution.** A release