PerformanceAnalytics (version 2.0.4)

ProbSharpeRatio: Probabilistic Sharpe Ratio

Description

Given a predefined benchmark Sharpe ratio,the observed Sharpe Ratio can be expressed in probabilistic terms known as the Probabilistic Sharpe Ratio. PSR provides an adjusted estimate of SR, by removing the inflationary effect caused by short series with skewed and/or fat-tailed returns and is defined as the probability of the observed sharpe ratio being higher than the reference sharpe ratio.

Usage

ProbSharpeRatio(
  R = NULL,
  Rf = 0,
  refSR,
  p = 0.95,
  weights = NULL,
  n = NULL,
  sr = NULL,
  sk = NULL,
  kr = NULL,
  ignore_skewness = FALSE,
  ignore_kurtosis = TRUE
)

Arguments

R

an xts, vector, matrix, data frame, timeSeries or zoo object of the returns input

Rf

the risk free rate

refSR

a single value or a vector when R is multicolumn. It defines the reference Sharpe Ratio and should be in the same periodicity as the returns (non-annualized).

p

the confidence level

weights

(if R is multicolumn and the underlying assets form a portfolio) the portfolio weights

n

(if R is NULL) the track record length of the returns

sr

(if R is NULL) the sharpe ratio of the returns

sk

(if R is NULL) the skewness of the returns

kr

(if R is NULL) the kurtosis of the returns

ignore_skewness

If TRUE, it ignores the effects of skewness in the calculations

ignore_kurtosis

If TRUE, it ignores the effects of kurtosis in the calculations

Value

A list containing the below

  • The probability that the observed Sharpe Ratio is higher than the reference one

  • The p-level confidence interval of the Sharpe Ratio

References

Marcos Lopez de Prado. 2018. Advances in Financial Machine Learning (1st ed.). Wiley Publishing.

Examples

Run this code
# NOT RUN {
data(edhec)
ProbSharpeRatio(edhec[,1],refSR = 0.23) 
ProbSharpeRatio(refSR = 1/12^0.5,Rf = 0,p=0.95,sr = 2/12^0.5,sk=-0.72,kr=5.78,n=59)

### Higher moments are data intensive, kurtosis shouldn't be used for short timeseries
ProbSharpeRatio(edhec[,1:2],refSR = c(0.28,0.24), ignore_skewness = FALSE, ignore_kurtosis = FALSE)
ProbSharpeRatio(edhec[,1:2],refSR = c(0.28,0.24), ignore_skewness = FALSE, ignore_kurtosis = TRUE)
ProbSharpeRatio(edhec[,1:2],refSR = c(0.28,0.24), ignore_skewness = TRUE, ignore_kurtosis = TRUE)

ProbSharpeRatio(edhec[,1:2],refSR = 0.26,weights = c(0.5,0.5), 
                ignore_skewness = FALSE, ignore_kurtosis = FALSE)

# }

Run the code above in your browser using DataCamp Workspace