3.2.1 Three shapes every quant uses
A distribution is the complete answer to "what could happen, and how likely is each outcome?". Three of them cover most of a quant's working day — and knowing where each one breaks matters more than knowing its formula.
In Session 3.1 you summarised a bet with two numbers, its expected value and its standard deviation. For a coin flip those two numbers are the whole story. For a market return they give you the centre and the typical width, and nothing about the question a risk manager loses sleep over: how often a day far from the centre turns up. That is a question about the shape of the whole distribution, and three shapes do most of the work (fig 3.2.1).
The normal distribution is the bell curve. Two numbers pin it down completely, the mean and the standard deviation , and its tails vanish astonishingly fast, like : 68.3% of outcomes land within one of the mean and all but 0.27% within three. It is everywhere because of the central limit theorem: anything built by adding up many small independent pieces ends up close to normal.
A lognormal distribution is what you get when the logarithm of a quantity is normal: if , then is lognormal. It is the natural model for a price. Log returns add up over time (Session 2.3), so the price after days is , and if that sum is roughly normal the price is roughly lognormal. The shape follows. A price can never fall below zero — you cannot lose more than you paid for a share — but it can double or triple, so the distribution leans to the right, with the mean above the median above the most likely value. Osborne (1959) proposed modelling log prices as a random walk; the same assumption sits inside the Black–Scholes–Merton model of Session 10.3.
The Student-t distribution looks like a bell curve with heavier tails. Its shape parameter, the degrees of freedom , sets how heavy: a small gives fat tails, and as grows the Student-t turns into the normal. Its variance is , so to use it as a return model with volatility you first rescale it to unit variance and then multiply by :
Compared with a normal of the same volatility, the result has a taller peak, thinner shoulders and far fatter tails — the right-hand panel of fig 3.2.1, whose inset magnifies the tail you cannot otherwise see.
| Distribution | Parameters | Negative values? | Tails | Where you'll use it |
|---|---|---|---|---|
| Normal | mean , standard deviation | yes | thin: vanish like | averages, test statistics, the default risk model |
| Lognormal | , of the logarithm | no | long right tail; every moment finite | prices and wealth over long horizons; option pricing |
| Student-t | degrees of freedom , plus location and scale | yes | fat: a power law (§3.2.6) | fat-tailed returns; robust fitting |
The lognormal describes a price at a horizon exactly as well as the normal describes the sum of log returns up to that horizon. Over years, many daily returns add up and the sum drifts towards normal (aggregational Gaussianity, measured in Session 5.1). Over one day it is not normal at all (§3.2.3). Use the lognormal for where a price might be in ten years; never use the normal for how bad tomorrow might be.
3.2.2 Skewness & kurtosis: numbers for shape
The mean says where, the volatility says how wide. Two more numbers describe the shape, and both of them are really about the tails.
A moment is an average of a power of the distance from the mean; the second one is the variance. Divide the third and fourth by the matching power of and you get two numbers with no units:
Skewness measures asymmetry. Cubing keeps the sign of each deviation, so a long left tail — rare large losses — gives negative skewness, and a long right tail positive. Kurtosis measures tail weight: the fourth power makes a day 4σ from the mean count 256 times as much as a day 1σ away, so the extremes dominate it. A normal has kurtosis exactly 3, which is why quants usually quote excess kurtosis, kurtosis minus 3: zero for a normal, positive for fat tails. You will still read that kurtosis measures "peakedness". It doesn't; Westfall (2014) shows it is almost entirely about the tails.
scipy.stats.kurtosis and pandas' .kurt() return excess kurtosis by default (zero for a normal); MATLAB's kurtosis returns plain kurtosis (three for a normal). A report that says "kurtosis 3" means either "perfectly normal" or "noticeably fat-tailed", depending on who wrote the code. Ask.
The lognormal: skew that grows with the horizon
For a lognormal with log-mean and log-volatility , everything is in closed form:
Take an index at $100 with expected growth 7% a year and volatility 20%. With the convention of Session 2.3, the log price grows at a year, so over years and :
| Horizon | Mean price | Median price | Skewness | Excess kurtosis | Paths ending below the mean |
|---|---|---|---|---|---|
| 1 day | $100.03 | $100.02 | 0.038 | 0.003 | 50.3% |
| 1 year | $107.25 | $105.13 | 0.61 | 0.68 | 54.0% |
| 10 years | $201.38 | $164.87 | 2.45 | 12.3 | 62.4% |
| 30 years | $816.62 | $448.17 | 8.10 | 222 | 70.8% |
Over a day the lognormal is indistinguishable from a normal. Over thirty years it is wildly skewed: a few lucky paths drag the mean up to $816.62 while 70.8% of paths end below it — the gap between the average and the typical outcome that you met in Session 3.1. The lab checks the ten-year row with 1,000,000 simulated prices: mean $201.31, median $164.87, skewness 2.45 ± 0.03.
The Student-t: same variance, redistributed
For the Student-t, excess kurtosis is when and infinite when . The table compares unit-variance versions with the normal; every entry is exact:
| Unit variance | Excess kurtosis | Within | Between and | Beyond | Falls beyond , × the normal's |
|---|---|---|---|---|---|
| Normal | 0 | 68.3% | 31.5% | 0.27% | 1 |
| Student-t(30) | 0.23 | 69.1% | 30.5% | 0.41% | 4.1 |
| Student-t(10) | 1.00 | 71.0% | 28.2% | 0.73% | 18.8 |
| Student-t(5) | 6.00 | 74.7% | 24.1% | 1.17% | 56.4 |
| Student-t(3) | infinite | 81.8% | 16.8% | 1.38% | 97.3 |
Read across a row and you see the whole trade. At the same volatility, the Student-t(5) puts 74.7% of days within ±1σ instead of 68.3%, keeps only 24.1% in the shoulders, and spends what is left in the tails: falls beyond 4σ come 56 times as often. In code, the rescaling is one line; the lab checks it on 1,000,000 draws (sample variance 0.9997):
def t_unit(nu: float, size, rng: np.random.Generator) -> np.ndarray: """Student-t draws rescaled to unit variance (needs nu > 2).""" return rng.standard_t(nu, size) * np.sqrt((nu - 2) / nu)
3.2.3 How rare is a 5-sigma day?
Under the normal, big days are not merely rare. Past four or five standard deviations they become impossible on any human timescale — and that is exactly where markets keep producing them.
Call a daily return more than standard deviations below its mean a -sigma fall. Under a normal its probability is , where is the standard normal cumulative distribution function, and with 252 trading days a year the expected wait between two of them is
| Fall of more than | Normal: expected wait | Student-t(3): expected wait | Student-t(3) ÷ normal, per day |
|---|---|---|---|
| 2σ | 44 trading days | 49 trading days | 0.89 |
| 3σ | 2.9 years | 144 trading days | 5.1 |
| 4σ | 125 years | 1.3 years | 97 |
| 5σ | 13,843 years | 2.5 years | 5,650 |
| 6σ | 4,022,201 years | 4.2 years | 963,561 |
| 8σ | 6,378,844,425,836 years | 9.8 years | 653,954,930,661 |
The normal says a 4σ fall comes once every 125 years and a 5σ fall once every 13,843 years, longer than recorded history. A unit-variance Student-t(3) has the same volatility and even slightly fewer 2σ falls (its shoulders are thinner), but its waits grow slowly: a 5σ fall every 2.5 years, an 8σ fall about once a decade. Its tail is a power law (§3.2.6), and a power law is scale-free: doubling the size of a fall divides its frequency by roughly wherever you start (7.6 from 4σ to 8σ for this Student-t). Under the normal the same doubling divides it by about 51 billion.
What markets actually do
Which ladder do real returns climb? This is one of the most replicated findings in finance. Mandelbrot (1963) found cotton price changes far too wild for a normal and proposed distributions with infinite variance. Larger data sets settled on a middle ground, summarised in Cont's (2001) survey of the stylized facts of returns: the tails look like a power law with a tail index "finite, higher than two and less than five for most data sets studied" — fat enough to rule out the normal, too thin for infinite variance. Cont also reports excess kurtosis of about 16 for five-minute S&P 500 futures returns and 60 to 74 for currency futures.
The most precise estimates come from physicists with enormous data sets. Gopikrishnan et al. (1999) studied about 1.2 million one-minute S&P 500 returns from 1984 to 1996. Between 3 and 50 standard deviations the tails fell off with an index of 2.95 ± 0.07 for gains and 2.75 ± 0.13 for losses by regression, or 3.45 and 3.29 with a Hill-type estimator (the method matters: §3.2.6). Daily gains of the S&P 500, the Nikkei and the Hang Seng gave 3.34, 3.05 and 3.03, and at horizons beyond about four days the distribution crept slowly towards the normal. Gopikrishnan, Meyer, Amaral & Stanley (1998) had already named the pattern the inverse cubic law in a shorter companion paper, and Gabaix (2009) reviews the evidence that it holds for individual stocks and indices at horizons from minutes to a few days: . Under it, a 10σ day is 125 times rarer than a 2σ day; under the normal it is about 3.0 × 1021 times rarer.
One day puts the two ladders side by side. The Dow Jones Industrial Average fell 22.6% on 19 October 1987 (Bernhardt & Eckblad 2013). Measured against a 1% daily volatility — about 16% a year, the scale of this session's simulated markets — that is a 22.6σ fall. The normal gives it a probability of about 10−113 per day; the Student-t(3), once every 216 years. Not a likely day, but a possible one.
Under the normal, each extra σ makes a fall thousands to billions of times rarer; under a cubic power law, doubling the fall makes it only about eight times rarer. Every probability the normal quotes beyond about 3σ is wrong by orders of magnitude, and always in the same direction: too small.
3.2.4 Fat tails in simulated markets
Two mechanisms produce fat tails in real markets: volatility that changes over time, and sudden jumps. The lab builds a market around each and races it against a normal twin with exactly the same mean and volatility.
The first market is a GARCH-t model. Each day's volatility depends on yesterday's shock and yesterday's volatility, so calm spells and storms cluster — volatility clustering, which Session 5.1 measures in real data — and the shocks themselves are Student-t with = 6. Session 5.5 builds and fits the GARCH model properly; here it is simply a realistic source of fat tails, with a long-run daily volatility of 1.00% (15.9% a year). Clustering alone fattens the tails. Pool calm days, drawn with a small σ, and stormy days, drawn with a large one, and the mixture has too many quiet days, too few middling ones, and extremes that the storms supply.
The second market is a jump-diffusion: a calm normal market with 15% volatility, plus crashes that arrive at random, 0.5 times a year on average, each a fall of about −10% (standard deviation 5%). Each market is simulated for 400 independent decades — 4,000 years, 1,008,000 trading days — and each gets a normal twin. Every return is measured in units of its market's true volatility, and the lab counts the falls:
garch = np.stack([qn.synth.garch_returns(N_DAYS, OMEGA, GARCH_A, GARCH_B, MU_G, NU_G, rng=rng_garch)["ret"].to_numpy() for _ in range(N_PATHS)]) # shape (paths, days) garch_sd = np.sqrt(OMEGA / (1 - GARCH_A - GARCH_B)) # unconditional daily volatility garch_twin = MU_G + garch_sd * rng_garch_twin.standard_normal((N_PATHS, N_DAYS)) z_garch = (garch - MU_G) / garch_sd # … for each k: f_garch = float((z_garch < -k).mean()) se_garch = qn.stats.batch_se(lambda b: (b < -k).mean(), z_garch) assert f_garch - p_norm > 4 * se_garch, f"GARCH-t should show more {k}-sigma falls than the normal"
| Days in 4,000 years | Normal: expected | Twins: GARCH · jump | GARCH-t | Jump: falls | Jump: rises |
|---|---|---|---|---|---|
| beyond 3σ | 1,361 | 1,300 · 1,402 | 7,371 | 2,170 | 354 |
| beyond 4σ | 31.9 | 32 · 17 | 2,794 | 1,802 | 7 |
| beyond 5σ | 0.29 | 0 · 0 | 1,299 | 1,680 | 4 |
| beyond 6σ | 0.001 | 0 · 0 | 677 | 1,537 | 1 |
The twins stay within the normal's statistical noise (the lab asserts it, at four standard errors). The GARCH-t market does not: 2,794 falls beyond 4σ — one every 1.4 years instead of every 125 — and 1,299 beyond 5σ, where the normal expects 0.29: one every 3.1 years instead of every 13,843. The jump-diffusion is lopsided. Its large falls are crash days, and their frequency matches the exact calculation (0.162% of days beyond 5σ, simulated 0.167%). But it has fewer moderately large rises than even the normal (354 beyond 3σ against 1,361), because the crashes inflate the volatility that every move is measured against. That asymmetry is negative skewness: −2.95 in the simulation against −2.85 exactly (standard error 0.08), with excess kurtosis 43.2 against 41.0 (standard error 1.6).
The histogram shows the Student-t pattern of §3.2.2 emerging from a market in which every single day's shock has only moderately fat tails: 77.2% of days within ±1σ against the normal's 68.3%, and 21.3% in the shoulders against 31.5%.
The GARCH-t market's true excess kurtosis is 28.3, from a closed-form formula. A typical simulated decade reports 4.5; one decade in ten reports less than 2.4 and one in ten more than 12.9; all 4,000 years pooled give 12.7. The kurtosis estimate is itself fat-tailed: its standard error depends on moments up to the eighth (Cont 2001), and for this market the eighth is infinite, so most samples simply miss the rare days that make the true value large. Treat a sample kurtosis as a warning light — a big number means fat tails; a small one proves nothing.
3.2.5 QQ plots: seeing the tails
Kurtosis squeezes the tails into one fragile number. A QQ plot shows every tail observation at once, and with practice you can read one in seconds.
A QQ plot (quantile–quantile plot) sorts your observations, standardises them by their own mean and volatility, and plots each one against the value a normal would put at the same rank: the -th smallest observation against the normal quantile at probability . If the data are normal, the points lie on the diagonal. The middle of a QQ plot is almost always boring; the information is at the two ends, and there are only four patterns to learn (fig 3.2.4).
One simulated decade of each market (2,520 days) shows two of the patterns. With that many points, the most extreme normal quantile is ±3.54. The GARCH-t data run from −13.8σ to 5.3σ: an S that no normal can bend to (fig 3.2.5). The jump-diffusion hugs the line everywhere except the far left, where 5 crash days fall below −5σ, the worst at −15.6σ (fig 3.2.6). A left end that drops like this is the signature of strategies that earn steadily and occasionally blow up, such as writing put options.
scipy.stats.probplot(x, dist=stats.t, sparams=(5,)) draws a QQ plot against a Student-t with 5 degrees of freedom instead of the normal. If the ends straighten out, that Student-t is a usable model for the tail; if they still bend, the tail is fatter still, or asymmetric. Always check both ends separately: losses and gains need not share a tail.
3.2.6 Power laws & the Hill estimator
"Fat-tailed" becomes a precise statement once you write the tail as a power law. One number, the tail index, then tells you which moments exist and which statistics you can trust.
A distribution has a power law tail when the probability of exceeding a level falls off like a power of :
The exponent is the tail index: the smaller it is, the fatter the tail. Most papers write it ; in this course means alpha, so we follow Gabaix (2009) and write . On log–log axes a power-law tail is a straight line with slope , and it is scale-free — doubling a move always costs the same factor , which is why the bottom row of fig 3.2.2 is so compressed. A Student-t() has tail index . The normal has none: its tail drops faster than any power. And a power-law tail rations moments, because is finite only for :
| Tail index | Mean | Variance | Kurtosis | What breaks |
|---|---|---|---|---|
| none | none | none | averages never settle: the law of large numbers fails (§3.2.7) | |
| finite | none | none | σ does not exist and the usual CLT fails; below 2, sums tend to non-normal "stable" laws — Mandelbrot's 1963 hypothesis for prices | |
| finite | finite | none | volatility exists, but estimates of it are noisy; the evidence puts daily returns here, near 3 | |
| finite | finite | finite | kurtosis exists, but its estimate has a finite standard error only when |
The Hill estimator
To estimate you look only at the tail. Sort the losses from largest down, , and choose how many of them, , count as "the tail"; is then the threshold. For an exact power law the log of each loss relative to the threshold, , is exponentially distributed with mean , so Hill (1975) simply averages them:
The Hill estimator is a few lines of numpy with one knob, — and turning that knob is where the trouble starts:
def hill_xi(x: np.ndarray, k_max: int) -> np.ndarray: """ξ̂_k = 1/ζ̂_k for k = 1..k_max, row by row, from the largest LOSSES (−x) of each sample.""" losses = -np.sort(x, axis=1)[:, : k_max + 1] # the k_max + 1 largest losses, descending logs = np.log(losses) k = np.arange(1, k_max + 1) return np.cumsum(logs[:, :k_max], axis=1) / k - logs[:, 1: k_max + 1]
The lab gives it a problem with a known answer: 200 independent samples of 40 years of daily Student-t(3) returns (10,080 days each), whose true tail index is 3. It first checks the code on exact power-law (Pareto) data, where the estimator's distribution is known exactly, and then compares the Student-t averages with an exact calculation. The last column runs the same estimator on normal data, which has no tail index at all:
| Largest losses used, | Share of the sample | Average , 200 samples | One sample's typical error | Same estimator on normal data |
|---|---|---|---|---|
| 25 | 0.2% | 3.00 | ±0.65 | 10.4 |
| 50 | 0.5% | 2.93 | ±0.40 | 9.1 |
| 100 | 1.0% | 2.83 | ±0.29 | 7.8 |
| 250 | 2.5% | 2.67 | ±0.16 | 6.0 |
| 1,000 | 9.9% | 2.14 | ±0.06 | 3.5 |
Read the table as a trade-off. With the largest 25 to 50 losses, the average is close to the truth (3.00 and 2.93), but a single 40-year sample is typically off by ±0.40 or more. With the largest 10% the estimate is precise and wrong — 2.14 ± 0.06 — because the threshold reaches into the body of the distribution, where the Student-t is not a power law. Normal data are worse. They have no tail index, yet at a 10% threshold Hill reports 3.5, right in the range published for stock returns, and the estimate keeps climbing as the threshold moves out. One sample's Hill plot (fig 3.2.7) wanders between 2.2 and 4.0 as runs from 10 to 1,000: pick your and you can defend almost any value in that range.
A Hill estimate without its threshold means nothing. Plot against , look for a stretch where it is roughly flat, and report the range, not a point. Embrechts, Klüppelberg & Mikosch (1997) call the worst cases "Hill horror plots"; Drees, de Haan & Resnick (2000) show that, unless the data are exactly Pareto, plotting against is more revealing; Gabaix (2009) notes that there is no consensus rule for the cutoff, and that clustered financial data make the textbook standard error of about too small. Recall that Gopikrishnan et al. got 2.95 from one method and 3.45 from another on the same gains. Read "ζ ≈ 3" as "somewhere between about 2.5 and 4", never as a precise parameter.
A power law is also easy to see where there is none. Clauset, Shalizi & Newman (2009) show that the common shortcut — fitting a straight line to a log–log histogram — can give badly wrong exponents and says nothing about whether the data follow a power law at all, and Gabaix (2009) concedes that a lognormal sometimes fits a tail better.
The disciplined version of this idea is extreme value theory: fit a generalised Pareto distribution to the losses above a threshold and read rare-loss probabilities from it. Session 9.7 — VaR, ES, EVT & VaR Backtests builds it, with the same threshold problem front and centre.
3.2.7 What fat tails break
Fat tails are not a statistical curiosity. They change how you measure risk, how you size positions and which statistics you can believe — so check them before trusting any number built on the normal.
Risk
A normal model puts the loss you should see on one day in a thousand at 3.09σ. In the GARCH-t market it is 5.37σ ± 0.10 — 1.7 times as deep — and for the Student-t(3), 5.90σ. That one-in-a-thousand loss is a value at risk, and a normal VaR understates it for exactly the reasons of §3.2.3. Session 9.7 — VaR, ES, EVT & VaR Backtests builds VaR and expected shortfall properly, together with the tests that catch a model like this.
In August 2007 Goldman Sachs' chief financial officer explained a flagship hedge fund's losses: "We were seeing things that were 25-standard deviation moves, several days in a row" (Financial Times, 13 August 2007, as quoted by Dowd et al. 2008). Under a normal, a single 25σ day has a probability of about 10−138, and Dowd et al. put the expected wait for one such day at about 10135 years — the universe is about 1010 years old. A "25-sigma day" is not bad luck. It is a model announcing that it was wrong: the σ was measured in a calm market, and the tails were never normal. Session 9.8 returns to that month, the quant quake of 2007.
Sizing
Volatility targeting (Session 9.5) sets position size from σ, and the Kelly criterion (Session 3.6) from the ratio of edge to variance. With fat tails, the same σ hides a deeper worst day: at equal volatility, the Student-t(3) makes a 5σ fall 5,650 times as likely as the normal. Size for the loss you can survive, not only for the volatility you measured — the practical case for fractional Kelly.
Statistics
Moments that don't exist break the tools of Session 3.1. At — the Cauchy distribution, a Student-t with one degree of freedom — the average of draws has exactly the same distribution as a single draw. In the lab, the average of 1,000 Cauchy draws landed beyond ±1 in 49.8% of 20,000 trials, against exactly 50% in theory; for 1,000 standard normal draws the chance is about 10−219. Averaging buys nothing at all. At averages do converge, but slowly — the Student-t(2.5) of Session 3.1 was still visibly non-normal after 1,000 draws — and fourth moments are held hostage by single days. In a typical simulated GARCH-t decade the largest day contributes 14.6% of the sum of fourth powers behind the kurtosis (its normal twin: 2.3%), and in one decade in ten more than 35.3%. Taleb (2025) reports about 80% for roughly half a century of S&P 500 returns. Anything built from fourth moments — kurtosis, the uncertainty of a variance, the standard error of a Sharpe ratio (Session 5.2) — inherits that instability.
The normal is the right tool for averages of many independent pieces and the wrong one for a single bad day. Before any risk number, position size or confidence interval, run the tail check of fig 3.2.8 — and when the tails are fat, let the worst day, not the volatility, set the limits. Session 3.5 gives you the other escape route: simulate or bootstrap from the data instead of assuming a shape.
3.2.8 Try it
Open the companion lab, make a prediction, change one number and see whether the world agrees.
1. Predict first: how many 4σ falls should 4,000 years of normal days contain? (1,008,000 × Φ(−4).) Then set NU_G = 30.0 in section 3 — nearly normal shocks — and rerun. The GARCH market still has far more 4σ falls than your prediction: that excess is volatility clustering alone.
2. In section 5, set NU_HILL = 4. At which does the average Hill estimate come closest to 4, and is it above or below 4 at ? Explain in one sentence why the bias points that way.
3. In section 3, set JUMP_MEAN = -0.05. Predict whether the jump-diffusion's skewness becomes more or less negative, then check jd_skew_theory and the QQ plot.
4. Success looks like this: your three predictions are right, and every assert still passes.
3.2.9 Glossary · Check yourself · Go deeper
scipy and pandas report it by default, MATLAB does not.Check yourself
1. A risk report says a strategy's daily returns show excess kurtosis of 4.5 over the last ten years, so its tails are "only mildly fat". What do you say?
2. A strategy's QQ plot against the normal hugs the line, except that its right end bends sharply upwards. What kind of strategy might this be, and is that tail good or bad news?
3. You run the Hill estimator on 40 years of daily losses and get 3.4, 2.8 and 2.2 using the largest 50, 250 and 1,000 losses. Which number do you report?
4. A stock index starts at $100 with 7% expected growth and 20% volatility a year. A planner quotes you the expected level in 30 years. Is that the outcome you should plan around?
5. A vendor's risk model says a 6σ daily loss happens once every 4,022,201 years. Your firm has seen three in 40 years. Were you unlucky?
6. Two strategies have the same volatility. One has normal returns, the other Student-t(3) returns. How much deeper is the second one's one-in-a-thousand-days loss, and what does that mean for sizing?
1. Real data: download the daily "Fama/French 3 Factors" file from the Kenneth French data library and rebuild the market's daily return as Mkt-RF + RF (both are in percent). For each decade, compute the excess kurtosis; over the whole sample, count the falls beyond 4σ and 5σ against the normal's expectation, draw a QQ plot, and draw a Hill plot of the largest losses. Is there a flat stretch, and does it sit inside Cont's range of 2 to 5?
2. In the lab, add a cell after section 3: nu_hat, loc_hat, scale_hat = stats.t.fit(garch[:40].ravel()). Is the fitted equal to the shocks' = 6? Explain in two sentences why not.
3. Read Cont (2001), sections 1 to 4, and the part of Gabaix (2009) on the cubic law of returns. Write down one stylized fact you expect Session 5.1 to measure, and how you would test it.
📚 Go deeper
- Cont, R. (2001). "Empirical properties of asset returns: stylized facts and statistical issues." Quantitative Finance 1(2), 223–236. doi:10.1080/713665670
- Gabaix, X. (2009). "Power Laws in Economics and Finance." Annual Review of Economics 1, 255–294. doi:10.1146/annurev.economics.050708.142940
- McNeil, A. J., Frey, R. & Embrechts, P. (2015). Quantitative Risk Management: Concepts, Techniques and Tools, revised ed., ch. 3 "Empirical Properties of Financial Data" and ch. 5 "Extreme Value Theory". Princeton University Press. ISBN 978-0-691-16627-8
- Embrechts, P., Klüppelberg, C. & Mikosch, T. (1997). Modelling Extremal Events for Insurance and Finance. Springer. ISBN 978-3-540-60931-5
- Clauset, A., Shalizi, C. R. & Newman, M. E. J. (2009). "Power-Law Distributions in Empirical Data." SIAM Review 51(4), 661–703. doi:10.1137/070710111
- Taleb, N. N. (2025). Statistical Consequences of Fat Tails: Real World Preasymptotics, Epistemology, and Applications, 3rd ed. STEM Academic Press. The figure quoted here is from ch. 3, Table 3.3. arXiv:2001.10488
Sources for the numbers
- Gopikrishnan, P., Plerou, V., Amaral, L. A. N., Meyer, M. & Stanley, H. E. (1999). "Scaling of the distribution of fluctuations of financial market indices." Physical Review E 60(5), 5305–5316. doi:10.1103/PhysRevE.60.5305
- Gopikrishnan, P., Meyer, M., Amaral, L. A. N. & Stanley, H. E. (1998). "Inverse cubic law for the distribution of stock price variations." The European Physical Journal B 3(2), 139–140. doi:10.1007/s100510050292 · arXiv:cond-mat/9803374
- Mandelbrot, B. (1963). "The Variation of Certain Speculative Prices." The Journal of Business 36(4), 394–419. doi:10.1086/294632
- Hill, B. M. (1975). "A Simple General Approach to Inference About the Tail of a Distribution." The Annals of Statistics 3(5), 1163–1174. doi:10.1214/aos/1176343247
- Drees, H., de Haan, L. & Resnick, S. (2000). "How to make a Hill plot." The Annals of Statistics 28(1), 254–274. doi:10.1214/aos/1016120372
- Westfall, P. H. (2014). "Kurtosis as Peakedness, 1905–2014. R.I.P." The American Statistician 68(3), 191–195. doi:10.1080/00031305.2014.917055
- Osborne, M. F. M. (1959). "Brownian Motion in the Stock Market." Operations Research 7(2), 145–173. doi:10.1287/opre.7.2.145
- Dowd, K., Cotter, J., Humphrey, C. & Woods, M. (2008). "How Unlucky Is 25-Sigma?" The Journal of Portfolio Management 34(4), 76–80. doi:10.3905/jpm.2008.709984 · arXiv:1103.5672
- Bernhardt, D. & Eckblad, M. (2013). "Stock Market Crash of 1987." Federal Reserve History. https://www.federalreservehistory.org/essays/stock-market-crash-of-1987
Educational material only — not investment, legal or tax advice. Backtests and simulations are hypothetical. Disclaimer · Text CC BY 4.0 · Code MIT.