Factor Evaluation

Factor evaluation treats the factor DataFrame as cross-sectional scores.

Higher scores are better.

IC and ICIR

For each date, bagelquant-bt computes the cross-sectional correlation between factor scores at date t and asset returns from t to t+1.

The default IC method is Spearman rank correlation:

BacktestConfig(initial_capital=1_000_000, ic_method="spearman")

icir is:

mean(IC) / standard_deviation(IC)

Quantile Returns

Each day, assets are sorted by factor score and split into quantiles.

Each quantile return is the equal-weight average forward return of assets in that bucket.

The top-minus-bottom spread is:

highest_quantile_return - lowest_quantile_return

TOP N Backtest

The TOP N backtest converts factor scores into long-only equal weights:

top N assets each day -> 1 / N weight each

The resulting weight frame is passed through the same backtest engine as a normal portfolio-weight DataFrame, including transaction costs.