Quick Start
bagelquant-bt evaluates research outputs. It does not retrieve data and it
does not build factor signals. Inputs are numeric pandas DataFrames.
Install
uv add bagelquant-bt
Weight Backtest
Use kind="weights" when the signal frame already contains portfolio weights.
Rows are dates, columns are assets, and values are target weights.
from bagelquant_bt import BacktestConfig, run_backtest
result = run_backtest(
weights,
prices,
kind="weights",
config=BacktestConfig(initial_capital=1_000_000),
)
result.summary
result.net_cumulative_returns
Factor Evaluation
Use kind="factor" when the first frame contains cross-sectional factor scores.
The package computes forward returns, information coefficients, quantile
returns, and a top-N backtest.
from bagelquant_bt import BacktestConfig, run_backtest
result = run_backtest(
factor_scores,
prices,
kind="factor",
config=BacktestConfig(
initial_capital=1_000_000,
quantiles=5,
top_n=50,
),
)
result.ic_mean
result.top_minus_bottom
Transaction Costs
from bagelquant_bt import BacktestConfig, TransactionCostConfig
config = BacktestConfig(
initial_capital=1_000_000,
transaction_cost=TransactionCostConfig(rate=0.00015, min_fee=5.0),
)
Minimum fees require initial_capital so the engine can translate weight
turnover into traded notional.