Skewness and kurtosis of returns: what fat tails mean, with an example

On this page

Key takeaways

  • Volatility says how wide returns are spread; skewness and kurtosis say what shape the spread has. Two portfolios with the same volatility can have very different worst months.
  • Negative skewness means the large surprises were mostly losses; positive skewness means they were mostly gains. A symmetric bell curve has a skewness of zero.
  • Excess kurtosis compares the tails with a bell curve: zero for a bell curve, positive for fat tails, meaning extreme months come more often than a bell curve allows, which is what stock returns usually show.
  • Both numbers rest heavily on a few extreme months, so they are noisy and can change noticeably when one crash enters or leaves the window.
  • MarketHeist reports both from monthly returns, using the small-sample versions most statistics packages use by default.

Definition

Skewness measures whether a portfolio's returns lean toward large losses or large gains: negative skew means the extreme months were mostly falls. Excess kurtosis measures how heavy the tails are compared with a normal distribution of the same volatility: a positive value means extreme months, in either direction, happened more often than a bell curve allows.

Also known as: skew, excess kurtosis, fat tails, heavy tails, negative skew, leptokurtic returns, third and fourth moments, return distribution shape.

How it works

Start with the monthly returns of a portfolio and their average. Each month's distance from the average, raised to a power, says something different. Squared distances, averaged, give the variance (uncertainty) of returns, the basis of volatility. Cubed distances keep their sign, so large falls and large gains pull in opposite directions: their average, scaled by the volatility cubed, is the skewness. Distances raised to the fourth power are always positive and are dominated by the most extreme months: their average, scaled by the volatility to the fourth, is the kurtosis.

A normal distribution has a kurtosis of exactly 3, so it is common to subtract 3 and report the excess kurtosis, which is zero for a bell curve. Distributions with positive excess kurtosis are called fat-tailed or leptokurtic: compared with a normal distribution of the same volatility, they have more months near the middle and more months far out in the tails, and fewer in between.

Stock market returns are the classic case. Most months are unremarkable, and a few, such as October 1987 or the autumn of 2008, are far larger than a bell curve fitted to the same data would expect, and they are mostly falls. That shows up as negative skewness and positive excess kurtosis. High-quality government bonds tend to sit much closer to symmetric with thinner tails.

Volatility describes how choppy the sea is on a typical day; skewness and kurtosis describe the rogue waves: how often they come, and whether they come from the side that sinks the boat.

The shape matters wherever a calculation assumes normal returns. A value at risk computed from the mean and volatility alone understates how often extreme months occur when kurtosis is positive, and a Sharpe ratio does not see skew at all. The probabilistic Sharpe ratio was designed to correct for both, and the Sortino ratio responds to skew through its downside-only denominator.

Formula

Sample moments around the mean
r¯=1n∑t=1nrt,mk=1n∑t=1n(rt−r¯)k,k=2,3,4
rₜ
return in month t
r̄
arithmetic mean monthly return
n
number of monthly returns in the window
mₖ
k-th central moment, dividing by n: m₂ is the population variance, m₃ and m₄ the third and fourth moments
Skewness: the bias-adjusted estimator G1
g1=m3m23/2,G1=g1n(n−1)n−2
g₁
the plain moment skewness (Fisher-Pearson coefficient)
G₁
the adjusted Fisher-Pearson skewness MarketHeist reports; negative = the extreme months were mostly losses
m₂, m₃
second and third central moments from the block above
n
number of monthly returns

The correction factor approaches 1 as n grows; with several hundred months the two versions differ only in the third decimal.

Excess kurtosis: the bias-adjusted estimator G2
g2=m4m22−3,G2=n−1(n−2)(n−3)((n+1)g2+6)
g₂
the plain moment excess kurtosis; the 3 subtracted is the kurtosis of a normal distribution
G₂
the bias-adjusted excess kurtosis MarketHeist reports; 0 for a normal distribution, positive for fat tails
m₂, m₄
second and fourth central moments
n
number of monthly returns
How precise the estimates are (normal returns, rough guide)
SE(G1)≈6n,SE(G2)≈24n
SE(·)
standard error: the typical size of the estimate's sampling error if returns were normal
n
number of monthly returns

Large-sample approximations that hold for normal data. Real returns with fat tails make both estimates noisier than this, kurtosis in particular.

Worked example

The S&P 500 (SPY) and intermediate-term Treasuries (IEF), 500 monthly returns from Feb 1985 to Sep 2026, a window that includes the October 1987 crash, the 2008 financial crisis and the 2022 bond sell-off.

SPY's monthly returns had a skewness of -0.69 and an excess kurtosis of 1.97. Both point the same way: the extreme months were mostly falls, and there were more of them than a bell curve with SPY's volatility of 15.1% would produce.

IEF's skewness was -0.06, close to symmetric, and its excess kurtosis 0.73, much lower than SPY's: its unusual months were spread more evenly between rises and falls, and its tails were closer to normal. The Treasury fund had its own bad years, but they came as a run of moderate months rather than a few violent ones.

The shape shows up in the gap between the two ratios that treat risk differently. SPY's Sortino ratio was 1.20 against a Sharpe ratio of 0.79; IEF's were 1.59 and 0.92. A downside-only measure charges SPY's falls in full, which is part of why, in proportion, SPY's Sortino ratio stands further below IEF's than its Sharpe ratio does.

Neither number says SPY was the worse holding: over the same months it grew 11.3% a year against 5.5% for IEF. They say what kind of risk came with that return, which a single volatility figure hides.

Data through Sep 2026. Reproduce id 138637c144638578 (this guide, its lab setup and the data month).

Interactive lab

Skewness and excess kurtosis of monthly returns for both picks over the same months, beside the Sharpe and Sortino ratios they affect. Switch portfolios to see which ones lean toward losses and which have fat tails.

Sharpe and Sortino ratio: SPY and IEFSPY: Sharpe 0.79, Sortino 1.20; IEF: Sharpe 0.92, Sortino 1.59. Window Feb 1985 to Sep 2026, risk-free rate 0.SPYIEFSharpe0.790.92Sortino1.201.59
Annualized Sharpe and Sortino ratios of monthly returns. Feb 1985 to Sep 2026.
Probability that the true Sharpe ratio beats 0.00, by years of track record: SPY and IEFPSR against the length of the track record, holding each series' observed Sharpe ratio, skewness and kurtosis fixed. SPY: 100% at 500 months; IEF: 100% at 500 months.0%20%40%60%80%100%95%1260120180240300360420480SPYIEFMonths of track record
Probability that the true Sharpe ratio exceeds 0.00 as the record grows. The dashed line marks 95%.
MeasureSPYIEF
Sharpe ratio0.790.92
Sortino ratio1.201.59
Probabilistic Sharpe ratio (against 0.00)100.0%100.0%
Skewness of monthly returns-0.69-0.06
Excess kurtosis of monthly returns1.970.73
Downside deviation (annualized)9.9%3.5%
Volatility (annualized)15.1%6.0%
Average return (mean monthly return x 12)11.9%5.6%
CAGR11.3%5.5%
Volatility drag (annualized)1.2%0.2%
Omega ratio (threshold 0%)1.801.99
Months in the window500500

Risk-free rate 0, 12 periods a year. The probabilistic Sharpe ratio is the probability that the true Sharpe ratio exceeds the benchmark, given the record's length, skewness and kurtosis. Volatility drag: 12 times the arithmetic mean monthly return minus the geometric mean monthly return. Omega ratio: the sum of the monthly gains over the sum of the monthly losses, at a threshold of 0% a month. Feb 1985 to Sep 2026.

How MarketHeist computes it

Every choice an implementation has to make, as the code makes it today. The page is checked against the code each time it is built.

ChoiceHow it is computedIn the code
DataMonthly total returns (dividends reinvested). Funds younger than the period shown are extended backward with older funds, spliced on returns, not prices.
WindowThe worked example and the lab use the common window of the two portfolios compared, Feb 1985 to Sep 2026 (500 months), ending at the data month of this page. Another pick in the lab is read over its own common window.
Portfolio streamsA fund is its proxy-extended monthly return stream. A built-in portfolio is read as the MarketHeist MCP reads it: its composed stream with its own rebalancing rule and overlay. A custom mix is rebalanced yearly.
RatiosRisk-free rate 0, 12 periods a year. Sharpe: mean of the monthly returns over their sample standard deviation, times the square root of 12. Sortino: the same mean over the downside deviation, the root of the average squared negative return over all N months. The probabilistic Sharpe ratio uses the per-period Sharpe ratio, the skewness and the kurtosis of the monthly returns; the benchmark Sharpe ratio is divided by the square root of 12 first.
ReturnsMonthly total returns over the common window of the two picks (dividends reinvested, portfolios simulated with their own rebalancing rule). Skewness and kurtosis are computed on monthly returns and are not annualized; daily or weekly returns of the same fund usually show fatter tails.simulatePortfoliopackages/portfolio/engine/portfolio.ts
SkewnessAdjusted Fisher-Pearson G1: the third central moment over the second to the power 1.5, both dividing by n, times √(n(n − 1)) / (n − 2). Fewer than 3 returns or a series that never varies gives no value.skewnesspackages/shared/engine/metrics.ts
Excess kurtosisBias-adjusted G2: g₂ = m₄ / m₂² − 3 with moments dividing by n, then (n − 1) / ((n − 2)(n − 3)) · ((n + 1) g₂ + 6). Zero for a normal distribution. Fewer than 4 returns or a series that never varies gives no value.excessKurtosispackages/shared/engine/metrics.ts
In the probabilistic Sharpe ratioThe PSR uses the same G1 and G2, adding 3 back to G2 to get the full kurtosis: the standard error of the Sharpe ratio grows with negative skew and with fat tails.probabilisticSharpeRatiopackages/shared/engine/metrics.ts
In the backtesterThe backtester's return-distribution panel reports the same two functions on the strategy's per-bar returns, so its figures depend on the bar frequency chosen (daily, weekly or monthly).skewnesspackages/shared/engine/metrics.ts
Same estimator as common softwareG1 and G2 are the defaults of Excel's SKEW and KURT and of pandas' skew() and kurt(); scipy.stats reports the uncorrected g₁ and g₂ unless bias=False is passed.
Engine functionsThe functions the portfolio app and the MarketHeist MCP tools run, called here on the same monthly returns.sharpepackages/shared/engine/metrics.tssortinopackages/shared/engine/metrics.tsprobabilisticSharpeRatiopackages/shared/engine/metrics.tsskewnesspackages/shared/engine/metrics.tsexcessKurtosispackages/shared/engine/metrics.ts

Skewness and kurtosis of returns compared with its neighbours

Skewness, kurtosis and the measures around them
MeasureWhat it describesValue for a normal distributionWhat a typical stock index shows
VolatilityHow widely returns spread around the averageAny positive valueThe reference scale for the others
SkewnessWhether the large surprises were mostly gains or mostly lossesZeroNegative: the extreme months were mostly falls
Excess kurtosisHow heavy the tails are relative to a bell curveZeroPositive: more extreme months than a bell curve allows
Historical VaR and CVaRWhere the worst months start and how bad they were on averageClose to the normal-distribution figuresFurther out than the normal-distribution figures
Worst monthThe single largest monthly lossRarely more than a few volatilities below the meanOften far beyond what the volatility suggests

Limitations

  • Both statistics are driven by a handful of months. Kurtosis especially: removing or adding one crash month can change it by more than the gap between two very different funds.
  • A positive skewness is not automatically good, and a value near zero does not mean returns were normal; a distribution can be symmetric and still have fat tails, which is what excess kurtosis is for.
  • They describe one month at a time. A long run of moderate losses, as in a slow bear market, barely moves either statistic; maximum drawdown captures that instead.
  • Results depend on the data frequency and the window. Monthly figures from decades of data are not comparable with daily figures from a few years.
  • Long histories are extended backward with older funds or indexes where a fund is younger than the window, so early months approximate the fund rather than reproduce it.

Frequently asked questions

What does negative skewness mean for an investment?
That its largest surprises were mostly losses: the left tail of the return distribution stretches further than the right. Stock indexes and strategies that collect small, steady premiums, such as selling options, tend to show it. Averages and volatility can look fine while the occasional month is very bad.
What is excess kurtosis, and what are fat tails?
Kurtosis measures how much of a distribution's spread comes from extreme values. A normal distribution has a kurtosis of 3, so excess kurtosis subtracts 3 to make the bell curve the zero point. Positive excess kurtosis means fat tails: more very large moves, in either direction, than a bell curve with the same volatility would produce.
Is a high kurtosis bad?
It means extreme months are more common than the volatility suggests, so risk measures built on a normal distribution understate them. Whether that is bad depends on the skew: fat tails that are mostly losses are the dangerous combination.
Why do different tools report different skewness and kurtosis for the same data?
Because there are several estimators. Some report the plain moment versions g₁ and g₂, others the bias-adjusted G1 and G2, and some report full kurtosis rather than excess kurtosis, which differs by 3. MarketHeist reports the bias-adjusted G1 and excess G2, as Excel and pandas do.
How many months of data are needed to estimate skewness and kurtosis?
Many. Even for normal returns the standard error of the skewness is about √(6/n) and of the kurtosis about √(24/n), and fat tails make it worse. With a few years of monthly data the figures are dominated by one or two months; decades of data give a more stable picture, though still one that a single crash can move.

References

  1. Mandelbrot, B. (1963) The Variation of Certain Speculative Prices. Journal of Business 36(4). The early evidence that price changes have fat tails.
  2. Fama, E. F. (1965) The Behavior of Stock-Market Prices. Journal of Business 38(1). Daily returns are leptokurtic.
  3. Joanes, D. N. and Gill, C. A. (1998) Comparing Measures of Sample Skewness and Kurtosis. Journal of the Royal Statistical Society: Series D 47(1). The g, G and b estimators side by side.
  4. Cont, R. (2001) Empirical Properties of Asset Returns: Stylized Facts and Statistical Issues. Quantitative Finance 1(2). Heavy tails and gain/loss asymmetry across markets.
  5. Harvey, C. R. and Siddique, A. (2000) Conditional Skewness in Asset Pricing Tests. Journal of Finance 55(3).
  6. Bailey, D. H. and López de Prado, M. (2012) The Sharpe Ratio Efficient Frontier. Journal of Risk 15(2). The probabilistic Sharpe ratio, which adjusts for skewness and kurtosis.

Try it on your own holdings

Run a backtest and open the return distribution panel for skewness and kurtosis →

Or ask an assistant connected to the MarketHeist MCP server (https://marketheist.io/mcp), which computes the same figures:

Using MarketHeist.io monthly returns, what are the skewness and excess kurtosis of SPY and of IEF since 1985, and what do they say about fat tails in stocks versus Treasuries?

Ask an AI assistant

The prompt opens in a new tab, already filled in. An assistant without the MarketHeist connector answers from its own knowledge, not from the figures on this page.

Historical simulation, not advice. Computed by the MarketHeist portfolio engine from monthly total returns, data through Sep 2026. Markdown version of this page: skewness-and-kurtosis.md.