Nothing
control$fastAdjust (default FALSE): the truncated-normal
bias correction of pi0 inverts its monotone map for the whole vector at
once (vectorised bisection) instead of one uniroot() call per value. This
is the dominant cost of a screening with a data-driven lambda -- a
100-fund alphaScreening() drops from about 19s to about 4.5s (4.2x). The
bisection locates the root to about 1e-12; because uniroot stops at its own
tolerance (about 1.2e-4), the two paths typically differ by a few 1e-5, the
fast path being the more accurate. The original code path remains the default
so that published results reproduce exactly. Bootstrap indices are now built
only for the bootstrap test (type = 2), so the asymptotic path no longer
depends on bBootbBoot > 1); pairs shorter than the block length are left
untested; balanced panels are unaffected. All randomness stays in the master,
so seeded results do not depend on nCorenCore = 1 (the default) now runs serially without creating a PSOCK
cluster, removing the per-call cluster overhead (noticeable in
rollScreening's window loop); results are identical to the cluster path>=, consistent
with the modified Sharpe test (ties have probability zero for continuous
returns)alphaScreening clarified; the
gammaPos/gammaNeg counting rules are stated explicitly; misleading
"bootstrap and HAC" example headers fixed (hac is ignored when
type = 2); summary documents that win/loss counts are within-group onlyon.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)confint method for SCREENING objects: nonparametric peer
(pairwise) bootstrap confidence intervals for the peer performance ratios
(pipos/pizero/pineg)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 testpkgdown configuration, and a package CITATION entryprocessControl 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 targetPeerPerformancesharpeScreening/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)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))summary method for SCREENING objects (contributed by Murilo Andre Peres Pereira):
ranked table, distribution of the measure, win/loss counts and top fundsrollScreening(): 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 barscreen_beta can now also be set through control (e.g.
control = list(screen_beta = TRUE)); the function argument still works and
takes precedencealphaScreening, 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 automaticallyas.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 methodprint 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 countsnBoot = 499) when an empty
control list is suppliedsharpeBlockSize, msharpeBlockSize): the lagged cross term in the second
equation now uses the correct seriessharpe() now counts observations with is.finite(), consistent with the
other moment computations, when NA/NaN are presentDepends to ImportsalphaTesting return values)Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.