PeerPerformance is an R package for the peer-performance evaluation of financial investments with
luck-correction. In particular, it implements the peer performance ratios
of Ardia and Boudt (2018) which measure the percentage of peers a focal 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, it 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.
The stable version is on CRAN:
install.packages("PeerPerformance")
The development version can be installed from GitHub:
# install.packages("remotes")
# remotes::install_github("ArdiaD/PeerPerformance")
install.packages("PeerPerformance", repos = c('https://ardiad.r-universe.dev', 'https://cloud.r-project.org'))
alphaScreening() (risk-adjusted alphas, optionally with factor exposures
via screen_beta = TRUE), sharpeScreening() and msharpeScreening()
(Sharpe / modified Sharpe). Each returns the out-/equal-/under-performance
ratios (pi+, pi0, pi-).Y argument screens each fund (or a single
focal fund) against a separate peer group; targetPeerPerformance() is a
convenience wrapper for screening a chosen subset against the whole universe.alphaTesting(), sharpeTesting(), msharpeTesting().print(), summary(), plot() (the
Ardia and Boudt 2018 screening plot), confint() (peer-bootstrap intervals
for the ratios), and as.data.frame() (tidy output).rollScreening() (rolling-window ratios)
and exposureHeterogeneity() (factor exposure heterogeneity of Ardia et al.
2023).vignette("PeerPerformance")) and a reproducible Monte-Carlo
validation script
(system.file("scripts", "validation.R", package = "PeerPerformance")).library("PeerPerformance")
data("hfdata")
## screen a universe of funds, luck-corrected
sc <- alphaScreening(hfdata[, 1:30], control = list(nCore = 1))
summary(sc) # ranked table with win/loss counts
plot(sc) # peer performance screening plot
confint(sc, parm = "pipos") # peer-bootstrap intervals
On large universes most of the run time goes into the data-driven choice of
the threshold lambda. Two options make this much faster: keep the choice but
compute it in vectorised form (control = list(fastAdjust = TRUE)), or fix the
threshold outright (control = list(lambda = 0.5)). Pairwise tests can also be
spread over cores with control = list(nCore = k).
If you use PeerPerformance in your work, please:
PeerPerformance is released under the GPL (>= 2) and, as stated in that
license, comes with no warranty of any kind.
Ardia, D., Boudt, K. (2018).
The peer performance ratios of hedge funds.
Journal of Banking and Finance, 87, 351-368.
https://doi.org/10.1016/j.jbankfin.2017.10.014
https://doi.org/10.2139/ssrn.2000901
Ardia, D., Boudt, K. (2015).
Testing equality of modified Sharpe ratios.
Finance Research Letters, 13, 97-104.
https://doi.org/10.1016/j.frl.2015.02.008
https://doi.org/10.2139/ssrn.2516591
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.
https://doi.org/10.1016/j.frl.2022.102992
https://doi.org/10.2139/ssrn.4009286
Ardia, D., Bluteau, K., Lortie-Cloutier, G., Tran, D. (2023).
Factor exposure heterogeneity in green and brown stocks.
Finance Research Letters, 55, Part A, pp.103900.
https://doi.org/10.1016/j.frl.2023.103900
https://doi.org/10.2139/ssrn.4362696
Ledoit, O., Wolf, M. (2008).
Robust performance hypothesis testing with the Sharpe ratio.
Journal of Empirical Finance, 15(5), 850-859.