Cornish-Fisher VaR: How to Adjust Value at Risk for Skewness and Fat Tails

Jun 2, 2025 | Investing Tools and Regulations

Cornish-Fisher VaR is a version of Value at Risk that takes the shape of the return distribution into account. VaR answers a simple question: how much could a portfolio lose over a given period, at a given confidence level, under normal market conditions? The most common way to compute it assumes that returns follow a normal distribution. Real returns rarely do: large losses tend to be more frequent than the bell curve predicts, and the left tail is often longer than the right.

The Cornish-Fisher adjustment keeps the speed of the parametric approach but corrects the normal quantile for skewness and excess kurtosis. This guide covers the formula, a worked example against normal VaR, Excel and Python versions, and the method’s limits. If you are new to VaR itself, start with our guide to Value at Risk and its main calculation methods.

Why normal VaR can understate tail risk

Parametric (variance-covariance) VaR at a confidence level c is:

VaR = −(μ + z × σ)

  • μ is the expected return over the horizon (often set to zero for daily data);
  • σ is the standard deviation of returns over the same horizon;
  • z is the standard normal quantile for the left tail, z = Φ⁻¹(1 − c): −1.645 at 95% and −2.326 at 99%.

The minus sign turns a negative return into a positive loss figure. With a daily volatility of 1.5% and μ = 0, the one-day 99% normal VaR is 2.326 × 1.5% ≈ 3.49% of the portfolio. For longer horizons, σ is often scaled by the square root of the number of days, a shortcut that assumes independent, identically distributed returns.

The weak point is the shape assumption. Two statistics describe how actual returns depart from the bell curve.

Skewness: is the distribution lopsided?

Skewness measures asymmetry. A normal distribution has a skewness of 0. Negative skewness means the left tail is longer: many small gains punctuated by occasional large losses. That pattern is common in equity indices, credit, and option-selling or short-volatility strategies. Positive skewness is the reverse, typical of lottery-like payoffs or long option positions.

Excess kurtosis: how heavy are the tails?

Kurtosis measures how much of the variance comes from extreme observations. A normal distribution has a kurtosis of 3, so practitioners usually work with excess kurtosis = kurtosis − 3, which is 0 for a normal distribution. Positive excess kurtosis (“fat tails”) means that extreme moves, in both directions, occur more often than the normal model implies. Daily stock returns typically show positive excess kurtosis, and episodes such as the 1987 crash or the 2008 financial crisis sit far out in those tails.

When skewness is negative and excess kurtosis is positive, normal VaR tends to place the loss threshold too close to the average, and the gap grows with the confidence level.

The Cornish-Fisher VaR formula

The Cornish-Fisher expansion (or approximation), developed by the statisticians Edmund Cornish and Ronald Fisher in the late 1930s, approximates a quantile of a non-normal distribution from its moments. Applied to VaR, it replaces the normal quantile z with an adjusted quantile zcf:

zcf = z + (z² − 1) × S / 6 + (z³ − 3z) × K / 24 − (2z³ − 5z) × S² / 36

VaRCF = −(μ + zcf × σ)

  • z: the standard normal quantile for the left tail (−2.326 at 99%);
  • S: the skewness of returns;
  • K: the excess kurtosis of returns (kurtosis − 3);
  • μ and σ: the mean and standard deviation of returns over the VaR horizon.

If S = 0 and K = 0, every correction term disappears and Cornish-Fisher VaR equals normal VaR.

What each term does

  • Skewness term, (z² − 1) × S / 6. In the left tail, negative skewness pushes the quantile further out and raises VaR; positive skewness lowers it.
  • Kurtosis term, (z³ − 3z) × K / 24. With positive excess kurtosis, this term raises VaR only when |z| is above √3 ≈ 1.73, that is, at confidence levels above roughly 95.8%. At 95%, fat tails slightly lower VaR: for the same volatility, a fat-tailed distribution puts more weight in the centre and in the far tails, and less around the 95% point.
  • Second skewness term, −(2z³ − 5z) × S² / 36. A second-order correction that depends on S², so its sign does not depend on the direction of skewness. Above roughly 94% confidence it slightly lowers VaR, which partly offsets the first skewness term when skewness is negative.

Watch the sign convention

Some textbooks write the formula with a positive z (2.326 at 99%) and apply it to losses rather than returns. Mixing the two conventions is the most common error. If you plug +2.326 into the formula above while measuring skewness on returns, the first skewness term pushes in the wrong direction, so negative skewness lowers the estimate instead of raising it: with the inputs of the worked example below, the 99% VaR would drop from 5.41% to 3.65%. Keep z negative for the left tail of returns, or reverse the sign of S if you work with losses.

Worked example: Cornish-Fisher VaR vs normal VaR

Take a hypothetical €100,000 portfolio whose daily returns, estimated over several years of data, show the following:

  • mean daily return μ: 0 (a common simplification for one-day VaR);
  • daily volatility σ: 1.5%;
  • skewness S: −0.8;
  • excess kurtosis K: 4.0;
  • horizon: 1 day; confidence level: 99%, so z = −2.3263.

Step by step at 99% confidence

  1. Skewness term: (z² − 1) × S / 6 = (5.4119 − 1) × (−0.8) / 6 = −0.5883
  2. Kurtosis term: (z³ − 3z) × K / 24 = (−12.5899 + 6.9790) × 4 / 24 = −0.9352
  3. Second skewness term: −(2z³ − 5z) × S² / 36 = −(−25.1799 + 11.6317) × 0.64 / 36 = +0.2409
  4. Adjusted quantile: zcf = −2.3263 − 0.5883 − 0.9352 + 0.2409 = −3.6089
  5. Cornish-Fisher VaR: 3.6089 × 1.5% = 5.41%, about €5,413
  6. Normal VaR for comparison: 2.3263 × 1.5% = 3.49%, about €3,490

Same volatility, very different answer: the Cornish-Fisher estimate is about 55% higher. With skewness alone (K = 0), the 99% VaR would be 4.01%; with excess kurtosis alone (S = 0), 4.89%. At this confidence level, the fat tails do most of the work.

Results across confidence levels

ConfidencezzcfNormal VaRCornish-Fisher VaRDifference
95%−1.6449−1.77952.47% (€2,467)2.67% (€2,669)+8%
97.5%−1.9600−2.52022.94% (€2,940)3.78% (€3,780)+29%
99%−2.3263−3.60893.49% (€3,490)5.41% (€5,413)+55%
99.5%−2.5758−4.50893.86% (€3,864)6.76% (€6,763)+75%

The gap widens further into the tail: the higher the confidence level, the more the normal assumption understates the loss threshold of a negatively skewed, fat-tailed return series. These figures are estimates under stated assumptions, not forecasts of what any portfolio will lose.

How to calculate Cornish-Fisher VaR in Excel or Python

In Excel, with daily returns in cells A2:A1001:

  • mean: =AVERAGE(A2:A1001); volatility: =STDEV.S(A2:A1001);
  • skewness: =SKEW(A2:A1001); excess kurtosis: =KURT(A2:A1001) (Excel’s KURT already subtracts 3);
  • z at 99%: =NORM.S.INV(0.01), which returns −2.3263;
  • zcf: =z+(z^2-1)*S/6+(z^3-3*z)*K/24-(2*z^3-5*z)*S^2/36, replacing z, S and K with the cells that hold them;
  • VaR as a fraction of the portfolio: =-(mean+z_cf*volatility).

In Python, the same calculation with SciPy reproduces the worked example:

from scipy.stats import norm, skew, kurtosis

def cornish_fisher_var(mu, sigma, s, k, confidence=0.99):
    """s = skewness, k = excess kurtosis (normal = 0)."""
    z = norm.ppf(1 - confidence)          # -2.326 at 99%
    z_cf = (z + (z**2 - 1) * s / 6
              + (z**3 - 3 * z) * k / 24
              - (2 * z**3 - 5 * z) * s**2 / 36)
    return -(mu + z_cf * sigma)           # loss, as a fraction

print(cornish_fisher_var(0.0, 0.015, -0.8, 4.0))   # 0.0541...

# From a NumPy array r of daily returns:
# cornish_fisher_var(r.mean(), r.std(ddof=1),
#                    skew(r, bias=False), kurtosis(r, bias=False))

SciPy’s kurtosis() returns excess kurtosis by default, as does pandas’ .kurt(). Some tools, such as MATLAB’s kurtosis function, return raw kurtosis: subtract 3 before using the formula. Excel’s SKEW and KURT, like pandas, apply small-sample corrections; SciPy does so only with bias=False. With several years of daily data, the difference is small.

When Cornish-Fisher VaR is useful

  • Clearly but moderately non-normal return series: hedge funds and alternative strategies, option-selling or short-volatility strategies, high-yield credit, small caps or concentrated portfolios. For very extreme skewness or kurtosis, see the limits below.
  • A fast, transparent number: four statistics and a spreadsheet are enough, with no simulation, yet the result reflects the shape of the distribution.
  • A diagnostic cross-check: if normal VaR and Cornish-Fisher VaR are far apart, the return series has significant skewness or fat tails, and a single volatility figure is hiding part of the risk.
  • Comparing strategies with similar volatility: two funds with the same standard deviation can behave very differently on the downside, the same idea behind our comparison of the Sortino and Sharpe ratios.

The method is also used in European regulation. The PRIIPs rules (Commission Delegated Regulation (EU) 2017/653) use a Cornish-Fisher VaR at 97.5% confidence over the recommended holding period to compute the market-risk measure that feeds the 1-to-7 summary risk indicator in the key information document of many funds and other packaged products. In hedge fund research and in software such as the R package PerformanceAnalytics, the same measure is often called modified VaR.

Cornish-Fisher VaR compared with other VaR methods

MethodAssumptionStrengthsWeaknesses
Normal (parametric)Returns are normally distributedFast; needs only μ and σUnderstates the tail when returns are skewed or fat-tailed
Cornish-Fisher (modified)Normal quantile adjusted for skewness and excess kurtosisFast; captures asymmetry and fat tailsUnreliable for extreme skewness or kurtosis; moment estimates are noisy
Historical simulationThe past sample represents the futureUses the actual shape of past returnsLimited to events inside the data window
Monte CarloWhatever model you specifyFlexible; handles non-linear positions such as optionsDepends on the model; heavier to compute

Limits and common mistakes

  • Limited validity range. The expansion behaves well only for moderate skewness and kurtosis. With extreme inputs, the adjusted quantiles can stop moving in the right order (a 99.5% VaR below the 99% VaR, for instance), a sign the approximation has broken down: check that zcf moves further into the tail as confidence rises. The S and K you plug in are also not exactly the skewness and kurtosis of the distribution the formula implies, and the gap grows with the inputs.
  • Noisy inputs. Sample skewness and kurtosis are driven by a handful of extreme days. One crash entering or leaving the estimation window can change K sharply, so test several windows and report a range.
  • Time scaling. Do not multiply a one-day Cornish-Fisher VaR by √10 to get a ten-day figure. If daily returns were independent and identically distributed, skewness would shrink by a factor of √10 and excess kurtosis by a factor of 10 over ten days. In the example above, that gives a ten-day 99% VaR of about 12.2%, against 17.1% with naive √10 scaling and 11.0% for normal VaR. Real returns are not independent (volatility clusters), so when the data allow, estimate the moments on returns measured over the horizon you need.
  • Kurtosis vs excess kurtosis. Using raw kurtosis (3 for a normal distribution) instead of excess kurtosis overstates the tail adjustment.
  • Changing volatility. The basic formula uses moments from the whole sample. A common refinement applies it to returns standardised by a volatility model such as GARCH, so calm and turbulent periods are not blended.
  • Nothing beyond the threshold. Like any VaR, Cornish-Fisher VaR says where the tail starts, not how deep losses go once it is crossed. VaR is also not subadditive in general: the VaR of a combined portfolio can exceed the sum of the VaRs of its parts. For the average loss beyond the threshold, use Conditional VaR (CVaR), also called expected shortfall, which can itself be estimated with a Cornish-Fisher adjustment.

Cornish-Fisher VaR is one lens among several: volatility, downside risk, leverage and liquidity each tell part of the story. Our research methodology explains how such factors feed the 15% risk component of the scanner’s research score.

Frequently asked questions about Cornish-Fisher VaR

What is the Cornish-Fisher VaR formula?

VaRCF = −(μ + zcf × σ), with zcf = z + (z² − 1)S/6 + (z³ − 3z)K/24 − (2z³ − 5z)S²/36. Here z is the left-tail normal quantile (−2.326 at 99%), S is skewness and K is excess kurtosis.

What is modified VaR?

Modified VaR is another name for Cornish-Fisher VaR, common in hedge fund research and portfolio software. “Modified” refers to the adjustment of the normal quantile for skewness and excess kurtosis.

Is Cornish-Fisher VaR always higher than normal VaR?

No. Negative skewness and fat tails push it higher at high confidence levels, but positive skewness lowers it, and at 95% confidence positive excess kurtosis slightly reduces it.

What is the Cornish-Fisher expansion?

Also called the Cornish-Fisher approximation, it estimates the quantiles of a non-normal distribution from its moments (strictly, its cumulants): it starts from the normal quantile and adds correction terms. In finance it is mainly used to adjust VaR, and sometimes expected shortfall, for skewness and excess kurtosis.

How is Cornish-Fisher VaR different from CVaR?

Cornish-Fisher VaR is a loss threshold at a given confidence level. CVaR, or expected shortfall, is the average loss in the cases that go beyond that threshold, so it describes the depth of the tail. Partly for that reason, the Basel Committee’s revised market-risk framework moved banks’ internal models from 99% VaR to 97.5% expected shortfall.

Educational content, not investment advice.

Go further

Turn the headlines into a watchlist

Compare valuation, quality and risk in the stock valuation scanner, then follow the alerts.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Free newsletter · our market insights by email.

Join free

Join our newsletter for exclusive, high-value portfolio tips!

Unlock the secrets to a thriving portfolio with our exclusive newsletter! Be the first to receive cutting-edge investment tips, expert analysis, and insider insights that will elevate your investment strategy. Don’t miss out on the opportunity to maximize your returns – subscribe now and transform your financial future!

Thank you for subscribing! You're now on your way to receiving the best investment tips and market insights directly to your inbox.