🎉 75% of content is free forever — Unlock Premium from $10/mo →
CW
Search courses…
💼 Servicesℹ️ About✉️ ContactView Pricing Plansfrom $10

Kurtosis — Fat Tails and Extreme Events

Foundations of StatisticsDescriptive Statistics🟢 Free Lesson

Advertisement

Kurtosis

Descriptive Statistics

Where Do Extreme Events Hide?

Kurtosis measures the heaviness of a distribution's tails — and reveals whether extreme events are rare surprises or regular visitors.

Understanding kurtosis helps you:

  • Assess tail risk — know if crashes and outliers are more frequent than a normal model predicts
  • Evaluate models — detect when a normal assumption dangerously underestimates extreme events
  • Classify distributions — distinguish mesokurtic, leptokurtic, and platykurtic shapes
  • Test normality — combine with skewness in the Jarque-Bera test for a rigorous check

In finance and science, the tails are where the action is. Kurtosis tells you how thick they are.


What is Kurtosis?

Definition

Kurtosis measures the tailedness of a distribution — how much probability mass is in the tails relative to a normal distribution. Excess kurtosis subtracts 3 (the normal distribution's kurtosis) so that the normal baseline is zero.

import numpy as np
from scipy import stats

np.random.seed(42)
n = 5000
normal  = np.random.normal(0, 1, n)
t3      = np.random.standard_t(df=3, size=n)    # fat tails
uniform = np.random.uniform(-3, 3, n)            # thin tails

for name, data in [("Normal", normal), ("t(df=3) Fat-tail", t3), ("Uniform Thin-tail", uniform)]:
    ek = stats.kurtosis(data, fisher=True)   # Fisher's: normal=0
    print(f"{name:<22}: Excess Kurtosis = {ek:+.4f}")
TypeExcess KurtosisShapeExample
Mesokurtic= 0Normal-likeNormal distribution
Leptokurticgreater than 0Fat tails, sharp peakt-distribution, daily returns
Platykurticless than 0Thin tails, flat peakUniform distribution

Fat Tails in Finance

# Simulate daily stock returns — compare crash frequency
normal_rets = np.random.normal(0, 0.01, 2520)
fat_rets    = np.random.standard_t(5, 2520) * 0.01

threshold = 0.03  # 3% daily move
print(f"Normal model >3% moves: {np.sum(np.abs(normal_rets)>threshold)}/2520")
print(f"Fat-tail model >3% moves: {np.sum(np.abs(fat_rets)>threshold)}/2520")
print("Fat tails vastly increase extreme event frequency!")

Jarque-Bera Test for Normality

# Combines skewness and kurtosis into a single normality test
for name, data in [("Normal", normal), ("t(df=3)", t3)]:
    jb_stat, p = stats.jarque_bera(data)
    reject = "YES — not normal" if p < 0.05 else "NO — cannot reject normality"
    print(f"{name}: JB={jb_stat:.2f}, p={p:.6f} -> Reject normality? {reject}")

Kurtosis in Machine Learning

ML ApplicationKurtosis UsageWhy
Outlier detectionHigh kurtosis = heavy tailsMore outliers expected
Feature engineeringLow kurtosis → transformNormality helps linear models
Risk managementFat tails = extreme eventsFinancial ML models
Data qualityUnexpected kurtosis = data issuesSanity check pipeline
import numpy as np
from scipy.stats import kurtosis

np.random.seed(42)

# Kurtosis and outlier detection
normal_data = np.random.normal(0, 1, 1000)
heavy_tailed = np.random.standard_t(df=3, size=1000)

print(f"Normal: kurtosis = {kurtosis(normal_data):.3f} (mesokurtic)")
print(f"t(3):   kurtosis = {kurtosis(heavy_tailed):.3f} (leptokurtic, more outliers)")

# Count extreme values
extreme_normal = np.sum(np.abs(normal_data) > 3) / len(normal_data)
extreme_heavy = np.sum(np.abs(heavy_tailed) > 3) / len(heavy_tailed)
print(f"\nValues beyond ±3σ:")
print(f"Normal: {extreme_normal:.3%}")
print(f"t(3):   {extreme_heavy:.3%} (more extremes due to heavy tails)")

Key Takeaways

Excess kurtosis = 0 for normal; greater than 0 = fat tails; less than 0 = thin tails

Leptokurtic distributions produce more extreme outliers than normal theory predicts

Financial returns are almost always leptokurtic — risk models must account for this

Jarque-Bera test formally tests normality using both skewness and kurtosis

"Kurtosis is the probability of the improbable. Ignore it, and the tails will bite you."

Need Expert Statistics Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement