Learning objectives
By the end you can:
- Write a falsifiable hypothesis before touching the data, an economic mechanism, the population it should hold in, the horizon, the sign, and in advance the observation that would kill it.
- Assemble a point-in-time, survivorship-controlled dataset: reconstruct what was knowable on a given date, gate fundamentals on
filed_daterather than fiscal period, recompute eligibility at every rebalance rather than fixing a universe once, and state what your data cannot tell you. - Construct a signal that is tradable, not merely predictive, with an explicit decision lag, a skip that protects you from the closes you could not have acted on, cross-sectional neutralisation, and winsorisation before scaling.
- Backtest with the lag and the frictions made explicit: next-period execution, turnover-proportional commission and slippage, and a documented capacity limit, and explain why the vectorised one-liner hides the two bugs that matter.
- Produce a complete risk page: historical and parametric VaR and Expected Shortfall, maximum drawdown and time under water, factor/market exposure with its R², and a scenario stress table, and read the gap between the historical and Gaussian numbers as information about your tails.
- Report performance honestly: Sharpe with its convention stated, the deflated Sharpe ratio with the number of trials and the trial dispersion you actually used, in-sample versus out-of-sample with a purged embargo, and turnover and cost drag alongside the headline.
- Build and run the four harnesses as code (
no_lookahead,cost_sensitivityat 2× costs,determinismacross two runs,oos_splitwith an embargo) and demonstrate that each one catches a pipeline you deliberately broke. - Make a research pipeline reproducible: one config object, seeds fixed inside the run, no wall-clock and no network, and a content digest that lets a third party verify they got your number rather than a number.
- Write the one-page limitations memo to the six required headings (capacity, overfitting risk, regime dependence, data-snooping, data limitations, and what would break it) with the specific, quantified admissions that make it useful rather than ritual.
- Judge someone else's backtest in ten minutes, by asking the six questions that separate a result from a rendering, and say precisely which harness would have caught which defect.
- (Productivity objective: R10 duality.) Use a coding copilot the way a working quant researcher does, after you can build the pipeline by hand, and review its output for the failure modes specific to this domain: silently vectorised look-ahead, a resampling call that quietly reorders your index, a "cleaned" dataset with the failures dropped, and a confidently hallucinated statistical formula.
The duality, stated once (R10). The gated skill is objectives 1–10, and the gate is unusually hard to fake: the code pack's hidden tests attack your harnesses with broken pipelines, check point-in-time invariance by deleting rows you were not allowed to see, and require the same fingerprint from two independent runs. Objective 11 is the payoff you keep. The app never calls an AI at runtime, the callout below asks you to generate something in your own tool, paste it back, and let the local hidden tests judge it. The machine drafts; the harnesses decide; you are the one who has to know why it failed.
Prerequisites & connections
Builds on, and this node re-derives none of it. QD1.01 owns data pipelines, corporate actions, and the definition of a point-in-time panel; this node uses that definition and tests it mechanically. QD1.02 owns signal and factor evaluation: IC, IR, decay, turnover, neutralisation; if the phrase "information coefficient" is not automatic, go back. QD1.03 owns backtest-engine design, event-driven versus vectorised, and the classic pitfalls; it ships the first no_lookahead harness, and this node hardens and extends it. QD1.04 owns portfolio optimisation and why naive optimisers blow up. QD2.01 owns execution and market impact, which is where your capacity number comes from. QD2.02 owns risk systems (VaR, ES, VaR backtesting, stress) and QD2.03 owns performance and attribution including the deflated Sharpe ratio's derivation. QD2.04 owns reproducible research, config and secrets management, and López de Prado's anti-overfitting protocols.