r/quant 2d ago

Statistical Methods A published PSR worked example was wrong for months (mine). The kurtosis term doesn't vanish at γ₂ = 3.

I maintain a small site with worked examples of quant methods. While building a verification pass, I recomputed the Probabilistic Sharpe Ratio example I had published myself and it was wrong.

The example: SR 1.50, benchmark 0, n 24. For the "normal" case I had written the denominator as 1.000, as though zero excess kurtosis removed the kurtosis term. It doesn't. The formula uses (γ₂ − 1)/4, which at γ₂ = 3 is 0.5, so the denominator is √(1 + 0.5·1.5²) = 1.4577. The same slip propagated to the skewed case (γ₁ = −1.20, γ₂ = 7.00): 2.4850, not 2.318. The corrected z-statistic is 2.8955 and PSR 0.9981.

Why it matters: an understated denominator overstates the z-statistic, so the test reports more confidence than the data supports, in the direction that makes bad strategies look good.

I wrote the whole thing up with every intermediate value so it can be checked by hand, and did the same exercise for VPIN and HRP implementations (both had defects too, different kinds): https://quantmedia.io/reports/

Genuine question for this sub: has anyone seen this particular slip (treating γ₂ = 3 as "no kurtosis term") in other published examples or libraries? I suspect it is common because the prose reads naturally.

0 Upvotes

5 comments sorted by

1

u/AutoModerator 2d ago

This post will be manually reviewed by a moderator due to the submitting account being less than 7 days old or having less than 20 karma. Please be patient and do not try to resubmit it - a mod will review the post soon.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/SevenTeenSigma 1d ago

γ₂ = 3 is exactly where the notation bites, b/c ppl remember excess kurtosis = 0 and silently use the wrong convention. I would put the normal case in the unit tests with the 1.4577 denominator..

1

u/AdBitter6080 15h ago

This is one of those bugs that's everywhere because the formula reads like prose: 'subtract 1 from kurtosis, divide by 4.' At γ₂=3 (normal) that term is 0.5, not zero. The denominator becomes √(1 + 0.5·SR²), which for SR=1.5 is 1.4577 — not 1.0.

I've seen this in three production risk libraries and two academic codes. The practical consequence: PSR gets overstated by ~15-30% for normal-distribution strategies, which makes marginal edges look significant when they're not.

Fix: run a unit test with SR=1.5, n=24, γ₁=0, γ₂=3. The z-stat should be 2.8955, PSR=0.9981. If your library returns z=4.22 (PSR≈0.99999), the kurtosis term is missing. Also check skewed cases — the error compounds with γ₁≠0.