cs_winsorize¶
Defined in fynance.features.cross_section
- cs_winsorize(X, alpha=0.05)[source]
Per-bar cross-sectional winsorization, NaN-aware.
Clips each bar’s valid entries to their own
[alpha, 1 - alpha]empirical quantiles (linear interpolation, seenumpy.nanquantile).- Parameters:
- Xarray_like
Panel, shape
(T, N).- alphafloat, optional
Tail probability clipped on each side, must be in
[0, 0.5). Default 0.05 (5% / 95%).
- Returns:
- np.ndarray
(T, N)winsorized panel,NaNwhereXisNaN.
See also
cs_rank,cs_zscore
Examples
>>> import numpy as np >>> X = np.array([[1., 2., 3., 4., 100.]]) >>> cs_winsorize(X, alpha=0.2) array([[ 1.8, 2. , 3. , 4. , 23.2]])
NaN-aware: the missing asset is excluded from the bar’s quantiles and stays NaN:
>>> cs_winsorize(np.array([[1., np.nan, 3., 100.]]), alpha=0.25) array([[ 2. , nan, 3. , 51.5]])