qis.estimate_ic_ir¶
- qis.estimate_ic_ir(result, method='spearman', return_col='r_norm_univ', periods_per_year=None, min_obs_per_date=5)[source]¶
IC information ratio per horizon — the time-series counterpart to the pooled IC in
pooled_universe.For each horizon the per-date cross-sectional IC series is summarised:
IC_IR = mean(IC) / std(IC) (per IC period) IC_IR_an = IC_IR * sqrt(AN_h) (annualised) t_stat = IC_IR * sqrt(n_dates) (significance of mean IC) hit_rate = mean(IC > 0)
IC_IRmeasures the stability of the IC over time: it rewards an IC that is consistently the right sign, not merely large on average. It does not adjust for breadth; the number of names enters only through the sampling noise of each per-date IC. It is the honest stability number the pooledt_statis not — the pooled regression inestimate_signal_diagnosticstreats every (asset, date) pair as independent and so overstates significance when the cross-section is correlated within a date; this collapses each date to one observation.AN_his the number of IC periods per year. A string horizon usesqis.get_annualization_factor(label)(1 for ‘YE’). An integer horizon h samples every h-th native period, soAN_h = AN / hwith AN the qis annualisation factor of the finest native frequency in the pairs (12 for ‘ME’, 4 for ‘QE’, 252 for ‘B’), orperiods_per_yearwhen given.- Parameters:
result (SignalDiagnosticsResult) –
SignalDiagnosticsResultfromestimate_signal_diagnostics.method (str) – ‘spearman’ (default) or ‘pearson’ for the per-date IC.
return_col (str) – ‘r_norm_univ’ (universe cross-section, default) or ‘r_norm_group’ (within-group — pass
group_datatoestimate_signal_diagnosticsto populate it).periods_per_year (float | None) – Periods per year of the native grid (the h = 1 grid), divided by h for an integer horizon h; not used for string horizons. Inferred from the pairs’ native frequencies when None.
min_obs_per_date (int) – Minimum cross-section per date.
- Returns:
DataFrame indexed by horizon label, columns
_IC_IR_COLS.- Raises:
ValueError – if
methodis neither ‘spearman’ nor ‘pearson’.- Return type: