QTQuant Terminal
A2-03A2·intro·~18 min

The empirical distribution of daily returns

statisticsdistributionhistogramqq-plotfat-tails

▸ Pretest — guess, even if you don't know

Suppose you plot a histogram of SPY daily returns from 1993–present. Compared to a normal distribution with the same mean and standard deviation, what do you expect?

Building intuition: what do daily returns actually look like?

For SPY since inception (1993):

A normal distribution with the same mean and standard deviation would predict that a single-day move beyond ±4σ should happen once every 16,000 days (about once every 60 years). In reality, SPY has seen many such days in just 30 years.

Why histograms can fool you

A histogram of daily returns looks bell-shaped at a glance. The center mass fits the normal nicely. The deception happens in the tails — there are so few observations beyond 3σ that the histogram bins are almost empty, and the eye sees "matches normal" when in reality those bins should be many orders of magnitude emptier under normality.

The right tool to see this is a Q-Q plot (quantile-quantile). On a Q-Q plot, you compare the empirical quantiles of returns against the theoretical quantiles of a normal distribution. If returns were normal, the plot would be a straight diagonal line.

For real stock returns, the line is straight in the middle and bends sharply away from the diagonal at the extremes — both tails curve outward. This bending is the visual signature of fat tails.

Stylized facts (the "always true" patterns)

Rama Cont (2001) catalogued the stylized facts of asset returns — properties that show up across nearly all liquid markets:

  1. Absence of autocorrelation in returns (you can't predict tomorrow's return from today's at short horizons in efficient markets).
  2. Strong autocorrelation in squared/absolute returns (volatility clustering — covered in A2-02).
  3. Heavy tails (always).
  4. Aggregate Gaussianity — return distributions become more normal as you look at longer aggregation periods (monthly, yearly). Daily is the most non-normal regime.
  5. Asymmetry between up and down moves (negative skew).
  6. Leverage effect — vol rises after price falls (downside moves trigger higher vol than upside moves of the same size).
  7. Volume/volatility correlation — high volume days are usually high volatility days.

These are not surprises in any equity market we'll consider. If your model assumes returns are normal and iid, you are missing every single one of these.

Why this matters for the curriculum

Almost every topic from this point forward connects back to these properties:

Code snippet (for laptop later)

import yfinance as yf
import numpy as np
import scipy.stats as stats

spy = yf.download("SPY", start="1993-01-29")["Adj Close"]
returns = np.log(spy / spy.shift(1)).dropna()

print(f"Mean: {returns.mean():.5f}  Std: {returns.std():.5f}")
print(f"Skew: {returns.skew():.3f}  Kurt (excess): {returns.kurt():.3f}")
print(f"Worst: {returns.min():.3f}  Best: {returns.max():.3f}")

# Q-Q plot
import matplotlib.pyplot as plt
stats.probplot(returns, dist="norm", plot=plt)
plt.show()

Draw it (your generative activity)

Today's generative activity is draw: sketch (in your head or on paper) what a Q-Q plot looks like for normal-distributed data, versus for fat-tailed data. The shape of the deviation from the diagonal is informative — get this picture lodged in your memory and you'll never confuse the two again.

Try it

Measure the shape of a distribution yourself — skewness (asymmetry) and excess kurtosis (tail weight):

▮ EXERCISE · a2-03-ex1

Implement skew_kurt(x) returning the tuple (skewness, excess kurtosis) using the population formulas (ddof=0): with mu = mean(x), m2 = mean((x-mu)**2), m3 = mean((x-mu)**3), m4 = mean((x-mu)**4), skewness = m3 / m2**1.5 and excess kurtosis = m4 / m2**2 - 3. A normal distribution scores (0, 0); fat tails push excess kurtosis positive.

⧉ Review card
What is leptokurtosis?
A distribution with kurtosis > 3 (normal is 3). 'Tall peak, fat tails.' Daily stock returns have kurtosis ~5–15. Standard finance terminology for 'heavier-than-normal tails.'
⧉ Review card
What is a Q-Q plot used for?
Comparing empirical quantiles to theoretical (usually normal) quantiles. Straight diagonal = matches the theoretical distribution. Curving away from the diagonal in the tails = fat-tailed.
⧉ Review card
Name three stylized facts about returns.
(any three from:) no return autocorrelation, strong squared-return autocorrelation (vol clustering), fat tails, aggregate Gaussianity, negative skew, leverage effect, volume-vol correlation.
⧉ Review card
Why does aggregating returns to longer horizons (e.g., monthly) make them look more normal?
Central Limit Theorem — averages of many independent observations are approximately normal. Monthly returns are sums (or products, for log-returns) of ~21 daily returns, so they're closer to normal than dailies. Yearly is closer still.

◈ Calibration check

Could you describe the empirical distribution of daily equity returns to someone in 3 sentences?

1 = guessing · 5 = could teach it

⏻ End of lesson

Mark it read to book its 4 review cards into your deck.

Sources & further reading