Learn R Programming

PeerPerformance (version 2.2.5)

sharpeScreening: Screening using the Sharpe outperformance ratio

Description

Function which performs the screening of a universe of returns, and computes the Sharpe outperformance ratio.

Usage

sharpeScreening(X, control = list())

Arguments

X

Matrix \((T \times N)\) of \(T\) returns for the \(N\) funds. NA values are allowed.

control

Control parameters (see *Details*).

Value

A list with the following components:

n: Vector (of length \(N\)) of number of non-NA observations.

npeer: Vector (of length \(N\)) of number of available peers.

sharpe: Vector (of length \(N\)) of unconditional Sharpe ratios.

dsharpe: Matrix (of size \(N \times N\)) of Sharpe ratios differences.

tstat: Matrix (of size \(N \times N\)) of t-statistics.

pval: Matrix (of size \(N \times N\)) of pvalues of test for Sharpe ratios differences.

lambda: vector (of length \(N\)) of lambda values.

pizero: vector (of length \(N\)) of probability of equal performance.

pipos: vector (of length \(N\)) of probability of outperformance performance.

pineg: Vector (of length \(N\)) of probability of underperformance performance.

Details

The Sharpe ratio (Sharpe 1992) is one industry standard for measuring the absolute risk adjusted performance of hedge funds. We propose to complement the Sharpe ratio with the fund's outperformance ratio, defined as the percentage number of funds that have a significantly lower Sharpe ratio. In a pairwise testing framework, a fund can have a significantly higher Sharpe ratio because of luck. We correct for this by applying the false discovery rate approach by Storey (2002).

For the testing, only the intersection of non-NA observations for the two funds are used.

The methodology proceeds as follows:

  • (1) compute all pairwise tests of Sharpe differences using the bootstrap approach of Ledoit and Wolf (2002). This means that for a universe of \(N\) funds, we perform \(N(N-1)/2\) tests. The algorithm has been parallelized and the computational burden can be splitted across several cores. The number of cores can be defined in control, see below.

  • (2) for each fund, the false discovery rate approach by Storey (2002) is used to determine the proportions over, equal, and underperfoming funds, in terms of Sharpe ratio, in the database.

The argument control is a list that can supply any of the following components:

  • 'type' Asymptotic approach (type = 1) or studentized circular bootstrap approach (type = 2). Default: type = 1.

  • 'ttype' Test based on ratio (type = 1) or product (type = 2). Default: type = 2.

  • 'hac' Heteroscedastic-autocorrelation consistent standard errors. Default: hac = FALSE.

  • 'nBoot' Number of boostrap replications for computing the p-value. Default: nBoot = 499.

  • 'bBoot' Block length in the circular bootstrap. Default: bBoot = 1, i.e. iid bootstrap. bBoot = 0 uses optimal block-length.

  • 'pBoot' Symmetric p-value (pBoot = 1) or asymmetric p-value (pBoot = 2). Default: pBoot = 1.

  • 'nCore' Number of cores to be used. Default: nCore = 1.

  • 'minObs' Minimum number of concordant observations to compute the ratios. Default: minObs = 10.

  • 'minObsPi' Minimum number of observations to compute pi0. Default: minObsPi = 1.

  • 'lambda' Threshold value to compute pi0. Default: lambda = NULL, i.e. data driven choice.

References

Ardia, D., Boudt, K. (2015). Testing equality of modified Sharpe ratios. Finance Research Letters 13, pp.97--104. 10.1016/j.frl.2015.02.008

Ardia, D., Boudt, K. (2018). The peer performance ratios of hedge funds. Journal of Banking and Finance 87, pp.351-.368. 10.1016/j.jbankfin.2017.10.014

Barras, L., Scaillet, O., Wermers, R. (2010). False discoveries in mutual fund performance: Measuring luck in estimated alphas. Journal of Finance 65(1), pp.179--216.

Sharpe, W.F. (1994). The Sharpe ratio. Journal of Portfolio Management 21(1), pp.49--58.

Ledoit, O., Wolf, M. (2008). Robust performance hypothesis testing with the Sharpe ratio. Journal of Empirical Finance 15(5), pp.850--859.

Storey, J. (2002). A direct approach to false discovery rates. Journal of the Royal Statistical Society B 64(3), pp.479--498.

See Also

sharpe, sharpeTesting, msharpeScreening and alphaScreening.

Examples

Run this code
# NOT RUN {
## Load the data (randomized data of monthly hedge fund returns)
data("hfdata")
rets = hfdata[,1:10]

## Sharpe screening 
sharpeScreening(rets, control = list(nCore = 1))

## Sharpe screening with bootstrap and HAC standard deviation
sharpeScreening(rets, control = list(nCore = 1, type = 2, hac = TRUE))
# }

Run the code above in your browser using DataLab