run_backtest
run_backtest(signal, prices, *, kind, config=None)
Dispatches to the correct evaluation path.
kind="weights"callsrun_weight_backtestkind="factor"callsrun_factor_evaluation
config is required because transaction-cost minimum fees require
initial_capital.
run_weight_backtest
run_weight_backtest(weights, prices, *, config)
Evaluates a long-form Polars DataFrame as portfolio weights.
Returns BacktestResult.
Important fields:
weightsasset_returnsgross_returnsnet_returnsgross_cumulative_returnsnet_cumulative_returnsgross_valuenet_valueturnovertransaction_costssummaryperformancecoverage
run_factor_evaluation
run_factor_evaluation(factor, prices, *, config)
Evaluates a long-form Polars DataFrame as factor scores.
Returns FactorEvaluationResult.
Important fields:
factorforward_returnsicic_summaryic_meanic_stdicirquantile_returnsquantile_cumulative_returnsspread_returnstop_n_weightstop_n_backtestspread_weightsspread_backtestlag_analysislag_returnsic_decaycoverage
summary_report
summary_report(
result,
*,
output_path=None,
missing_price_keys_output_path=None,
title=None,
annualization=252,
)
Builds a static HTML report for BacktestResult or FactorEvaluationResult.
The report includes compact summary tables and Plotly figures. If output_path
is provided, the HTML is written to disk and also returned. Missing price keys
are written to a separate CSV instead of being embedded in the HTML report. By
default, the CSV is written next to the HTML as
<report_stem>_missing_price_keys.csv; pass missing_price_keys_output_path to
choose a different CSV path or to write the CSV when no HTML output_path is
provided.
Factor reports are grouped into IC and ICIR, TOP N, spread performance, and quantile performance sections. Each section shows compact tables before plots. Both factor and backtest reports show a coverage chart directly below their top summary tables.
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_capital must be positive.
ic_method is accepted for compatibility. Factor evaluation now outputs both
Spearman and Pearson IC.
DataFrame Boundary
The first argument must be a numeric polars.DataFrame.
Weights require time, asset_id, and weight columns. Factors require
time, asset_id, and factor columns. Prices require time, asset_id,
and price columns.