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

  1. Tie stop distance and position sizing to live fractal metrics, not fixed percentages — tighten automatically as clustering intensifies or Hurst falls.
  2. Run power-law synthetic stress tests quarterly, not just historical replay — the worst historical day is not the worst future day.
  3. Maintain a multi-scale fractal dashboard in regular risk reviews — no single-timeframe volatility number captures fractal market risk.
  4. 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.