Risk Model.
How much risk are you actually running — and what would six historical stress windows do to your book today?
Variance, attributed; stress, replayed.
Two reports in one page. The first decomposes total portfolio volatility into the part driven by your factor exposures and the part driven by name-specific noise. You see your aggregate tilt — long quality, short value, neutral size — and the per-asset risk contribution table tells you which positions are doing the heavy lifting.
The second replays your weights through six curated historical stress windows. No rebalancing inside the window; just the honest answer to “what would I have lost if I’d held this book through 2008?” A defensive book sometimes wins in 2018 Q4 while losing badly in COVID. The table makes that visible.
Two engines, one page.
σ²_total = β'Σ_F β + Σ wᵢ²·σ²_εᵢ
- 1. Per asset, fit r_i = α_i + β_i·F + ε_i on the factor panel (the same six ETFs used in Factor Lens).
- 2. Aggregate: portfolio factor exposure β_p = Σ w_i·β_i.
- 3. Systematic variance = β_p'·Σ_F·β_p, annualized.
- 4. Idiosyncratic variance = Σ w_i²·var(ε_i), annualized.
- 5. Per-asset risk contribution = w_i · (Σ_assets·w)_i / σ_p.
R_scenario = Σ w_i · (P_end/P_start − 1)
- 1. Pick a scenario window; cut each ticker’s daily closes to that slice.
- 2. Hold weights fixed across the window — no rebalancing inside the stress.
- 3. Per-bar portfolio value = Σ w_i · (P_t/P_start_i); maxDD tracked alongside total return.
- 4. Per-asset contribution shows which holdings drove the scenario P&L.
Frequently asked
- What does the risk decomposition tell me?
- Total portfolio variance is split into the part explained by your factor exposures (systematic) and the part left over (idiosyncratic, sometimes called specific). A 70% systematic portfolio means style and market betas drive most of your risk; 70% idiosyncratic means single-name shocks dominate. Both are valid — but knowing which is which changes how you hedge.
- What scenarios are included?
- Six curated, dated windows: 2008 GFC peak-to-trough (Sep 1, 2008 → Mar 9, 2009), 2011 EU debt crisis (Jul 1 → Oct 3, 2011), 2015-16 China devaluation (Aug 1, 2015 → Feb 11, 2016), 2018 Q4 tightening selloff (Oct 1 → Dec 24, 2018), 2020 COVID crash (Feb 19 → Mar 23, 2020), and 2022 rate-hike + tech selloff (Jan 3 → Oct 12, 2022).
- How is the stress P&L computed?
- Your supplied weights are held fixed across each scenario window — no rebalancing inside the stress. Per-asset cumulative return is computed from actual historical closes, weighted, and summed. The result is what your current portfolio would have paid (or lost) if you had held it through that exact window.
- Can I run it on my actual portfolio?
- Yes. The 'From my portfolio' toggle auto-imports positions you've added to Quantle (weights derived from current market value, cash excluded). Use 'Custom weights' for hypotheticals — paste tickers and weights, hit Run.
- What if some tickers didn't trade during a scenario?
- Names that didn't exist in the scenario window contribute zero bars and zero P&L to that scenario. The result table flags 'bars used' so you can see when a scenario is only partially representative of your current book.
- Does it model correlation between residuals?
- No — the idiosyncratic variance term currently assumes uncorrelated residuals across assets. That's the standard simplifying assumption for retail-grade risk models. For institutional uses where residual correlation matters (e.g. sector pairs), it's flagged on the roadmap.
Stress-test the book you actually hold.
Free in browser. Add your positions once, run the model whenever you like.
Open the workspace