The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
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)These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.