rollScreening: Rolling-window peer performance screening

View source: R/rollScreening.R

rollScreeningR Documentation

Rolling-window peer performance screening

Description

Runs a peer performance screening on a rolling time window and returns the time series of cross-sectionally averaged peer performance ratios. This is the design underlying the dynamic analyses of Ardia et al. (2022, 2023): on each window the screening is computed and the ratios are averaged across funds (per coefficient when screen_beta = TRUE), yielding a series of (factor exposure) heterogeneity measures.

Usage

rollScreening(
  X,
  factors = NULL,
  Y = NULL,
  screen = c("alpha", "sharpe", "msharpe"),
  width = 36L,
  by = 1L,
  level = 0.9,
  na.neg = TRUE,
  control = list(),
  dates = NULL
)

Arguments

X

Matrix (T \times N) of T returns for the N funds.

factors

Matrix (T \times K) of factor returns (for screen = "alpha"). Default: NULL.

Y

Optional matrix (T \times M) of returns for a peer group (cross-group screening, see alphaScreening). Default: NULL.

screen

Performance measure to screen on: "alpha" (default), "sharpe", or "msharpe".

width

Window length (number of observations). Default: 36.

by

Step (in observations) between successive windows. Default: 1.

level

Modified Value-at-Risk level (for screen = "msharpe"). Default: 0.9.

na.neg

A logical value passed to msharpeScreening (for screen = "msharpe") indicating whether a negative modified Value-at-Risk yields NA. Default: TRUE.

control

Control parameters passed to the screening function (see alphaScreening); set control = list(screen_beta = TRUE) to obtain per-factor heterogeneity series. With nCore > 1 each window spins up its own PSOCK cluster, which is wasteful for many small windows; the default nCore = 1 runs serially without any cluster.

dates

Optional vector of length T (e.g. Date) used to label the windows by their end date. Default: NULL.

Value

A data.frame of class rollScreening with one row per window (or per window/coefficient when screen_beta = TRUE), with columns window, index (end-of-window row), optionally date, coefficient, the averaged pizero/pipos/ pineg, and heterogeneity (1-\bar\pi^0).

Author(s)

David Ardia and Kris Boudt.

References

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.

Ardia, D., Bluteau, K., Lortie-Cloutier, G., Tran, D. (2023). Factor exposure heterogeneity in green and brown stocks. Finance Research Letters 55, Part A, 103900.

See Also

alphaScreening, exposureHeterogeneity.

Examples


data("hfdata")
set.seed(1234)
## a subset keeps the example quick; drop the column index to screen the
## whole universe
roll <- rollScreening(hfdata[, 1:20], screen = "alpha", width = 36, by = 6,
                      control = list(nCore = 1))
plot(roll)


PeerPerformance documentation built on Aug. 3, 2026, 1:08 a.m.