Cohort residual statistics (cross-section)
One-teo cross-section of cross-sectional residual statistics by cohort, from ds_erm3_cohorts. A cohort is the market (level 1) or a GICS sector (level 2).
Residuals are not zero-mean. ERM3 regressions are fitted without an intercept, deliberately, so each stock's residual retains its alpha. The consequence is that the cross-sectional mean residual is not zero. If you are building a relative-ranking signal, subtract residual_mean at the level your residual is defined against — sector residuals demean within sector cohorts. Any drift figure must be quoted with its window: the sign is not stable across the sample.
residual_sd is the cross-sectional dispersion within a cohort — a measure of how much there is to select from. It is a conditioning and allocation input, not an alpha source; it multiplies skill and cannot create it. Read it with mean_pairwise_corr, which separates idiosyncratic dispersion from common movement.
Thin cohorts produce meaningless statistics — filter with min_names, and use n_effective rather than n_names for anything breadth-related.
Public scope is SPY plus the 11 GICS sector SPDRs. The subsector cohort slate is proprietary and is not addressable through this API.
Request
- Base URL: https://riskmodels.app/api
- URL: https://riskmodels.app/api/cohorts
- Auth: HTTP bearer
Query parameters
Comma-separated cohort tickers (SPY, XLE, XLB, XLI, XLY, XLP, XLV, XLF, XLK, XLC, XLU, XLRE). Default: all public cohorts.
Comma-separated variable names. Default: residual_mean, residual_sd, mean_pairwise_corr, n_names, n_effective.
Observation date (default latest teo in the store).
Alias for teo.
Drop cohorts with fewer than this many members — their residual statistics are noise. Default 0.
Response
Cohort cross-section
Example response
{
"data_source": "zarr"
}Changes
No recorded changes to this operation across all 1 revision of this API.