Risk Management Review
A disciplined, repeatable methodology for reviewing the risk of a portfolio,
trading strategy, or single position — before sizing it, while running it, or
when stress hits. It answers four questions, in order:
- What is the loss distribution? (volatility, skew, fat tails, drawdown profile)
- How big should the position(s) be? (Kelly, fractional Kelly, vol-targeting, Optimal f)
- What is the right risk-adjusted return metric? (Sharpe / Sortino / Calmar / UPI — not raw return)
- How does the portfolio fail? (concentration, correlation, regime, leverage, liquidity, tail)
The output is a blunt verdict banner, a numeric risk dashboard, a
sizing review, a stress-test table, and concrete recommendations —
backed by formulas the user can re-run.
Honest scope and limits. I reason over what you provide (returns series,
positions/weights, leverage, scenario inputs). Without numbers, output is
qualitative. Risk metrics describe history and assumed distributions — they
do not predict the next regime shift. Not financial advice; size below
your pain threshold.
When to Activate
Activate when the user:
- Asks "is this position too big?" or "how much should I risk on this trade?"
- Shares a returns series and asks for risk metrics (Sharpe, Sortino, MDD, VaR, ES).
- Wants a portfolio risk review ("am I diversified?", "what's my real downside?").
- Mentions any of: Kelly · fractional Kelly · vol targeting · drawdown · MDD ·
VaR · CVaR · Expected Shortfall · Sharpe · Sortino · Calmar · Ulcer Index ·
risk-of-ruin · position sizing · leverage cap · concentration · stress test ·
reverse stress test · risk parity · Optimal f.
- Wants to institutionalize a risk policy (single-name cap, factor cap,
drawdown stop, leverage cap) for a fund / personal book / trading desk.
Step 1: Intake & Scope
Pin down what is being reviewed and what inputs you have before computing
anything. A risk number without scope is theatre.
- What is being reviewed?
- (A) Single position — one symbol / one trade. Sizing is the dominant
question.
- (B) Strategy — a rule-set with a returns series (live or backtest).
Risk-adjusted return + drawdown + tail are dominant.
- (C) Multi-asset portfolio — multiple positions, possibly leveraged.
Concentration + correlation + stress are dominant.
- What inputs are available?
- Returns series (daily / weekly / monthly): needed for σ, σ_d, MDD, UI,
VaR, ES, Sharpe, Sortino, Calmar, UPI.
- Positions / weights (per name): needed for concentration, top-N share,
sector/factor exposure.
- Leverage (gross and net): needed for risk-of-ruin and margin checks.
- Pairwise correlations (or factor exposures): needed for "ρ → 1" stress.
- Scenario inputs (vol shock, rate shock, liquidity haircut): for stress
tests.
- Capital, benchmark, risk policy.
- NAV (so percentages map to dollars).
- Benchmark (SPY / 60-40 / risk-free): so we can compute Information Ratio
when relevant.
- Existing risk policy (single-name cap, factor cap, leverage cap, max
drawdown stop) — if absent, flag it as a Step-8 red flag.
- Horizon and regime.
- Holding period (intraday / daily / monthly).
- Realized regime over the returns window (bull / bear / low-vol / crisis) —
a 2017-only sample is not a risk model.
Do not proceed to a verdict until you know what is being reviewed, what
inputs exist, and what the existing risk policy (if any) is.
Step 2: Loss Distribution & Metrics
Compute (or explain how to compute) every metric below. Use the formulas
verbatim — the user should be able to re-run them.
Volatility & dispersion
- Standard deviation
σ = sqrt( mean( (r_t − r̄)² ) ) — total dispersion;
symmetric (treats upside = downside).
- Downside deviation
σ_d = sqrt( mean( min(r_t − MAR, 0)² ) ) — only
returns below the minimum acceptable return (often 0 or the risk-free
rate) count. Used by Sortino.
Drawdown family
- Max drawdown
MDD = max_t (peak_t − value_t) / peak_t — the single
number every retail trader should know.
- Average drawdown — mean of all drawdown episodes (each counted from peak
to recovery).
- Drawdown duration — peak → trough → recovery in calendar time. A long
flat -20% is often more painful than a fast -30% that recovers in a month;
track duration, not just depth.
- Ulcer Index (Peter Martin, 1987):
UI = sqrt( mean( drawdown_t² ) ) over the period.
Captures depth × time underwater in one number — penalises sustained
underwater periods.
Tail risk
- VaR_α — the loss that is not exceeded with confidence α. "95% daily
VaR = $X" means the worst 5% of days lose at least $X. Computable via
historical sim, parametric (normal), or Monte Carlo. VaR is NOT
subadditive — combining two portfolios' VaRs can give the wrong answer.
- CVaR / Expected Shortfall
ES_α = E[ loss | loss ≥ VaR_α ] — the
average loss in the worst (1 − α) of cases. Coherent (subadditive,
monotonic, translation-invariant, positive-homogeneous). Basel III moved
banks from VaR to ES_97.5 — prefer ES for portfolio decisions.
- Risk of ruin — probability the equity curve hits a fatal threshold. Closed
form exists for IID Bernoulli trades; otherwise simulate.
- Tail / kurtosis check — empirical returns are fat-tailed, not
normal, almost always. Parametric-normal VaR therefore systematically
understates tail loss. If you must use it, call out the assumption and
cross-check against historical/ES.
Output these as a dashboard table (Step 9), not prose.
Step 3: Risk-Adjusted Return
Never quote raw return. Always pair it with one of these — and pick the one
that matches the strategy shape.
| Metric |
Formula |
When it fits |
What it hides |
| Sharpe |
(R − R_f) / σ |
Roughly symmetric returns; broad comparability. |
Punishes upside vol; gamed by autocorrelation & illiquidity smoothing. |
| Sortino |
(R − MAR) / σ_d |
Asymmetric payoffs (options, trend following). |
MAR choice (0 vs R_f) changes the number; still a single-number summary. |
| Calmar |
`annualised return / |
MDD |
` |
| Ulcer Performance Index (UPI / Martin ratio) |
(R − R_f) / UI |
"Did I sleep at night?" — penalises underwater time. |
Less standard than Sharpe; needs a long enough window. |
| Information Ratio |
active return / tracking error |
Benchmark-relative strategies. |
Tells you nothing about absolute drawdown. |
Patterns that should make you suspicious
- Sharpe > 3 on a non-HFT strategy → likely over-fit, illiquidity smoothing,
or hidden tail (short-vol). Treat as red flag, not a feature.
- Autocorrelated daily returns — inflates Sharpe artificially; check via the
autocorrelation of
r_t (a daily ρ of 0.2+ is suspicious for liquid markets).
- Sortino << Sharpe → the upside is the source of "return" (e.g. selling
vol / picking up nickels in front of a steam roller). Drawdowns are larger
than the symmetric vol implies.
- Calmar high but UPI low → the strategy avoided one giant DD but spends
long stretches underwater (a slow bleed); investors will redeem.
Multiple-testing. If the strategy was selected from many candidates,
Sharpe overstates skill. Cross-link the Viprasol trading-strategy-review
skill to compute Deflated Sharpe (Bailey & López de Prado) and Probability
of Backtest Overfitting before trusting the headline number.
Step 4: Position Sizing Review
What method is being used? Apply the right formula; flag missing or arbitrary
sizing as a Step-8 red flag.
Kelly criterion
- Discrete bet with edge
e and net odds b: f* = e / b.
- Continuous returns (the practical form):
f* = (μ − r) / σ²
where μ = expected return, r = risk-free rate, σ² = return variance.
- Why Kelly maximises long-run growth — and why pure Kelly is too
aggressive in practice: parameter-estimation error (μ and σ are estimated,
not known) → systematic over-sizing → catastrophic drawdowns when reality
rhymes differently than the sample. Kelly also assumes IID stationary
returns; real markets shift regime.
- Half-Kelly / quarter-Kelly is the practitioner default. Halving f*
approximately halves volatility while keeping most of the geometric growth.
Volatility targeting
Risk parity (limits)
- Equal risk contribution, not equal weight:
w_i × σ_i × ρ_{ip} = const.
Works when correlations are stable; fails badly in crisis when everything
correlates → 1.
Optimal f (Vince)
- Maximises geometric growth on the actual P&L distribution (not an assumed
Gaussian). Closer to "empirical Kelly" — better than naive Kelly when payoffs
are highly non-binary (options strategies, lumpy event trades).
Output of this step
State the current sizing method (or "gut-feel — none documented" if so),
the recommended sizing, and the constraint that should bind (the lower
of half-Kelly, vol-target sizing, and the single-name cap from Step 5). Show
the numbers.
Step 5: Concentration, Correlation & Leverage
Sizing is necessary but not sufficient — a properly-sized but concentrated
portfolio still blows up.
- Single-position cap — practitioner default: 5–10% of NAV per single
position. Tighter (1–3%) for illiquid names. >10–15% on one name = flag.
- Sector / factor concentration — sum exposures to any one factor (tech,
oil, US-rates duration, EM-FX, momentum) and apply a hard cap. A "diversified"
book of 8 tech names is one position.
- Top-N concentration — top-3 holdings > 40% of NAV = flag, regardless
of vol; reads as "if any one of these breaks, the book breaks."
- Pairwise correlation stress — assume ρ → 1 in crisis for all
risk-on assets and recompute portfolio vol. If realized vol explodes, the
book is a single bet dressed up as diversification.
- Leverage — gross (sum of absolute exposures) vs net (long − short).
Practitioner reads:
- gross > 2× equity = elevated (intraday stops mandatory),
- gross > 3× without stops = flag,
- gross > 4× = institutional / margin-call territory (one bad day kills the
fund).
- Liquidity — position size as a % of average daily volume (ADV). >1
ADV = "can't exit in one day at quoted prices"; price-of-exit is part of the
risk model.
Step 6: Stress-Test Catalog
Apply at least 3 historical scenarios and 2 hypotheticals plus a
reverse stress test. Report portfolio P&L per scenario, in dollars and
as a percent of NAV.
Historical replays (apply each book to the move)
- 1987-Oct ("Black Monday") — SPX -22% in a day.
- 2008-Sep–Nov ("GFC") — SPX peak-to-trough ≈ -45%, credit spreads ×3,
funding markets frozen, gold up, treasuries up.
- 2020-Mar ("COVID crash") — SPX -34% in 22 trading days, IG spreads ×3,
HY ×4, oil briefly negative, VIX > 80, correlations → 1.
- 2022 bond rout — bonds and equities down together; 60-40 had its worst
year since the 1930s.
- 2023-Mar ("SVB") — regional-bank stress, 2-yr UST fastest move in
decades, repricing of duration.
Hypotheticals
- +1σ vol shock — multiply realised σ by ~1.7× (one standard deviation up
on a vol-of-vol basis); does the leverage cap still hold?
- -10% equity / +200bp rates instant — concurrent shock to both legs.
- Correlation → 1 — every "diversifier" moves with risk; recompute portfolio
vol on a correlation matrix of ones.
- 50% liquidity haircut — every exit price halves the bid; how big is the
gap between mark and exit?
Reverse stress test
Ask the inverse question: what move kills the book? Solve for the
combination of equity shock + vol shock + correlation shock + liquidity shock
that drives the portfolio to a fatal drawdown (e.g. -50%). If the answer is
"3% intraday on SPX", the book is too levered. If the answer is "1987 + 2008
- 2020 all at once and twice as big", it is robust.
Step 7: Risk-of-Ruin
Make the asymmetry explicit. Drawdown recovery is multiplicative, not
additive.
required gain to recover from a drawdown of d = 1 / (1 − d) − 1
-25% → +33.3%
-50% → +100%
-75% → +300%
-80% → +400%
-90% → +900%
Asymmetry kills compounders. A strategy that compounds at 15% for ten
years and gives back 80% in year eleven is a worse outcome than one that
compounds at 6% with no -80% event.
Risk-of-ruin is high whenever sizing or leverage make a fatal drawdown a
plausible path, not a tail. Triggers to call this out explicitly:
- Single position > 20% of NAV with σ_i > 50% annualised.
- Pure-Kelly (not fractional) sizing.
- Gross leverage > 3× without intraday stops.
- A stress-test row in Step 6 produces > -40% portfolio P&L.
Compute, when given the inputs, the probability of breaching a drawdown
threshold (e.g. -50%) over the holding horizon — via the closed-form ruin
formula for IID trades or a quick Monte Carlo.
Step 8: Red-Flag Quick Scan
Any one of these moves the verdict toward 🟠 / ⛔.
- Sharpe > 3 on a non-HFT strategy → over-fit or hidden tail.
- Single position > 10–15% of NAV.
- Top-3 positions > 40% of NAV.
- MDD < 5% on 6+ months of live data → fat-tail risk hidden (likely a
short-vol / sell-tail payoff).
- Leverage gross > 3× without intraday stops.
- Undefined max loss / no stop / no position cap in the strategy doc.
- "Sizing by gut-feel" — no Kelly, vol target, or fixed-fractional rule
documented.
- Correlation → 1 in stress ignored — book is implicitly one factor.
- Sortino << Sharpe — upside is the source of "return"; downside fat-tail
hidden.
- Parametric-normal VaR on fat-tailed returns — VaR systematically
understates; pair with ES_97.5 and historical sim.
- No drawdown duration tracked — only depth. Long flat losses get under
investors' skin.
Step 9: Output Format — the Risk Report
Lead with a verdict banner, then the dashboards, the sizing review, the
stress-test table, the risk-of-ruin call-out (when relevant), the
recommendations, and the disclaimer.
Verdict banner (pick one)
- ✅ WITHIN RISK POLICY — caps respected, sizing methodical, stress tests
within tolerance, no red flags.
- 🟡 CAUTION — within caps but one or two yellow flags (concentration creep,
high but not fatal leverage, missing reverse stress test, Sortino noticeably
below Sharpe).
- 🟠 OVER-RISK — at least one hard cap breached (single-name > 15%, top-3 >
40%, gross > 3× without stops, MDD path > 30% in stress). Reduce before
doing anything else.
- ⛔ LIKELY-RUIN PATH — sizing or leverage make a fatal drawdown a
plausible path, not a tail (pure Kelly + 3×, all-in one factor, stress row
-40%). Cut size now.
Follow the banner with one sentence explaining why.
Risk dashboard
| Metric |
Value |
Notes |
| Annualised σ |
… |
total dispersion |
| Downside deviation σ_d |
… |
MAR used = … |
| Max drawdown |
… |
peak → trough … |
| MDD duration |
… days |
peak → recovery |
| Ulcer Index |
… |
depth × time underwater |
| Sharpe |
… |
R_f used = … |
| Sortino |
… |
MAR used = … |
| Calmar |
… |
annualised return / |
| UPI (Martin ratio) |
… |
(R − R_f) / UI |
| VaR_95 (daily, historical) |
… |
…% of NAV |
| ES_97.5 (daily) |
… |
…% of NAV |
Position dashboard
| Item |
Value |
Cap |
Status |
| Single-name max |
…% NAV |
10% |
✅/🟠 |
| Top-3 share |
…% NAV |
40% |
✅/🟠 |
| Dominant factor |
…% NAV |
25% |
✅/🟠 |
| Gross leverage |
…× |
2× |
✅/🟠 |
| Net leverage |
…× |
— |
— |
| Largest position vs ADV |
…× |
1× |
✅/🟠 |
Sizing review
State the current method (or "none — gut-feel"), the Kelly / half-Kelly /
vol-target recommended sizes (with formulas and plugged-in numbers), the
binding cap, and the recommended size in dollars and % NAV.
Stress-test table
| Scenario |
Assumed shock |
Portfolio P&L |
Post-stress NAV |
| 1987-Oct replay |
SPX -22% in a day |
… |
… |
| 2008-Sep–Nov replay |
SPX -45% / spreads ×3 |
… |
… |
| 2020-Mar replay |
SPX -34% in 22 days / ρ → 1 |
… |
… |
| +1σ vol shock |
σ × 1.7 |
… |
… |
| -10% equity / +200bp rates |
concurrent |
… |
… |
| Reverse stress |
move that drives -50% NAV |
… |
… |
Risk-of-ruin call-out (when triggered)
State the path, the recovery math (+X% needed to recover -Y%), and the
probability of breaching the user's drawdown threshold over the horizon if a
closed-form or quick Monte Carlo gives it.
Recommendations
Concrete and numbered. Examples:
- Cut single-name X from 18% → 8% (single-name cap).
- Replace 3× ETF with the underlying to remove embedded leverage.
- Add a tail hedge: SPX 5-delta puts, 1% of NAV per month.
- Cap gross leverage at 2× with an intraday -2% NAV hard stop.
- Switch sizing from gut-feel to vol-target 12% annualised with a half-Kelly
override per position.
Disclaimer (always include)
Educational risk-management guidance — not financial, legal, or investment
advice, and not a guarantee of safety. I reason only over the data you
provide; without numbers, output is qualitative. Risk metrics describe
history and assumed distributions; they do not predict the next
regime shift. Risk-of-ruin is real — size below your pain threshold.
Markets do things that have never happened before. Consult a qualified risk
or investment professional for live decisions.
Related Viprasol Skills
trading-strategy-review — backtest failure-modes (look-ahead,
overfitting, survivorship, slippage) and Deflated Sharpe / PBO. Pair with
this skill before trusting a headline Sharpe.
options-strategy-analyzer — Greeks, payoff diagrams, and closed-form
max-loss / max-profit / break-even for defined-risk option structures. Use
before plugging an options strategy's σ and DD into this review.
Not affiliated with or endorsed by Anthropic.
1---2name: risk-management-review3description: Review a portfolio, trading strategy, or single-position risk — volatility, drawdown, VaR/CVaR (ES), Sharpe/Sortino/Calmar/UPI, Kelly & volatility-targeted sizing, concentration & leverage caps, and stress tests. Outputs a verdict, risk dashboard, sizing review, stress-test table, and concrete recommendations. Use to vet a trade size, audit a portfolio, or institutionalize a risk policy.4---56# Risk Management Review78A disciplined, repeatable methodology for reviewing the **risk** of a portfolio,9trading strategy, or single position — before sizing it, while running it, or10when stress hits. It answers four questions, in order:11121. **What is the loss distribution?** (volatility, skew, fat tails, drawdown profile)132. **How big should the position(s) be?** (Kelly, fractional Kelly, vol-targeting, Optimal f)143. **What is the right risk-adjusted return metric?** (Sharpe / Sortino / Calmar / UPI — not raw return)154. **How does the portfolio fail?** (concentration, correlation, regime, leverage, liquidity, tail)1617The output is a blunt **verdict banner**, a numeric **risk dashboard**, a18**sizing review**, a **stress-test table**, and concrete **recommendations** —19backed by formulas the user can re-run.2021> **Honest scope and limits.** I reason over what you provide (returns series,22> positions/weights, leverage, scenario inputs). **Without numbers, output is23> qualitative.** Risk metrics describe history and assumed distributions — they24> do **not** predict the next regime shift. **Not financial advice; size below25> your pain threshold.**2627---2829## When to Activate3031Activate when the user:3233- Asks **"is this position too big?"** or *"how much should I risk on this trade?"*34- Shares a **returns series** and asks for risk metrics (Sharpe, Sortino, MDD, VaR, ES).35- Wants a **portfolio risk review** ("am I diversified?", "what's my real downside?").36- Mentions any of: *Kelly · fractional Kelly · vol targeting · drawdown · MDD ·37 VaR · CVaR · Expected Shortfall · Sharpe · Sortino · Calmar · Ulcer Index ·38 risk-of-ruin · position sizing · leverage cap · concentration · stress test ·39 reverse stress test · risk parity · Optimal f.*40- Wants to **institutionalize a risk policy** (single-name cap, factor cap,41 drawdown stop, leverage cap) for a fund / personal book / trading desk.4243---4445## Step 1: Intake & Scope4647Pin down **what** is being reviewed and **what inputs** you have before computing48anything. A risk number without scope is theatre.49501. **What is being reviewed?**51 - **(A) Single position** — one symbol / one trade. Sizing is the dominant52 question.53 - **(B) Strategy** — a rule-set with a returns series (live or backtest).54 Risk-adjusted return + drawdown + tail are dominant.55 - **(C) Multi-asset portfolio** — multiple positions, possibly leveraged.56 Concentration + correlation + stress are dominant.572. **What inputs are available?**58 - **Returns series** (daily / weekly / monthly): needed for σ, σ_d, MDD, UI,59 VaR, ES, Sharpe, Sortino, Calmar, UPI.60 - **Positions / weights** (per name): needed for concentration, top-N share,61 sector/factor exposure.62 - **Leverage** (gross and net): needed for risk-of-ruin and margin checks.63 - **Pairwise correlations** (or factor exposures): needed for "ρ → 1" stress.64 - **Scenario inputs** (vol shock, rate shock, liquidity haircut): for stress65 tests.663. **Capital, benchmark, risk policy.**67 - **NAV** (so percentages map to dollars).68 - **Benchmark** (SPY / 60-40 / risk-free): so we can compute Information Ratio69 when relevant.70 - **Existing risk policy** (single-name cap, factor cap, leverage cap, max71 drawdown stop) — if absent, **flag it** as a Step-8 red flag.724. **Horizon and regime.**73 - Holding period (intraday / daily / monthly).74 - Realized regime over the returns window (bull / bear / low-vol / crisis) —75 a 2017-only sample is not a risk model.7677Do not proceed to a verdict until you know **what is being reviewed**, **what78inputs exist**, and **what the existing risk policy (if any) is**.7980---8182## Step 2: Loss Distribution & Metrics8384Compute (or explain how to compute) every metric below. Use the formulas85verbatim — the user should be able to re-run them.8687### Volatility & dispersion8889- **Standard deviation** `σ = sqrt( mean( (r_t − r̄)² ) )` — total dispersion;90 **symmetric** (treats upside = downside).91- **Downside deviation** `σ_d = sqrt( mean( min(r_t − MAR, 0)² ) )` — only92 returns below the **minimum acceptable return** (often 0 or the risk-free93 rate) count. Used by Sortino.9495### Drawdown family9697- **Max drawdown** `MDD = max_t (peak_t − value_t) / peak_t` — the single98 number every retail trader should know.99- **Average drawdown** — mean of all drawdown episodes (each counted from peak100 to recovery).101- **Drawdown duration** — *peak → trough → recovery* in calendar time. A long102 flat -20% is often more painful than a fast -30% that recovers in a month;103 **track duration, not just depth**.104- **Ulcer Index** (Peter Martin, 1987):105 `UI = sqrt( mean( drawdown_t² ) )` over the period.106 Captures *depth × time underwater* in one number — penalises sustained107 underwater periods.108109### Tail risk110111- **VaR_α** — the loss that is **not** exceeded with confidence α. *"95% daily112 VaR = $X"* means the worst 5% of days lose **at least** $X. Computable via113 historical sim, parametric (normal), or Monte Carlo. **VaR is NOT114 subadditive** — combining two portfolios' VaRs can give the wrong answer.115- **CVaR / Expected Shortfall** `ES_α = E[ loss | loss ≥ VaR_α ]` — the116 **average** loss in the worst (1 − α) of cases. **Coherent** (subadditive,117 monotonic, translation-invariant, positive-homogeneous). **Basel III moved118 banks from VaR to ES_97.5** — prefer ES for portfolio decisions.119- **Risk of ruin** — probability the equity curve hits a fatal threshold. Closed120 form exists for IID Bernoulli trades; otherwise simulate.121- **Tail / kurtosis check** — empirical returns are **fat-tailed**, **not122 normal**, almost always. Parametric-normal VaR therefore **systematically123 understates** tail loss. If you must use it, call out the assumption and124 cross-check against historical/ES.125126Output these as a **dashboard table** (Step 9), not prose.127128---129130## Step 3: Risk-Adjusted Return131132Never quote raw return. Always pair it with one of these — and pick the one133that matches the strategy shape.134135| Metric | Formula | When it fits | What it hides |136|---|---|---|---|137| **Sharpe** | `(R − R_f) / σ` | Roughly symmetric returns; broad comparability. | Punishes upside vol; gamed by autocorrelation & illiquidity smoothing. |138| **Sortino** | `(R − MAR) / σ_d` | Asymmetric payoffs (options, trend following). | MAR choice (0 vs R_f) changes the number; still a single-number summary. |139| **Calmar** | `annualised return / |MDD|` | "Can I survive the worst stretch?" framing. | Single-event metric — one big DD dominates. |140| **Ulcer Performance Index (UPI / Martin ratio)** | `(R − R_f) / UI` | "Did I sleep at night?" — penalises underwater **time**. | Less standard than Sharpe; needs a long enough window. |141| **Information Ratio** | `active return / tracking error` | Benchmark-relative strategies. | Tells you nothing about absolute drawdown. |142143### Patterns that should make you suspicious144145- **Sharpe > 3 on a non-HFT strategy** → likely over-fit, illiquidity smoothing,146 or hidden tail (short-vol). Treat as **red flag**, not a feature.147- **Autocorrelated daily returns** — inflates Sharpe artificially; check via the148 autocorrelation of `r_t` (a daily ρ of 0.2+ is suspicious for liquid markets).149- **Sortino << Sharpe** → the **upside** is the source of "return" (e.g. selling150 vol / picking up nickels in front of a steam roller). Drawdowns are larger151 than the symmetric vol implies.152- **Calmar high but UPI low** → the strategy avoided one giant DD but spends153 long stretches underwater (a slow bleed); investors will redeem.154155> **Multiple-testing.** If the strategy was selected from many candidates,156> Sharpe overstates skill. Cross-link the Viprasol **`trading-strategy-review`**157> skill to compute **Deflated Sharpe** (Bailey & López de Prado) and Probability158> of Backtest Overfitting before trusting the headline number.159160---161162## Step 4: Position Sizing Review163164What method is being used? Apply the right formula; flag missing or arbitrary165sizing as a Step-8 red flag.166167### Kelly criterion168169- **Discrete bet** with edge `e` and net odds `b`: `f* = e / b`.170- **Continuous returns** (the practical form):171 ```172 f* = (μ − r) / σ²173 ```174 where μ = expected return, r = risk-free rate, σ² = return variance.175- **Why Kelly maximises long-run growth** — and **why pure Kelly is too176 aggressive in practice**: parameter-estimation error (μ and σ are *estimated*,177 not known) → systematic over-sizing → catastrophic drawdowns when reality178 rhymes differently than the sample. Kelly also assumes IID stationary179 returns; real markets shift regime.180- **Half-Kelly / quarter-Kelly is the practitioner default.** Halving f*181 approximately halves volatility while keeping most of the geometric growth.182183### Volatility targeting184185- Choose a target **portfolio** vol (e.g. 10–15% annualised). Size each position186 so its risk contribution matches the budget:187 ```188 notional_i = (target_vol × NAV) / σ_i189 ```190- Used by every CTA, risk-parity manager, and most multi-strat books — it turns191 regime-vol changes into stable risk contributions instead of stable dollars.192193### Risk parity (limits)194195- Equal **risk contribution**, not equal weight: `w_i × σ_i × ρ_{ip} = const`.196 Works when correlations are stable; **fails badly in crisis** when everything197 correlates → 1.198199### Optimal f (Vince)200201- Maximises geometric growth on the **actual P&L distribution** (not an assumed202 Gaussian). Closer to "empirical Kelly" — better than naive Kelly when payoffs203 are highly non-binary (options strategies, lumpy event trades).204205### Output of this step206207State the **current** sizing method (or "gut-feel — none documented" if so),208the **recommended** sizing, and the **constraint that should bind** (the lower209of half-Kelly, vol-target sizing, and the single-name cap from Step 5). Show210the numbers.211212---213214## Step 5: Concentration, Correlation & Leverage215216Sizing is necessary but not sufficient — a properly-sized but concentrated217portfolio still blows up.218219- **Single-position cap** — practitioner default: **5–10% of NAV per single220 position**. Tighter (1–3%) for illiquid names. **>10–15% on one name = flag.**221- **Sector / factor concentration** — sum exposures to any one factor (tech,222 oil, US-rates duration, EM-FX, momentum) and apply a hard cap. A "diversified"223 book of 8 tech names is one position.224- **Top-N concentration** — **top-3 holdings > 40% of NAV = flag**, regardless225 of vol; reads as "if any one of these breaks, the book breaks."226- **Pairwise correlation stress** — assume **ρ → 1** in crisis for all227 risk-on assets and recompute portfolio vol. If realized vol explodes, the228 book is a *single bet* dressed up as diversification.229- **Leverage** — gross (sum of absolute exposures) vs net (long − short).230 Practitioner reads:231 - gross > 2× equity = **elevated** (intraday stops mandatory),232 - gross > 3× without stops = **flag**,233 - gross > 4× = **institutional / margin-call territory** (one bad day kills the234 fund).235- **Liquidity** — position size as a **% of average daily volume (ADV)**. >1236 ADV = "can't exit in one day at quoted prices"; price-of-exit is part of the237 risk model.238239---240241## Step 6: Stress-Test Catalog242243Apply **at least 3 historical** scenarios and **2 hypotheticals** plus a244**reverse stress test**. Report **portfolio P&L per scenario**, in dollars and245as a percent of NAV.246247### Historical replays (apply each book to the move)248249- **1987-Oct ("Black Monday")** — SPX -22% in a day.250- **2008-Sep–Nov ("GFC")** — SPX peak-to-trough ≈ -45%, credit spreads ×3,251 funding markets frozen, gold up, treasuries up.252- **2020-Mar ("COVID crash")** — SPX -34% in 22 trading days, IG spreads ×3,253 HY ×4, oil briefly negative, VIX > 80, correlations → 1.254- **2022 bond rout** — bonds and equities **down together**; 60-40 had its worst255 year since the 1930s.256- **2023-Mar ("SVB")** — regional-bank stress, 2-yr UST fastest move in257 decades, repricing of duration.258259### Hypotheticals260261- **+1σ vol shock** — multiply realised σ by ~1.7× (one standard deviation up262 on a vol-of-vol basis); does the leverage cap still hold?263- **-10% equity / +200bp rates instant** — concurrent shock to both legs.264- **Correlation → 1** — every "diversifier" moves with risk; recompute portfolio265 vol on a correlation matrix of ones.266- **50% liquidity haircut** — every exit price halves the bid; how big is the267 gap between mark and exit?268269### Reverse stress test270271Ask the inverse question: **what move kills the book?** Solve for the272combination of equity shock + vol shock + correlation shock + liquidity shock273that drives the portfolio to a fatal drawdown (e.g. -50%). If the answer is274"3% intraday on SPX", the book is too levered. If the answer is "1987 + 2008275+ 2020 all at once and twice as big", it is robust.276277---278279## Step 7: Risk-of-Ruin280281Make the asymmetry explicit. **Drawdown recovery is multiplicative, not282additive.**283284```285required gain to recover from a drawdown of d = 1 / (1 − d) − 1286287 -25% → +33.3%288 -50% → +100%289 -75% → +300%290 -80% → +400%291 -90% → +900%292```293294> **Asymmetry kills compounders.** A strategy that compounds at 15% for ten295> years and gives back 80% in year eleven is a worse outcome than one that296> compounds at 6% with no -80% event.297298Risk-of-ruin is high whenever sizing or leverage make a fatal drawdown a299plausible **path**, not a tail. Triggers to call this out explicitly:300301- Single position > 20% of NAV with σ_i > 50% annualised.302- Pure-Kelly (not fractional) sizing.303- Gross leverage > 3× without **intraday** stops.304- A stress-test row in Step 6 produces > -40% portfolio P&L.305306Compute, when given the inputs, the probability of breaching a drawdown307threshold (e.g. -50%) over the holding horizon — via the closed-form ruin308formula for IID trades or a quick Monte Carlo.309310---311312## Step 8: Red-Flag Quick Scan313314Any one of these moves the verdict toward 🟠 / ⛔.315316- **Sharpe > 3** on a non-HFT strategy → over-fit or hidden tail.317- **Single position > 10–15%** of NAV.318- **Top-3 positions > 40%** of NAV.319- **MDD < 5% on 6+ months of live data** → fat-tail risk hidden (likely a320 short-vol / sell-tail payoff).321- **Leverage gross > 3× without intraday stops.**322- **Undefined max loss / no stop / no position cap** in the strategy doc.323- **"Sizing by gut-feel"** — no Kelly, vol target, or fixed-fractional rule324 documented.325- **Correlation → 1 in stress ignored** — book is implicitly one factor.326- **Sortino << Sharpe** — upside is the source of "return"; downside fat-tail327 hidden.328- **Parametric-normal VaR on fat-tailed returns** — VaR systematically329 understates; pair with ES_97.5 and historical sim.330- **No drawdown duration tracked** — only depth. Long flat losses get under331 investors' skin.332333---334335## Step 9: Output Format — the Risk Report336337Lead with a verdict banner, then the dashboards, the sizing review, the338stress-test table, the risk-of-ruin call-out (when relevant), the339recommendations, and the disclaimer.340341### Verdict banner (pick one)342343- ✅ **WITHIN RISK POLICY** — caps respected, sizing methodical, stress tests344 within tolerance, no red flags.345- 🟡 **CAUTION** — within caps but one or two yellow flags (concentration creep,346 high but not fatal leverage, missing reverse stress test, Sortino noticeably347 below Sharpe).348- 🟠 **OVER-RISK** — at least one hard cap breached (single-name > 15%, top-3 >349 40%, gross > 3× without stops, MDD path > 30% in stress). Reduce before350 doing anything else.351- ⛔ **LIKELY-RUIN PATH** — sizing or leverage make a fatal drawdown a352 *plausible path*, not a tail (pure Kelly + 3×, all-in one factor, stress row353 > -40%). Cut size now.354355Follow the banner with **one sentence** explaining why.356357### Risk dashboard358359| Metric | Value | Notes |360|---|---|---|361| Annualised σ | … | total dispersion |362| Downside deviation σ_d | … | MAR used = … |363| Max drawdown | … | peak → trough … |364| MDD duration | … days | peak → recovery |365| Ulcer Index | … | depth × time underwater |366| Sharpe | … | R_f used = … |367| Sortino | … | MAR used = … |368| Calmar | … | annualised return / |MDD| |369| UPI (Martin ratio) | … | (R − R_f) / UI |370| VaR_95 (daily, historical) | … | …% of NAV |371| ES_97.5 (daily) | … | …% of NAV |372373### Position dashboard374375| Item | Value | Cap | Status |376|---|---|---|---|377| Single-name max | …% NAV | 10% | ✅/🟠 |378| Top-3 share | …% NAV | 40% | ✅/🟠 |379| Dominant factor | …% NAV | 25% | ✅/🟠 |380| Gross leverage | …× | 2× | ✅/🟠 |381| Net leverage | …× | — | — |382| Largest position vs ADV | …× | 1× | ✅/🟠 |383384### Sizing review385386State the **current** method (or "none — gut-feel"), the **Kelly / half-Kelly /387vol-target** recommended sizes (with formulas and plugged-in numbers), the388**binding cap**, and the **recommended size in dollars and % NAV**.389390### Stress-test table391392| Scenario | Assumed shock | Portfolio P&L | Post-stress NAV |393|---|---|---|---|394| 1987-Oct replay | SPX -22% in a day | … | … |395| 2008-Sep–Nov replay | SPX -45% / spreads ×3 | … | … |396| 2020-Mar replay | SPX -34% in 22 days / ρ → 1 | … | … |397| +1σ vol shock | σ × 1.7 | … | … |398| -10% equity / +200bp rates | concurrent | … | … |399| **Reverse stress** | move that drives -50% NAV | … | … |400401### Risk-of-ruin call-out (when triggered)402403State the *path*, the recovery math (`+X% needed to recover -Y%`), and the404probability of breaching the user's drawdown threshold over the horizon if a405closed-form or quick Monte Carlo gives it.406407### Recommendations408409Concrete and numbered. Examples:4104111. Cut single-name X from 18% → 8% (single-name cap).4122. Replace 3× ETF with the underlying to remove embedded leverage.4133. Add a tail hedge: SPX 5-delta puts, 1% of NAV per month.4144. Cap gross leverage at 2× with an intraday -2% NAV hard stop.4155. Switch sizing from gut-feel to vol-target 12% annualised with a half-Kelly416 override per position.417418### Disclaimer (always include)419420> **Educational risk-management guidance — not financial, legal, or investment421> advice, and not a guarantee of safety.** I reason only over the data you422> provide; without numbers, output is qualitative. Risk metrics describe423> **history and assumed distributions**; they do **not** predict the next424> regime shift. **Risk-of-ruin is real — size below your pain threshold.**425> Markets do things that have never happened before. Consult a qualified risk426> or investment professional for live decisions.427428---429430## Related Viprasol Skills431432- **`trading-strategy-review`** — backtest failure-modes (look-ahead,433 overfitting, survivorship, slippage) and Deflated Sharpe / PBO. Pair with434 this skill before trusting a headline Sharpe.435- **`options-strategy-analyzer`** — Greeks, payoff diagrams, and closed-form436 max-loss / max-profit / break-even for defined-risk option structures. Use437 before plugging an options strategy's σ and DD into this review.438439*Not affiliated with or endorsed by Anthropic.*