The stable public API is exported from bagelquant_bt.
Entry Points
from bagelquant_bt import run_backtest, run_factor_evaluation, run_weight_backtest
run_backtest(signal, prices, *, kind, config=None): dispatch bykind.run_weight_backtest(weights, prices, *, config): evaluate portfolio weights.run_factor_evaluation(factor, prices, *, config): evaluate factor scores.summary_report(result, *, output_path=None, missing_price_keys_output_path=None, title=None, annualization=252): build a static HTML report forBacktestResultorFactorEvaluationResult. Missing price keys are written to a separate CSV. Withoutput_path, the default CSV path is<report_stem>_missing_price_keys.csv; passmissing_price_keys_output_pathto override it or write only the CSV.
Configuration
from bagelquant_bt import BacktestConfig, TransactionCostConfig
config = BacktestConfig(
initial_capital=1_000_000,
transaction_cost=TransactionCostConfig(rate=0.00015, min_fee=5.0),
annualization=252,
ic_method="spearman",
quantiles=5,
top_n=50,
)
initial_capitalmust be positive.ic_methodis accepted for compatibility. Factor evaluation outputs both Spearman and Pearson IC.quantilescontrols factor bucket count.top_ncontrols the top-N factor portfolio.
Results
BacktestResult exposes:
weightsasset_returnsgross_returnsnet_returnsgross_cumulative_returnsnet_cumulative_returnsgross_valuenet_valueturnovertransaction_costssummaryperformancecoverage: per-price-date rawweight_asset_count,universe_asset_count, andcoverage_ratio.missing_price_keys
FactorEvaluationResult exposes:
factorforward_returnsicic_summaryic_meanic_stdicirquantile_returnsquantile_cumulative_returnsspread_returnstop_n_weightstop_n_backtestspread_weightsspread_backtestlag_analysislag_returnsic_decaycoverage: per-price-date rawfactor_signal_asset_count,universe_asset_count, andcoverage_ratio.missing_price_keys
Visualization
plot_coverage(result) returns a Plotly time series showing raw factor-signal
or weight asset coverage as a shaded area and the total price-universe asset count.
Exceptions
BagelQuantBacktestError: base package error.BacktestConfigError: invalid configuration.InputValidationError: invalid or incompatible input frames.