Free Tools & Code Worked Examples Home Markets News Equities Quantum Papers Microstructure About
HomeWorked examples › Probabilistic Sharpe Ratio: A Worked Calculation

Probabilistic Sharpe Ratio: A Worked Calculation

With an observed Sharpe of 1.50, 24 observations, skewness of −1.20 and kurtosis of 7.00, the Probabilistic Sharpe Ratio against a zero benchmark is 99.81%. Here is the arithmetic behind that result, including the denominator that is easy to miscalculate.

Use consistent units

Sharpe and the benchmark must be expressed at the observation frequency. For monthly observations, use monthly Sharpe values; do not enter an annualized Sharpe alongside a count of monthly returns. Kurtosis here is ordinary kurtosis, where a normal distribution has value 3, not excess kurtosis.

Inputs

Observed Sharpe SR1.50 per observation period
Benchmark SR*0.00 per observation period
Observations n24
Skewness g1−1.20
Kurtosis g27.00

Calculate without intermediate rounding

denominator = sqrt(1 - g1*SR + ((g2 - 1)/4)*SR^2) = sqrt(1 + 1.80 + 1.5*2.25) = sqrt(6.175) = 2.484954727958 z = (SR - SR*) * sqrt(n - 1) / denominator = 1.5 * sqrt(23) / sqrt(6.175) = 2.8949208628 PSR = standard_normal_cdf(z) = 0.9981037293 = 99.81% (rounded)

The normal-return case still has a kurtosis term. Setting skewness to zero and kurtosis to 3 gives sqrt(1 + 0.5 × 1.50²) = 1.4577, not 1. Zero excess kurtosis does not remove (g2 − 1)/4 from this formula.

Change the question

Raise the benchmark from 0 to 1 while keeping the other inputs fixed. The z-statistic becomes 0.9650 and PSR falls to 83.27%, below a 95% threshold. The observed record is the same; the claim being tested is stronger.

Open the free calculator with these default inputs. It calculates locally in your browser and displays both the denominator and z.

Reproduce with Python

from math import erf, sqrt sr, benchmark, n, skew, kurtosis = 1.5, 0.0, 24, -1.2, 7.0 den = sqrt(1 - skew*sr + ((kurtosis - 1)/4)*sr**2) z = (sr - benchmark)*sqrt(n - 1)/den psr = (1 + erf(z/sqrt(2)))/2 print(f"den={den:.10f}, z={z:.10f}, PSR={psr:.10f}")

This check uses Python's standard library. The browser calculator uses an error-function approximation, so compare at the displayed precision rather than requiring identical last digits.

What the percentage does not mean

PSR is not the probability of a profitable next trade. Its interpretation depends on the statistical assumptions, including independent returns and reliable moment estimates. It does not account for costs or the number of strategy variants tried. Selection across many backtests needs a separate correction such as the Deflated Sharpe Ratio.

Arithmetic checked 4 September 2026. The earlier worked example printed z = 2.8955; the correct value rounded to four decimals is 2.8949. This correction leaves the displayed PSR of 99.81% unchanged.