Skip to content

trading.optimizer.experiments.backtest_experiment_runner

trading.optimizer.experiments.backtest_experiment_runner

BacktestExperimentRunner

Runs BacktestExperiment objects with the backtester.

run staticmethod

run(experiments: list[BacktestExperiment], verbose_iterating: bool = True) -> list[BacktestExperimentResult]

Runs experiment objects with the backtester.

Parameters:

Name Type Description Default
experiments list[BacktestExperiment]

The BacktestExperiment instances to backtest.

required
verbose_iterating bool

Whether to print the name of the experiment currently being processed.

True

Returns:

Type Description
list[BacktestExperimentResult]

'list[BacktestExperimentResult]': The underlying Experiment & BacktestData instances for the experiments.

Source code in src\contango\trading\optimizer\experiments\backtest_experiment_runner.py
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
@staticmethod
def run(experiments: list[BacktestExperiment], verbose_iterating: bool = True) -> list[BacktestExperimentResult]:
    """
    Runs experiment objects with the backtester.

    Args:
        experiments: The `BacktestExperiment` instances to backtest.
        verbose_iterating: Whether to print the name of the experiment currently being processed.

    Returns:
        'list[BacktestExperimentResult]': The underlying `Experiment` & `BacktestData` instances for the experiments.
    """
    results: list[BacktestExperimentResult] = []

    for experiment in experiments:
        if verbose_iterating:
            print(f"Processing experiment with params: {experiment.parameters}")

        strategy = experiment.strategy_factory(
            **experiment.parameters
        )
        data = StrategyBacktester.backtest(
            ohlcv_data=experiment.dataset,
            strategy=strategy,
            config=experiment.config
        )
        metrics = calculate_metrics(data)

        results.append(BacktestExperimentResult(
            experiment=experiment,
            backtest_metrics=metrics,
            raw_backtest_data=data
        ))

    return results