Quant Memo
Advanced

Cornish-Fisher VaR

Keep the speed of the normal-distribution VaR formula, but nudge the quantile to account for skew and fat tails measured from the actual data. A cheap patch for the biggest weakness of variance-covariance VaR.

Prerequisites: Variance-Covariance VaR, Skewness and Kurtosis

Variance-covariance VaR is fast because it only needs a mean and a standard deviation, but it assumes those two numbers fully describe the risk, which is exactly false whenever a portfolio has meaningful skew, an option-selling strategy with limited upside and occasional large downside, say, or fat tails beyond what a normal curve predicts. Rerunning the whole risk engine as a full Monte Carlo or historical simulation fixes that, but costs speed. Cornish-Fisher VaR offers a shortcut: keep the fast formula, but adjust the quantile itself using the data's actual skewness and kurtosis.

The analogy before any symbols

A tailor with only a client's height and weight can guess a reasonable suit size, using standard proportions built into any pattern book. But if the client is unusually broad-shouldered or long-armed, that standard-proportions guess will be visibly off. A skilled tailor does not remeasure the client from scratch; she takes two extra numbers, shoulder width and arm length, and nudges the standard pattern to fit. Cornish-Fisher does the same to the normal-distribution quantile: instead of remeasuring the whole loss distribution, it takes two extra numbers, skewness and kurtosis, and nudges the standard normal quantile to fit the actual shape better.

The mechanics

Start from the standard normal quantile zαz_\alpha used in ordinary variance-covariance VaR (1.645-1.645 at 95%, 2.326-2.326 at 99%). The Cornish-Fisher expansion replaces it with an adjusted quantile zCFz_{CF}:

zCF=zα+16(zα21)S+124(zα33zα)K136(2zα35zα)S2,z_{CF} = z_\alpha + \frac{1}{6}\big(z_\alpha^2 - 1\big)S + \frac{1}{24}\big(z_\alpha^3 - 3z_\alpha\big)K - \frac{1}{36}\big(2z_\alpha^3 - 5z_\alpha\big)S^2,

where SS is the sample skewness and KK is the sample excess kurtosis (kurtosis in excess of the normal distribution's value of 3). In words: start from the ordinary normal quantile, then add a correction for skew (pulls the quantile further left if losses are skewed negative) and a correction for excess kurtosis (pulls it further left again if tails are fatter than normal), with a small final term that corrects for skew and kurtosis interacting. VaR is then computed exactly as before, just with zCFz_{CF} in place of zαz_\alpha:

VaRα=(μ+zCFσ).\text{VaR}_\alpha = -\big(\mu + z_{CF}\,\sigma\big).

In words: same formula shape as plain variance-covariance VaR, but the "how many standard deviations out" number now reflects the actual lopsidedness and tail-heaviness of the return distribution, not just its width.

Distribution · normal
-2.000.002.00μvalue →
Within ±1σ 68.3%mean μ 0.00std σ 1.00

Picture this normal curve with its left side pulled down and out, more mass pushed into the tail, without changing its center or width, that stretched left tail is what negative skewness and excess kurtosis are doing to zCFz_{CF} relative to the plain zαz_\alpha.

normal z_α z_CF
Negative skew and fat tails push the effective quantile further into the loss tail than a plain normal assumption would place it, which is exactly the gap Cornish-Fisher is trying to close.

Worked example: a book with negative skew

A short-volatility strategy has monthly returns with mean 0.5%, standard deviation 3%, skewness S=1.2S = -1.2, excess kurtosis K=4.5K = 4.5 (much fatter tails than normal). At 99% confidence, z0.99=2.326z_{0.99} = -2.326. Plain normal VaR: (0.5%+(2.326)(3%))=(0.5%6.978%)=6.478%-(0.5\% + (-2.326)(3\%)) = -(0.5\% - 6.978\%) = 6.478\% of capital. Now compute zCFz_{CF}: the skew term is 16((2.326)21)(1.2)=16(4.410)(1.2)=0.882\tfrac16\big((-2.326)^2-1\big)(-1.2) = \tfrac16(4.410)(-1.2) = -0.882; the kurtosis term is 124((2.326)33(2.326))(4.5)=124(12.59+6.978)(4.5)=124(5.612)(4.5)1.052\tfrac1{24}\big((-2.326)^3-3(-2.326)\big)(4.5) = \tfrac1{24}(-12.59+6.978)(4.5) = \tfrac1{24}(-5.612)(4.5) \approx -1.052; the cross term is small, roughly 0.15-0.15. Summing: zCF2.3260.8821.0520.15=4.41z_{CF} \approx -2.326 - 0.882 - 1.052 - 0.15 = -4.41. Cornish-Fisher VaR: (0.5%+(4.41)(3%))=(0.5%13.23%)=12.73%-(0.5\% + (-4.41)(3\%)) = -(0.5\% - 13.23\%) = 12.73\% of capital, roughly double the plain normal estimate, purely from accounting for this strategy's known lopsided, fat-tailed payoff shape.

Worked example: a nearly-normal book barely changes

A diversified long-only equity book has skewness S=0.15S = -0.15 and excess kurtosis K=0.4K = 0.4, close to normal. At 95% confidence, z0.95=1.645z_{0.95} = -1.645: skew term 16((1.645)21)(0.15)=16(1.706)(0.15)0.043\tfrac16((-1.645)^2-1)(-0.15) = \tfrac16(1.706)(-0.15) \approx -0.043; kurtosis term 124((1.645)33(1.645))(0.4)=124(4.45+4.935)(0.4)0.008\tfrac1{24}((-1.645)^3-3(-1.645))(0.4) = \tfrac1{24}(-4.45+4.935)(0.4) \approx 0.008. The adjustment is tiny, zCF1.6450.043+0.008=1.68z_{CF} \approx -1.645 - 0.043 + 0.008 = -1.68, moving VaR by only about 2%. Cornish-Fisher barely matters when a portfolio's return distribution is already close to normal, exactly as it should.

What this means in practice

Cornish-Fisher is popular in hedge fund and derivatives risk reporting because it needs only the first four moments of the historical return series, no simulation infrastructure, and slots directly into an existing variance-covariance pipeline. It is most valuable for exactly the books that break the normal assumption hardest: option sellers, merger arbitrage, credit strategies, anything with a "steady gains, occasional large loss" payoff shape.

Cornish-Fisher VaR keeps the normal-distribution VaR formula but replaces the plain quantile zαz_\alpha with an adjusted zCFz_{CF} built from the sample's skewness and kurtosis, cheaply correcting for the two most common ways real return distributions depart from normal.

The expansion is a local approximation, not an exact distribution fit, and it can misbehave for extreme skew or kurtosis combinations, sometimes producing a zCFz_{CF} that implies VaR decreases with confidence level, which is nonsensical (higher confidence must never give a lower VaR). This "Cornish-Fisher inversion" failure is a known limitation, most likely exactly in the high-kurtosis, high-confidence regime where you most need the adjustment to work. Always sanity-check that zCFz_{CF} moves monotonically with α\alpha before reporting the number, and treat Cornish-Fisher as a fast approximation to validate against full simulation, not a replacement for it.

Related concepts

Practice in interviews

Further reading

  • Cornish & Fisher (1938), Moments and Cumulants in the Specification of Distributions
  • Favre & Galeano (2002), Mean-Modified Value-at-Risk Optimization with Hedge Funds
ShareTwitterLinkedIn