Mandelbrot Ch. 6: Practical Fractal Risk Management
阅读中文版Power-law-calibrated stop placement, stress-testing against non-linear shocks, and building a multi-scale fractal risk dashboard.
🔊 Listen to Article (Chinese Audio)
Mandelbrot Fractal Ch. 6: Practical Fractal Risk Management
"My goal was never to predict the exact day of the next crash — fractal geometry offers no such prophecy. My goal is for portfolios to be designed from the outset acknowledging that crashes happen, and more often and more violently than conventional models suggest." — Benoit Mandelbrot
From Theoretical Critique to Deployable Architecture
Chapters 1–5 dismantled the Gaussian assumption, established fractal geometry, long memory, volatility clustering, and the collapse of MPT/Black-Scholes. This chapter converts that evidence into a deployable risk architecture.
Power-Law-Calibrated Stops
Fixed-percentage or fixed-ATR stops implicitly assume stable volatility. Since volatility clusters (Ch. 4), stop distance should instead scale with current regime:
$$\text{Stop}{distance} = k \cdot \sigma{realized}(t) \cdot \left(\frac{H(t)}{0.5}\right)^{\beta}$$
Widen stops moderately in strong-trend regimes ($H > 0.5$) to absorb trend noise; tighten in mean-reverting/high-clustering regimes to control tail exposure.
Non-Linear Stress Testing Beyond Historical Replay
Historical scenario replay (2008, March 2020) is a finite sample from a power-law tail — the future can realize worse. Generate synthetic extreme scenarios from a fitted Pareto tail instead:
import numpy as np
def fractal_stress_test(portfolio_value, alpha=3.0, n_simulations=100000, seed=11):
np.random.seed(seed)
uniform_samples = np.random.uniform(0, 1, n_simulations)
xmin = 0.01
pareto_shocks = np.clip(xmin / (uniform_samples ** (1/alpha)), 0, 0.95)
losses = portfolio_value * pareto_shocks
return {f"P{p}": np.percentile(losses, p) for p in [50, 90, 99, 99.9]}
Multi-Scale Fractal Risk Dashboard
| Metric | Window | Trigger | Action |
|---|---|---|---|
| Short-term vol clustering | 5d realized / 60d avg | ratio > 2.0 | Cut new-position leverage 50% |
| Hurst drift | Rolling 252d R/S | $H$ < 0.4 | Disable trend-following, switch to range strategy |
| Fractal dimension spike | 30d box-counting | $D$ > 1.6 | Trigger full-portfolio stress re-test |
| Tail index contraction | Rolling 500d power-law fit | $\alpha$ < 2.5 | Raise CVaR capital buffer requirement |
Practical Execution Rules
- Tie stop distance and position sizing to live fractal metrics, not fixed percentages — tighten automatically as clustering intensifies or Hurst falls.
- Run power-law synthetic stress tests quarterly, not just historical replay — the worst historical day is not the worst future day.
- Maintain a multi-scale fractal dashboard in regular risk reviews — no single-timeframe volatility number captures fractal market risk.
- Accept uncertainty as the first principle of risk design — the goal is not predicting the next crash's date, but surviving one larger than expected.