How markets actually work

The stylised facts

M3 — Statistics of returns

Everything in M2 rested on an assumption stated once and then quietly used everywhere: that returns are approximately normally distributed. The Sharpe ratio, its standard error, Black–Scholes, and every risk number all lean on it.

It is false. Not "an approximation with minor corrections" false — false in ways that dominate the behaviour that matters most. This lesson does the roadmap's exercise and looks.

All figures below are computed from real S&P 500 daily closes, 2016-08-08 to 2026-08-07 — 2,513 trading days, via FRED. The period contains the COVID crash and the April 2025 selloff, which is the point: any decade you pick contains something a Gaussian says cannot happen.

Fact 1 — the distribution has enormous tails

   S&P 500 daily log returns, n = 2,513

     mean            +0.0505% / day        annualised   +12.7%
     std dev          1.142%  / day        annualised    18.1%
     skewness        −0.68                 a normal says  0.00
     kurtosis        19.71                 a normal says  3.00
     ───────────────────────────────────────────────────────────
     Jarque–Bera     29,436                5% critical value 5.99

A Jarque–Bera statistic roughly 4,900 times its critical value is not a marginal rejection of normality. It is the test running out of ways to say no.

Kurtosis of 19.7 against 3 means the distribution is far more concentrated near the middle and far heavier in the extremes than a bell curve — most days are quieter than a normal predicts, and the exceptions are enormous.

Fact 2 — the extremes are not merely bigger, they are impossible

Count days beyond each threshold and compare with what a Gaussian fitted to the same data expects:

   threshold   observed   Gaussian expects   ratio
   ──────────────────────────────────────────────────
      ±3σ          36            6.78          5×
      ±4σ          17            0.16        107×
      ±5σ          11            0.0016    7,635×
      ±6σ           6            0.000005  1,210,021×

The rightmost column is the story. At three sigma the Gaussian is wrong by a factor of five, which you might call a rough approximation. By six sigma it is wrong by a factor of a million, and the error compounds precisely where the money is lost.

The five worst days in the sample:

   2020-03-16    −11.22σ    −11.98%
   2020-03-12     −8.80σ     −9.51%
   2020-03-09     −6.96σ     −7.60%
   2025-04-04     −5.44σ     −5.97%
   2020-06-11     −5.36σ     −5.89%

Take the worst one seriously. Under a normal distribution, an 11.22σ daily move has probability about 1.6 × 10⁻²⁹. At 252 trading days a year, you would wait roughly 2.5 × 10²⁶ years to see one — around 10¹⁶ times the current age of the universe.

It happened on a Monday in March 2020. And the third-worst day in the same sample would also, individually, outlive the universe.

This is the single most important fact in M3, so state it plainly: when a model says an event is impossible and the event occurs three times in a decade, the model is not slightly miscalibrated. It is the wrong model.

Fact 3 — the tails are asymmetric

Skewness is −0.68: the left tail is heavier. Markets fall faster than they rise. Note the best days are large too — +9.52%, +9.38%, +9.29% — but look at when they happened: 2025-04-09 and March 2020, inside the same crashes as the worst days. Extreme up-days are not the good times; they are the violent rebounds within bad times.

This asymmetry is the same one the equity skew in M2.4 prices, now visible in the underlying rather than inferred from options.

Fact 4 — returns are unforecastable, but volatility is not

Now the autocorrelation, and the most useful result in the lesson. Compare the autocorrelation of returns with that of absolute returns and squared returns:

   95% noise band = ±0.039

    lag    returns    |returns|    returns²
   ───────────────────────────────────────────
      1     −0.145       0.373       0.453
      2     +0.096       0.409       0.473
      3     −0.029       0.378       0.333
      5     +0.052       0.335       0.292
     10     −0.047       0.288       0.218
     20     −0.014       0.195       0.095
     50     +0.007       0.063      −0.001

Returns decay into the noise band almost immediately — direction is close to unforecastable from its own history, which is the weak-form efficiency you would expect from M1's price discovery.

Absolute returns do nothing of the sort. They start at 0.37 and are still at 0.195 twenty days later, ten times the noise band. Volatility is strongly, persistently predictable.

Direction is nearly unforecastable. Magnitude is highly forecastable. A big move today means a big move tomorrow, without telling you which way.

That is volatility clustering, it is the most robust regularity in the field, and it is why M3.3 exists.

One honest caveat about that lag-1 figure of −0.145, which is well outside the noise band and looks like a tradeable reversal. It is almost entirely a crisis artefact: exclude 2020 and it falls to −0.028, inside the band. A handful of violent alternating days in March 2020 dominate the whole statistic. That is itself a lesson about fat tails — with kurtosis of 20, any sample statistic can be hostage to a few observations, including the ones you use to decide a strategy is real.

Fact 5 — non-normality fades with aggregation

Compute the same returns over longer horizons:

   horizon             n      kurtosis
   ─────────────────────────────────────
   daily           2,513        19.71
   weekly            502        10.96
   monthly           119         8.38
   quarterly          39         3.60

Aggregational Gaussianity. Sum enough returns and the Central Limit Theorem does eventually assert itself — quarterly returns look nearly normal. Two consequences pull in opposite directions, and both are true:

  • A long-horizon investor genuinely faces something closer to the textbook world.
  • A daily-horizon trader, or anyone holding leverage that is marked daily (M0.7), lives entirely in the regime where the textbook is worthless. You do not get to use the quarterly distribution if a −12% day triggers your margin call.

The list, and where it goes

Those five are most of Cont's canonical set of stylised facts — the properties that show up in essentially every liquid market, across asset classes and decades, and which any serious model has to reproduce:

   ✓ heavy tails                 M3.2 — how heavy, and how to measure it
   ✓ negative skew               priced as the M2.4 smile
   ✓ no autocorrelation
     in returns                  market efficiency, M1
   ✓ volatility clustering       M3.3 — GARCH and friends
   ✓ aggregational Gaussianity   why horizon changes everything
     leverage effect             vol rises more on down moves — M3.3
     tail dependence             correlations rise in crashes — M3.5

Nothing here is controversial or new; Mandelbrot was pointing at the tails in 1963 and was ignored for thirty years. What is remarkable is how much of finance is still taught, and practised, as though returns were Gaussian anyway.

Source: Rama Cont, “Empirical properties of asset returns: stylized facts and statistical issues” (2001) — the canonical list, short, and the direct model for this lesson. Benoît Mandelbrot, The (Mis)behavior of Markets, is the roadmap’s required reading and the polemical version of the same argument. Do the exercise yourself: the FRED series SP500 is a single CSV download and every number above is reproducible in a page of code.