Generative Scenario Generation for Stress Tests
Generative models can produce thousands of plausible-looking market scenarios beyond the handful of crises actually on record — useful for stress testing, but only if 'plausible-looking' is checked against the market's real tail behaviour rather than taken on faith.
Prerequisites: Drawdown Control at the Portfolio Level, Regime Detection
Traditional stress testing works from a short, known list: the 1987 crash, the 2008 financial crisis, the 2020 pandemic sell-off, maybe a handful of hypothetical scenarios a risk committee invents by hand. This is honest but thin — a portfolio that survives every scenario on a list of five historical crises has only been tested against five specific paths the market happened to take, not against the much larger space of paths it plausibly could have taken. Generative models — trained to learn the statistical structure of historical market data and then sample new paths from that learned structure — promise to fill in the gaps, producing thousands of scenarios that share the statistical character of real crises (fat tails, volatility clustering, correlation spikes) without being literal copies of any one historical event.
What the model actually needs to get right
A generative model for scenario generation — commonly a variational autoencoder or a GAN-style architecture trained on historical return paths — is only useful for stress testing if it reproduces the specific features of real markets that matter for tail risk, and these are more subtle than matching the mean and standard deviation of daily returns. Three properties matter most: fat tails (extreme moves happen far more often than a normal distribution predicts), volatility clustering (a large move today makes another large move tomorrow more likely, not less), and correlation breakdown under stress (assets that are weakly correlated in calm markets often become highly correlated during a crisis, exactly when diversification is needed most). A generative model trained carelessly — say, one that matches the unconditional distribution of returns well but treats each day as independent — can produce paths that look individually plausible while completely missing the volatility-clustering and correlation-breakdown structure that makes a real crisis dangerous to a portfolio.
This is why scenario generation for stress testing cannot be validated only by eyeballing sample paths. It needs an explicit check that the generated data reproduces known stylised facts of real markets, ideally via a battery of statistical tests the generator was never directly optimised against (see Validating Synthetic Market Data Realism).
A generative scenario model is only useful for stress testing to the extent it reproduces fat tails, volatility clustering and stress-time correlation breakdown — not just the average level and spread of returns. A model that gets the easy statistics right and the hard ones wrong will systematically understate real portfolio tail risk.
A worked example
A risk team trains a generative model on 20 years of daily returns for a 30-asset portfolio and generates 5,000 synthetic one-year paths, then computes the portfolio's simulated 1-in-100-year drawdown from this sample.
Before trusting the number, the team runs a validation check: take the 5,000 generated paths and compute the same summary statistics real history is known for — the frequency of daily moves beyond 3 standard deviations, the autocorrelation of squared returns (a standard volatility-clustering test), and average pairwise correlation conditioned on the worst 5% of market days versus the best 5%. The generated paths pass the tail-frequency check reasonably well but understate volatility clustering and — the most consequential miss — show correlation increasing only mildly during simulated bad days, versus a much sharper increase in the real historical data.
Because correlation breakdown under stress is precisely the mechanism that turns a diversified-looking portfolio into a concentrated one during a real crisis, this specific failure means the model's simulated 1-in-100-year drawdown is likely too benign — the synthetic crises aren't correlated enough to hurt the portfolio the way a real one would. The team retrains with an explicit penalty on matching the stress-conditional correlation statistic before using the scenarios for capital allocation.
Generated paths from a naive model tend to look like smoother, more independent versions of this — individually plausible day to day, but missing the clustering where several bad days pile up together. A useful visual check is overlaying real historical crisis paths against generated ones on the same axes and asking whether a risk manager could tell them apart.
Before using generated scenarios for capital decisions, test the specific statistic the stress test cares about — correlation during the worst days, not correlation on average — since a generator can pass an aggregate realism check while still failing on exactly the tail behaviour that matters.
Where it goes wrong in practice
Generative models trained purely to minimise a general reconstruction or distributional-distance loss have no explicit incentive to get tail co-movement right, because tail events are a small fraction of the training data by construction — the model spends most of its capacity fitting the much more common calm-market behaviour. Getting the tails right usually requires either deliberately oversampling stress periods during training or adding a loss term that specifically penalises mismatched tail and correlation statistics.
A stress-test scenario generator validated only by comparing overall return distributions (mean, variance, skew) can look statistically sound while still badly understating portfolio risk, because those are not the moments that determine how much a diversified portfolio loses when correlations spike.
Related concepts
Practice in interviews
Further reading
- Wiese et al., Quant GANs: Deep Generation of Financial Time Series
- Buehler et al., Deep Hedging (scenario generation section)