quantlab.utils.cross_section.cross_sectional_zscore#
- quantlab.utils.cross_section.cross_sectional_zscore(values)[source]#
Z-score
[..., T, S]values over the last axis, NaN on a degenerate bar.A bar is degenerate when it holds fewer than two finite values or all its finite values are equal (zero standard deviation). Non-finite inputs stay NaN. No
RuntimeWarningis raised on empty or degenerate bars.Examples
>>> cross_sectional_zscore(np.array([[1.0, 2.0, 3.0], [5.0, 5.0, np.nan]])) array([[-1., 0., 1.], [nan, nan, nan]])