The Analyst's Path

Phase 12 · Finance Plus, AI and the quant-code track · free

Capstone — Build, Backtest & Risk-Analyze a Strategy End-to-End

QD2.05 · 14,905 words

That last sentence is not a flourish. It is the grading rule, and you should read it before you read anything else in this document. > The grading rule, stated once and enforced everywhere. Honesty is scored on its own axis.

Learning objectives

By the end you can:

  1. 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.
  2. Assemble a point-in-time, survivorship-controlled dataset: reconstruct what was knowable on a given date, gate fundamentals on filed_date rather than fiscal period, recompute eligibility at every rebalance rather than fixing a universe once, and state what your data cannot tell you.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. Build and run the four harnesses as code (no_lookahead, cost_sensitivity at 2× costs, determinism across two runs, oos_split with an embargo) and demonstrate that each one catches a pipeline you deliberately broke.
  8. 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.
  9. 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.
  10. 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.
  11. (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.

This page is an excerpt

The full module runs to 14,905 words and carries the worked examples, the tables, the quiz that gates the next module and the spaced-repetition deck built from it. All of it is free and none of it needs an account.