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

Canonical URL: https://marketheist.io/portfolio/learn/skewness-and-kurtosis
By Jeffrey Lin · Published 2026-10-30 · Updated 2026-10-30 · Data through Sep 2026
Category: Risk

## 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**

```
\bar{r} = \frac{1}{n} \sum_{t = 1}^n r_t, m_k = \frac{1}{n} \sum_{t = 1}^n (r_t - \bar{r})^k, k = 2,3,4
```

where:

- 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**

```
g_1 = \frac{m_3}{m_2^{3/2}}, G_1 = g_1 \frac{\sqrt{n (n - 1)}}{n - 2}
```

where:

- 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**

```
g_2 = \frac{m_4}{m_2^2} - 3, G_2 = \frac{n - 1}{(n - 2) (n - 3)} ((n + 1) g_2 + 6)
```

where:

- 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 (G_1) \approx \sqrt{\frac{6}{n}}, SE (G_2) \approx \sqrt{\frac{24}{n}}
```

where:

- 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).

## How MarketHeist computes it

- **Data**: Monthly total returns (dividends reinvested). Funds younger than the period shown are extended backward with older funds, spliced on returns, not prices.
- **Window**: The 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 streams**: A 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.
- **Ratios**: Risk-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.
- **Returns**: Monthly 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. (`simulatePortfolio` in packages/portfolio/engine/portfolio.ts)
- **Skewness**: Adjusted 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. (`skewness` in packages/shared/engine/metrics.ts)
- **Excess kurtosis**: Bias-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. (`excessKurtosis` in packages/shared/engine/metrics.ts)
- **In the probabilistic Sharpe ratio**: The 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. (`probabilisticSharpeRatio` in packages/shared/engine/metrics.ts)
- **In the backtester**: The 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). (`skewness` in packages/shared/engine/metrics.ts)
- **Same estimator as common software**: G1 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 functions**: `sharpe` (packages/shared/engine/metrics.ts), `sortino` (packages/shared/engine/metrics.ts), `probabilisticSharpeRatio` (packages/shared/engine/metrics.ts), `skewness` (packages/shared/engine/metrics.ts), `excessKurtosis` (packages/shared/engine/metrics.ts)

## Skewness and kurtosis of returns compared with its neighbours

Skewness, kurtosis and the measures around them

| Measure | What it describes | Value for a normal distribution | What a typical stock index shows |
| --- | --- | --- | --- |
| Volatility | How widely returns spread around the average | Any positive value | The reference scale for the others |
| Skewness | Whether the large surprises were mostly gains or mostly losses | Zero | Negative: the extreme months were mostly falls |
| Excess kurtosis | How heavy the tails are relative to a bell curve | Zero | Positive: more extreme months than a bell curve allows |
| Historical VaR and CVaR | Where the worst months start and how bad they were on average | Close to the normal-distribution figures | Further out than the normal-distribution figures |
| Worst month | The single largest monthly loss | Rarely more than a few volatilities below the mean | Often 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 <https://doi.org/10.1111/1467-9884.00122>. 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

App: https://marketheist.io/backtest/

MCP prompt (MarketHeist MCP server, https://marketheist.io/mcp):

```
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?
```

Historical simulation, not advice.
