NEWS
PeerPerformance 2.4.0
- Robustness (pre-submission audit): PSOCK clusters are now closed with
on.exit() so workers are not leaked on error; processControl requires the
count-like controls (nBoot, bBoot, nCore, minObs, minObsPi) to be
whole numbers and rejects a bootstrap block length exceeding the sample size;
within-group screening and cross-group screening now stop with a clear
message on degenerate inputs (a single fund, an empty peer group)
alphaScreening/alphaTesting now enforce minObs on the factor
complete-case sample (factor NAs were previously ignored), and
alphaTesting(screen_beta = TRUE, hac = TRUE) now returns the alpha
component as a coefficient-by-fund matrix, consistent with the non-HAC path
(the print method reports the alpha row)
confint is now tested for all three ratios (pipos/pizero/pineg)
- Added a
confint method for SCREENING objects: nonparametric peer
(pairwise) bootstrap confidence intervals for the peer performance ratios
(pipos/pizero/pineg)
- Added a reproducible Monte-Carlo validation script
(
system.file("scripts", "validation.R", package = "PeerPerformance")):
checks the near-unbiasedness of pizero under the equal-performance null and
the size/power of the modified Sharpe equality test
- Added a package vignette ("Luck-Corrected Peer Performance Analysis with
PeerPerformance"), a
pkgdown configuration, and a package CITATION entry
- Robustness:
processControl now validates that scalar control values are
single finite numbers / logicals; computePi checks the lambda length;
targetPeerPerformance rejects non-whole funds; rollScreening validates
by and only flags screen_beta for the alpha screen with factors; output
fund names are preserved in as.data.frame and targetPeerPerformance
- Fixed a bug in
sharpeScreening/msharpeScreening on unbalanced panels: the
focal fund's returns were indexed with the first peer's missing-value mask
(X[idx[, k], 1]) instead of the current pair's (X[idx[, k], k]), which
could inject NAs and yield NaN p-values for some pairs (reported by
GitHub user NenoJo)
- Added
targetPeerPerformance() (contributed by Murilo Andre Peres Pereira): screens a
selected subset of funds against the whole universe; a convenience wrapper
over the cross-group screening (*Screening(X[, funds], Y = X))
- Added a
summary method for SCREENING objects (contributed by Murilo Andre Peres Pereira):
ranked table, distribution of the measure, win/loss counts and top funds
- Added
rollScreening(): rolling-window screening returning the time series of
cross-sectionally averaged ratios (per factor when screen_beta = TRUE), with
a plot method -- the dynamic design of Ardia et al. (2022, 2023)
plot on a cross-group screening omits the (within-group) percentile-rank
diagonal; a single focal fund is shown as one stacked bar
screen_beta can now also be set through control (e.g.
control = list(screen_beta = TRUE)); the function argument still works and
takes precedence
- Cross-group screening:
alphaScreening, sharpeScreening and
msharpeScreening gain a Y argument to screen each fund in X against a
second peer group Y (a single focal fund versus a group is X a vector);
columns of Y identical to the focal fund are excluded automatically
- Added
as.data.frame method for SCREENING objects (tidy, one row per fund,
or per fund/coefficient with screen_beta = TRUE)
screen_beta = TRUE output now labels the coefficient rows (alpha + factor
names), and exposureHeterogeneity() aggregates them into the factor
exposure heterogeneity measure of Ardia et al. (2023), with a plot method
- Added
print methods for the TESTING and SCREENING objects, and a
plot method for the SCREENING object that reproduces the peer performance
screening plot of Ardia and Boudt (2018)
gammaPos and gammaNeg (default 0.4 and 0.6) are now exposed in the control
list of the screening functions, controlling the one-sided thresholds used for
the out- and underperformance counts
- Fixed the default number of bootstrap replications (
nBoot = 499) when an empty
control list is supplied
- Fixed the VAR(1) data-generating process in the optimal block-length routines
(
sharpeBlockSize, msharpeBlockSize): the lagged cross term in the second
equation now uses the correct series
sharpe() now counts observations with is.finite(), consistent with the
other moment computations, when NA/NaN are present
- Moved run-time dependencies from
Depends to Imports
- Documentation fixes (Sharpe 1994 reference,
alphaTesting return values)
PeerPerformance 2.3.2 (2025-08-18)
- Several fixes in documentation and good practices
PeerPerformance 2.3.1 (2024-11-13)
PeerPerformance 2.3.0
- Doc fixed
- alphaScreening now also outputs the betas
- Bug in lambda resampling fixed
PeerPerformance 2.2.5 (2021-05-16)
PeerPerformance 2.2.3 (2021-04-21)
PeerPerformance 2.2.1 (2018-08-30)
- Switch to parallel package
- References updated
PeerPerformance 2.1.4
PeerPerformance 2.1.3
PeerPerformance 2.1.2 (2017-02-04)
PeerPerformance 2.1.1 (2017-01-29)
- Documentation fixes
- First CRAN release
PeerPerformance 2.1.0
- New PeerPerformance documentation
- Compiler imported directly within function
PeerPerformance 2.0.11
- Examples added
- Block length not exported anymore
PeerPerformance 2.0.10
- Roxygen documentation
- testthat added
- Format of code
PeerPerformance 2.0.9
- Update CITATION and DESCRIPTION
PeerPerformance 2.0.8
- Small improvements with compiler
- Citations updated
PeerPerformance 2.0.7
- Various improvements
- Small fix in documentation
PeerPerformance 2.0.5
- Fix in documentation for modified Sharpe testing
- Small fix in pvalue computation by bootstrap (symmetric)
PeerPerformance 2.0.4
- Bug fix for alpha screening when NA are in the dataset
- Risk-free rate removed
- tstat used for attribution
PeerPerformance 2.0.3
- Major functions contain risk-free rates (zero by default)
- Documentation updated
- Adjustment factor robustified
PeerPerformance 2.0.2
- alphaScreening fixed
- alphaScreening now encompasses hac estimation with sandwich and lmtest
- citation file updated
PeerPerformance 2.0.1
- New package's name
- New package's number
- New package's structure
PeerPerformance 1-00.15
- pi+ fixed
- Default settings for lambda = NULL
PeerPerformance 1-00.14
- Fix of errors in examples
PeerPerformance 1-00.13
- Control parameters for lambda data driven (NULL)
- Documentation updated
- Function for optimal lambda corrected and enhanced
- Function pizero and pi corrected
PeerPerformance 1-00.01
- First release
- Package includes (parallel) alpha and sharpe screening algorithms