numeraire.adjust_pvalues#

numeraire.adjust_pvalues(p_values: NDArray[float64], *, method: str = 'bhy', alpha: float = 0.05) MultipleTestResult[source]#

Multiple-testing adjustment for a family of tests (Harvey-Liu-Zhu 2016 §4.4 toolbox).

  • bonferroni (single-step, FWER): reject p_i <= alpha / M.

  • holm (step-down, FWER): order ascending, reject while p_(k) <= alpha / (M + 1 - k).

  • bhy (Benjamini-Yekutieli step-up, FDR under arbitrary dependence): k* = max{k : p_(k) <= k * alpha / (M * c(M))} with c(M) = sum_{j<=M} 1/j; reject the k* smallest.

Adjusted p-values follow the standard conventions (min-with-1, running max/min so rejection by adjusted_p <= alpha matches the sequential rule). HLZ’s headline: with the factor zoo’s family size, a new factor needs roughly t > 3.0 (BHY 1%) rather than 1.96.