Skip to content

Optimization

ParameterSweep

Parallel grid search using multiprocessing.

from replaybt.optimize.sweep import ParameterSweep

sweep = ParameterSweep(
    strategy_class=MyStrategy,
    data=CSVProvider("ETH_1m.csv"),
    base_config={"initial_equity": 10_000},
    param_grid={
        "take_profit_pct": [0.04, 0.06, 0.08],
        "stop_loss_pct": [0.02, 0.03, 0.04],
    },
    n_workers=10,
)
results = sweep.run()

Constructor

ParameterSweep(
    strategy_class: Type[Strategy],
    data: DataProvider,
    base_config: dict,
    param_grid: Dict[str, list],
    n_workers: Optional[int] = None,   # default: cpu_count
)

Methods

Method Returns Description
run() SweepResults Execute sweep

SweepResults

Ranked results from a parameter sweep.

Fields

Field Type Description
combos List[dict] Each combo has params + metrics

Methods

Method Returns Description
best(metric, n) List[dict] Top N by metric (descending)
worst(metric, n) List[dict] Bottom N by metric
filter(**kwargs) SweepResults Filter by param values
to_dataframe() pd.DataFrame Export as DataFrame
summary(metric, top_n) str Formatted summary table

Combo Keys

Each dict in combos contains all parameter keys from param_grid plus:

Key Type Description
net_pnl float Net PnL
net_return_pct float Return percentage
max_drawdown_pct float Max drawdown
total_trades int Trade count
win_rate float Win rate
profit_factor float Profit factor