Probabilistic Sharpe Ratio

From @jrai in the forums, a nice description with code of probabilistic sharpe. Has anyone written a version of this for Numerai? Of course on Numerai, we don’t use returns but instead correlation with the target but perhaps this idea can be used as a way to choose models that generalize much better out of sample. I think things like skewness, kurtosis will matter for your distribution of era correlations for the same reasons.

https://quantdare.com/probabilistic-sharpe-ratio/

Can anyone show with cross validation whether it’s better to optimize for probabilistic sharpe than smart sharpe from @mdo?

here is some of the code (not by me):

May also be helpful in Numerai Quant

2 Likes

Better confidence intervals around a flawed metric is still a…flawed metric. What this adjustment is trying to get at is to maximize the upside variance / downside variance, which partial moments already do.

3 Likes

Adjusted Sharpe ratio was introduced by Pezier (2005) in:

Alexander, Carol and Sheedy, Elizabeth, eds. (2005) The professional risk managers’ handbook: a comprehensive guide to current theory and best practices. PRMIA Publications, New York & London. ISBN 9780976609704

Adjusted Sharpe Ratio adjusts for skewness and kurtosis by incorporating a penalty factor for negative skewness and excess kurtosis.

The formula is given in a different paper since i couldn’t access the book:

*NOTE: Carol Alexander is a personal friend/mentor

I calculate the adjusted sharpe ratio which adjusts for Numerai’s trading costs as well:

import numpy as np
import scipy
from scipy.stats import skew, kurtosis

def annual_sharpe(x):
    return ((np.mean(x) -0.010415154) /np.std(x)) * np.sqrt(12)

def adj_sharpe(x):
    return annual_sharpe(x) * (1 + ((skew(x) / 6) * annual_sharpe(x)) - ((kurtosis(x) - 3) / 24) * (annual_sharpe(x) ** 2))

You should pass validation scores to these functions since they are monthly; adjust to weekly compounding to use this on your live performance.

6 Likes