Function which performs the screening of a universe of returns, and computes the modified Sharpe outperformance ratio.
msharpeScreening(X, level = 0.9, na.neg = TRUE, control = list())
Matrix \((T \times N)\) of \(T\) returns for the \(N\)
funds. NA
values are allowed.
Modified Value-at-Risk level. Default: level = 0.90
.
A logical value indicating whether NA
values should be
returned if a negative modified Value-at-Risk is obtained. Default
na.neg = TRUE
.
Control parameters (see *Details*).
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.
msharpe
: Vector (of length \(N\)) of unconditional modified Sharpe
ratios.
dmsharpe
: Matrix (of size \(N \times N\)) of modified Sharpe
ratios differences.
tstat
: Matrix (of size \(N \times N\)) of t-statistics.
pval
: Matrix (of size \(N \times N\)) of p-values of test for
modified 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.
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
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.
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.
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.
msharpe
, msharpeTesting
,
sharpeScreening
and alphaScreening
.
# NOT RUN {
## Load the data (randomized data of monthly hedge fund returns)
data("hfdata")
rets = hfdata[,1:10]
## 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))
# }
Run the code above in your browser using DataLab