Package 'PeerPerformance'

Title: Luck-Corrected Peer Performance Analysis in R
Description: Provides functions to perform the peer performance analysis of funds' returns as described in Ardia and Boudt (2018) <doi:10.1016/j.jbankfin.2017.10.014>.
Authors: David Ardia [aut, cre] , Kris Boudt [aut] , Nabil Bouamara [ctb], Sebastien Legros [ctb]
Maintainer: David Ardia <[email protected]>
License: GPL (>= 2)
Version: 2.3.1
Built: 2024-11-13 20:16:05 UTC
Source: https://github.com/ardiad/peerperformance

Help Index


Screening using the alpha outperformance ratio

Description

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

Usage

alphaScreening(X, factors = NULL, control = list(), screen_beta = FALSE)

Arguments

X

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

factors

Matrix (T×K)(T \times K) of TT returns for the KK factors. NA values are allowed.

control

Control parameters (see *Details*).

screen_beta

Boolean to screen all factors' coefficients (beta). Default: screen_beta=FALSE (i.e. only outputs the alpha). If screen_beta=TRUE, each element of the returned list will have a new first dimension representing each coefficient (the first one being alpha)

Details

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

The methodology proceeds as follows:

  • (1) compute all pairwise tests of alpha differences. This means that for a universe of NN funds, we perform N(N1)/2N(N-1)/2 tests. The algorithm has been parallelized and the computational burden can be split 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 of over, equal, and underperforming funds, in terms of alpha, in the database.

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

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

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

  • 'minObsPi' Minimum number of observations for computing the p-values). Default: minObsPi = 1.

  • 'nCore' Number of cores used to perform the screening. Default: nCore = 1.

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

Value

A list with the following components:

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

npeer: Vector (of length NN) of number of available peers.

alpha: Vector (of length NN) of unconditional alpha.

dalpha: Matrix (of size N×NN \times N) of alpha differences.

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

pval: Matrix (of size N×NN \times N) of p-values of test for alpha differences.

lambda: Vector (of length NN) of lambda values.

pizero: Vector (of length NN) of probability of equal performance.

pipos: Vector (of length NN) of probability of outperformance performance.

pineg: Vector (of length NN) of probability of underperformance performance.

Note

Further details on the methodology with an application to the hedge fund industry is given in Ardia and Boudt (2018).

Application of the false discovery rate approach applied to the mutual fund industry has been presented in Barras, Scaillet and Wermers (2010).

Currently, the HAC asymptotic and studentized circular block bootstrap presented in Ledoit and Wolf (2008) are not supported by the alphaScreening function.

Author(s)

David Ardia and Kris Boudt.

References

Ardia, D., Boudt, K. (2015). Testing equality of modified Sharpe ratios. Finance Research Letters 13, pp.97–104. doi: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. doi: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.

Carhart, M. (1997). On persistence in mutual fund performance. Journal of Finance 52(1), pp.57–82.

Fama, E., French, K. (2010). Luck versus skill in the cross-section of mutual fund returns. Journal of Finance 65(5), pp.1915–1947.

Fung, W., Hsieh, D. (2004). Hedge fund benchmarks: A risk based approach. Financial Analysts Journal 60(5), pp.65–80.

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

Treynor, J. L., Black, F. (1973). How to use security analysis to improve portfolio selection. Journal of Business 46(1), pp.66–86.

See Also

sharpeScreening and msharpeScreening.

Examples

## Load the data (randomized data of monthly hedge fund returns)
data("hfdata")
rets = hfdata[,1:5]

## Run alpha screening
ctr = list(nCore = 1)
alphaScreening(rets, control = ctr)

## Run alpha screening with HAC standard deviation
ctr = list(nCore = 1, hac = TRUE)
alphaScreening(rets, control = ctr)

Testing the difference of alpha outperformance ratios

Description

Function which performs the testing of the difference of alpha outperformance ratios.

Usage

alphaTesting(x, y, factors = NULL, control = list(), screen_beta = FALSE)

Arguments

x

Vector (of length TT) of returns for the first fund. NA values are allowed.

y

Vector (of length TT) returns for the second fund. NA values are allowed.

factors

Matrix (T×K)(T \times K) of TT returns for the KK factors. NA values are allowed.

control

Control parameters (see *Details*).

screen_beta

Boolean to screen all factors' coefficients (beta). Default: screen_beta=FALSE (i.e. only outputs the alpha). If screen_beta=TRUE, each element of the returned list will have a new first dimension representing each coefficient (the first one being alpha)

Details

The alpha measure (Treynor and Black 1973, Carhart 1997, Fung and Hsieh 2004) is one industry standard for measuring the absolute risk adjusted performance of hedge funds. This function performs the testing of alpha outperformance ratio difference for two funds.

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

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

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

Value

A list with the following components:

n: Number of non-NA concordant observations.

alpha: Vector (of length 2) of unconditional alpha outperformance ratios.

dalpha: alpha outperformance ratios difference.

tstat: t-stat of alpha outperformance ratios differences.

pval: pvalues of test of alpha outperformance ratios differences.

Note

Further details on the methodology with an application to the hedge fund industry is given in in Ardia and Boudt (2018).

Some internal functions where adapted from Michael Wolf MATLAB code.

Author(s)

David Ardia and Kris Boudt.

References

Ardia, D., Boudt, K. (2015). Testing equality of modified Sharpe ratios. Finance Research Letters 13, 97–104.

Ardia, D., Boudt, K. (2018). The peer performance ratios of hedge funds. Journal of Banking and Finance 87, 351–368.

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

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

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

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

See Also

alphaScreening..

Examples

## Load the data (randomized data of monthly hedge fund returns)
data("hfdata")
x = hfdata[,1]
y = hfdata[,2]

## Run alpha testing
alphaTesting(x, y)

Hedge fund data

Description

The matrix hfdata contains randomized and modified monthly returns of hedge funds.

Usage

data(hfdata)

Format

A matrix of size 60 x 100, containing 60 monthly net returns for 100 hedge funds. Returns have been modified.

Source

HFR database


Compute modified Sharpe ratio

Description

Function which computes the modified Sharpe ratio

Usage

msharpe(X, level = 0.9, na.rm = TRUE, na.neg = TRUE)

Arguments

X

Vector (of length TT) or matrix (of size T×NT \times N) of returns. NA values are allowed.

level

Modified Value-at-Risk level. Default: level = 0.90.

na.rm

A logical value indicating whether NA values should be stripped before the computation. Default na.rm = TRUE.

na.neg

A logical value indicating whether NA values should be returned if a negative modified Value-at-Risk is obtained. Default na.neg = TRUE.

Details

The modified Sharpe ratio (Favre and Galeano 2002) is one industry standard for measuring the absolute risk adjusted performance of hedge funds.

Value

Scalar or a vector (of size NN) with the modified Sharpe ratios.

Author(s)

David Ardia and Kris Boudt.

References

Ardia, D., Boudt, K. (2015). Testing equality of modified Sharpe ratios. Finance Research Letters 13, 97–104.

Ardia, D., Boudt, K. (2018). The peer performance ratios of hedge Funds. Journal of Banking and Finance 87, 351–368.

Favre, L., Galeano, J.A. (2002). Mean-modified Value-at-Risk Optimization with Hedge Funds. Journal of Alternative Investments 5(2), 21–25.

Gregoriou, G. N., Gueyie, J.-P. (2003). Risk-adjusted performance of funds of hedge funds using a modified Sharpe ratio. Journal of Wealth Management 6(3), 77–83.

See Also

msharpeTesting, msharpeScreening and sharpe.

Examples

## Load the data (randomized data of monthly hedge fund returns)
data('hfdata')

out = msharpe(hfdata)
print(out)

out = msharpe(hfdata, na.rm = FALSE)
print(out)

Screening using the modified Sharpe outperformance ratio

Description

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

Usage

msharpeScreening(X, level = 0.9, na.neg = TRUE, control = list())

Arguments

X

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

level

Modified Value-at-Risk level. Default: level = 0.90.

na.neg

A logical value indicating whether NA values should be returned if a negative modified Value-at-Risk is obtained. Default na.neg = TRUE.

control

Control parameters (see *Details*).

Details

The modified Sharpe ratio (Favre and Galeano 2002, Gregoriou and Gueyie 2003) is one industry standard for measuring the absolute risk adjusted performance of hedge funds. We propose to complement the modified Sharpe ratio with the fund's outperformance ratio, defined as the percentage number of funds that have a significantly lower modified Sharpe ratio. In a pairwise testing framework, a fund can have a significantly higher modified 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 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 bootstrap 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.

Value

A list with the following components:

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

npeer: Vector (of length NN) of number of available peers.

msharpe: Vector (of length NN) of unconditional modified Sharpe ratios.

dmsharpe: Matrix (of size N×NN \times N) of modified Sharpe ratios differences.

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

pval: Matrix (of size N×NN \times N) of p-values of test for modified Sharpe ratios differences.

lambda: Vector (of length NN) of lambda values.

pizero: Vector (of length NN) of probability of equal performance.

pipos: Vector (of length NN) of probability of outperformance performance.

pineg: Vector (of length NN) of probability of underperformance performance.

Note

Further details on the methodology with an application to the hedge fund industry is given in in Ardia and Boudt (2018).

Some internal functions where adapted from Wolf's R code.

Application of the false discovery rate approach applied to the mutual fund industry has been presented in Barraz, Scaillet and Wermers (2010).

Author(s)

David Ardia and Kris Boudt.

References

Ardia, D., Boudt, K. (2015). Testing equality of modified Sharpe ratios. Finance Research Letters 13, 97–104.

Ardia, D., Boudt, K. (2018). The peer performance ratios of hedge funds. Journal of Banking and Finance 87, 351–368.

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

Favre, L., Galeano, J.A. (2002). Mean-modified Value-at-Risk Optimization with Hedge Funds. Journal of Alternative Investments 5(2), 21–25.

Gregoriou, G. N., Gueyie, J.-P. (2003). Risk-adjusted performance of funds of hedge funds using a modified Sharpe ratio. Journal of Wealth Management 6(3), 77–83.

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

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

See Also

msharpe, msharpeTesting, sharpeScreening and alphaScreening.

Examples

## Load the data (randomized data of monthly hedge fund returns)
data("hfdata")
rets = hfdata[,1:5]

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

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

Testing the difference of modified Sharpe ratios

Description

Function which performs the testing of the difference of modified Sharpe ratios.

Usage

msharpeTesting(x, y, level = 0.9, na.neg = TRUE, control = list())

Arguments

x

Vector (of length TT) of returns for the first fund. NA values are allowed.

y

Vector (of length TT) of returns for the second fund. NA values are allowed.

level

Modified Value-at-Risk level. Default: level = 0.90.

na.neg

A logical value indicating whether NA values should be returned if a negative modified Value-at-Risk is obtained. Default na.neg = TRUE.

control

Control parameters (see *Details*).

Details

The modified Sharpe ratio (Favre and Galeano 2002) is one industry standard for measuring the absolute risk adjusted performance of hedge funds. This function performs the testing of modified Sharpe ratio difference for two funds using a similar approach than Ledoit and Wolf (2002). See also Gregoriou and Gueyie (2003).

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

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.

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

  • 'nBoot' Number of bootstrap 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.

Value

A list with the following components:

n: Number of non-NA concordant observations.

msharpe: Vector (of length 2) of unconditional modified Sharpe ratios.

dmsharpe: Modified Sharpe ratios difference.

tstat: t-stat of modified Sharpe ratios differences.

pval: pvalues of test of modified Sharpe ratios differences.

Note

Further details on the methodology with an application to the hedge fund industry is given in Ardia and Boudt (2018).

Some internal functions where adapted from Michael Wolf MATLAB code.

Author(s)

David Ardia and Kris Boudt.

References

Ardia, D., Boudt, K. (2015). Testing equality of modified Sharpe ratios. Finance Research Letters 13, pp.97–104. doi: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. doi: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.

Favre, L., Galeano, J.A. (2002). Mean-modified Value-at-Risk Optimization with Hedge Funds. Journal of Alternative Investments 5(2), pp.21–25.

Gregoriou, G. N., Gueyie, J.-P. (2003). Risk-adjusted performance of funds of hedge funds using a modified Sharpe ratio. Journal of Wealth Management 6(3), pp.77–83.

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

msharpe, msharpeScreening and sharpeTesting.

Examples

## Load the data (randomized data of monthly hedge fund returns)
data("hfdata")
x = hfdata[,1]
y = hfdata[,2]

## Run modified Sharpe testing (asymptotic)
ctr = list(type = 1)
out = msharpeTesting(x, y, level = 0.95, control = ctr)
print(out)

## Run modified Sharpe testing (asymptotic hac)
ctr = list(type = 1, hac = TRUE)
out = msharpeTesting(x, y, level = 0.95, control = ctr)
print(out)

## Run modified Sharpe testing (iid bootstrap)
set.seed(1234)
ctr = list(type = 2, nBoot = 250)
out = msharpeTesting(x, y, level = 0.95, control = ctr)
print(out)

## Run modified Sharpe testing (circular bootstrap)
set.seed(1234)
ctr = list(type = 2, nBoot = 250, bBoot = 5)
out = msharpeTesting(x, y, level = 0.95, control = ctr)
print(out)

PeerPerformance: Luck-corrected peer performance analysis in R

Description

PeerPerformance is an R package for the peer-performance evaluation of financial investments with luck-correction, useful in the financial industry. In particular, it implements the peer performance ratios of Ardia and Boudt (2018) which measure the percentage of peers a focal (hedge) fund outperforms and underperforms, after correction for luck. It is useful for fund or portfolio managers to benchmark their investments or screen a universe of new funds. In addition, the package implements the testing framework for the Sharpe and modified Sharpe ratios, described in Ledoit and Wolf (2008) and Ardia and Boudt (2015). See also Ardia et al. (2022,2023) for applications in sustainable finance.

Functions

Update

The latest version of the package is available at https://github.com/ArdiaD/PeerPerformance

Note

By using PeerPerformance you agree to the following rules: (1) You must cite Ardia and Boudt (2018) in working papers and published papers that use PeerPerformance (use citation("PeerPerformance")), (2) you must place the URL https://CRAN.R-project.org/package=PeerPerformance in a footnote to help others find PeerPerformance, and (3) you assume all risk for the use of PeerPerformance.

Full description of the methodologies implemented in the various functions is available in Ledoit and Wolf (2008) and Ardia and Boudt (2015, 2018).

Author(s)

David Ardia and Kris Boudt.

References

Ardia, D., Boudt, K. (2015). Testing equality of modified Sharpe ratios. Finance Research Letters 13, 97–104.

Ardia, D., Boudt, K. (2018). The peer performance ratios of hedge Funds. Journal of Banking and Finance 87, 351–368.

Ardia, D., Bluteau, K., Tran, D. (2022). How easy is it for investment managers to deploy their talent in green and brown stocks? Finance Research Letters 48, 102992.

Ardia, D., Bluteau, K., Lortie-Cloutier, G., Tran, D. (2023). Factor exposure heterogeneity in green and brown stocks. Finance Research Letters 55, Part A, 103900.

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

Favre, L., Galeano, J.A. (2002). Mean-modified Value-at-Risk Optimization with Hedge Funds. Journal of Alternative Investments 5(2), 21–25.

Gregoriou, G. N., Gueyie, J.-P. (2003). Risk-adjusted performance of funds of hedge funds using a modified Sharpe ratio. Journal of Wealth Management 6(3), 77–83.

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

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

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


Compute Sharpe ratio

Description

Function which computes the Sharpe ratio.

Usage

sharpe(X, na.rm = TRUE)

Arguments

X

Vector (of length TT) or matrix (of size T×NT \times N) of returns for NN funds. NA values are allowed.

na.rm

A logical value indicating whether NA values should be stripped before the computation. Default na.rm = TRUE

Details

The Sharpe ratio (Sharpe 1992) is one industry standard for measuring the absolute risk adjusted performance of hedge funds.

Value

A scalar or a vector (of size NN) with the Sharpe ratios.

Author(s)

David Ardia and Kris Boudt.

References

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

Ardia, D., Boudt, K. (2016). The Peer Ratios Performance of Hedge Funds. Working paper. doi:10.2139/ssrn.2000901

Sharpe, W.F. (1994). The Sharpe ratio. Journal of Portfolio Management 21(1), pp.49–58. doi:10.3905/jpm.1994.409501

See Also

sharpeTesting, sharpeScreening and msharpe.

Examples

## Load the data
data('hfdata')

## Compute the Sharpe ratio
out = sharpe(hfdata)
print(out)

out = sharpe(hfdata, na.rm = FALSE)
print(out)

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×N)(T \times N) of TT returns for the NN funds. NA values are allowed.

control

Control parameters (see *Details*).

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 NN funds, we perform N(N1)/2N(N-1)/2 tests. The algorithm has been parallelized and the computational burden can be split 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 underperforming 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 bootstrap 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.

Value

A list with the following components:

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

npeer: Vector (of length NN) of number of available peers.

sharpe: Vector (of length NN) of unconditional Sharpe ratios.

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

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

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

lambda: vector (of length NN) of lambda values.

pizero: vector (of length NN) of probability of equal performance.

pipos: vector (of length NN) of probability of outperformance performance.

pineg: Vector (of length NN) of probability of underperformance performance.

Note

Further details on the methodology with an application to the hedge fund industry is given in in Ardia and Boudt (2018).

Some internal functions where adapted from Michael Wolf MATLAB code.

Application of the false discovery rate approach applied to the mutual fund industry has been presented in Barraz, Scaillet and Wermers (2010).

Author(s)

David Ardia and Kris Boudt.

References

Ardia, D., Boudt, K. (2015). Testing equality of modified Sharpe ratios. Finance Research Letters 13, 97–104.

Ardia, D., Boudt, K. (2018). The peer performance ratios of hedge funds. Journal of Banking and Finance 87, 351–368.

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

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

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

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

See Also

sharpe, sharpeTesting, msharpeScreening and alphaScreening.

Examples

## Load the data (randomized data of monthly hedge fund returns)
data("hfdata")
rets = hfdata[,1:5]

## 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))

Testing the difference of Sharpe ratios

Description

Function which performs the testing of the difference of Sharpe ratios.

Usage

sharpeTesting(x, y, control = list())

Arguments

x

Vector (of length TT) of returns for the first fund. NA values are allowed.

y

Vector (of length TT) returns for the second fund. NA values are allowed.

control

Control parameters (see *Details*).

Details

The Sharpe ratio (Sharpe 1992) is one industry standard for measuring the absolute risk adjusted performance of hedge funds. This function performs the testing of Sharpe ratio difference for two funds using the approach by Ledoit and Wolf (2002).

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

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.

Value

A list with the following components:

n: Number of non-NA concordant observations.

sharpe: Vector (of length 2) of unconditional Sharpe ratios.

dsharpe: Sharpe ratios difference.

tstat: t-stat of Sharpe ratios differences.

pval: pvalues of test of Sharpe ratios differences.

Note

Further details on the methodology with an application to the hedge fund industry is given in in Ardia and Boudt (2018).

Some internal functions where adapted from Michael Wolf MATLAB code.

Author(s)

David Ardia and Kris Boudt.

References

Ardia, D., Boudt, K. (2015). Testing equality of modified Sharpe ratios. Finance Research Letters 13, 97–104.

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

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

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

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

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

See Also

sharpe, sharpeScreening and msharpeTesting.

Examples

## Load the data (randomized data of monthly hedge fund returns)
data("hfdata")
x = hfdata[,1]
y = hfdata[,2]

## Run Sharpe testing (asymptotic)
ctr = list(type = 1)
out = sharpeTesting(x, y, control = ctr)
print(out)

## Run Sharpe testing (asymptotic hac)
ctr = list(type = 1, hac = TRUE)
out = sharpeTesting(x, y, control = ctr)
print(out)

## Run Sharpe testing (iid bootstrap)
set.seed(1234)
ctr = list(type = 2, nBoot = 100)
out = sharpeTesting(x, y, control = ctr)
print(out)

## Run Sharpe testing (circular bootstrap)
set.seed(1234)
ctr = list(type = 2, nBoot = 100, bBoot = 5)
out = sharpeTesting(x, y, control = ctr)
print(out)