Table of Contents

Class Optimizer

Namespace
Balsam
Assembly
Balsam.Backtester.dll

Runs simulations across a range of parameter values and collate results using brute force search.

public class Optimizer : OptimizerBase
Inheritance
Optimizer
Inherited Members
Extension Methods

Properties

BaseCase

Gets/sets a simulation result that will be listed at the beginning of results for comparison purposes.

public TradeStats BaseCase { get; set; }

Property Value

TradeStats

MaxIterations

Gets/sets the maximum number of iterations the optimization will run for. Typically set when RandomizeOrder is true.

public int? MaxIterations { get; set; }

Property Value

int?

MaxRuntime

Gets/sets the maximum runtime of the optimization. Typically set for very large optimizations when RandomizeOrder is true.

public TimeSpan? MaxRuntime { get; set; }

Property Value

TimeSpan?

RandomizeOrder

Gets/sets whether parameter sets will be run in random order.

public bool RandomizeOrder { get; set; }

Property Value

bool

SaveResults

Gets/sets whether TradeStats are saved to the Results collection. When true, the optimizer will also save results to a temporary file called OptimizationResults. When false, results are exposed via the IterationCompleted event and are not saved internally. This may be useful for very large optimizations that could potentially result in OutOfMemory exceptions.

public bool SaveResults { get; set; }

Property Value

bool

Methods

GetResults()

Returns a collection of the optimization results.

public override TradeStatsCollection GetResults()

Returns

TradeStatsCollection

Optimize(MoneyManager)

Optimizes the specified money manager.

public void Optimize(MoneyManager moneyManager)

Parameters

moneyManager MoneyManager

Optimize(MoneyManager, params OptimizeAttribute[])

Optimizes the specified money manger.

public void Optimize(MoneyManager moneyManager, params OptimizeAttribute[] optimizationAttributes)

Parameters

moneyManager MoneyManager
optimizationAttributes OptimizeAttribute[]

Optimize(Strategy)

Optimizes the specified strategy. Typically the strategy would already have the primary series set.

public void Optimize(Strategy strategy)

Parameters

strategy Strategy

Optimize(Strategy, IEnumerable<BarSeries>)

Optimizes the strategy across all data in the specified enumerable.

public void Optimize(Strategy strategy, IEnumerable<BarSeries> data)

Parameters

strategy Strategy
data IEnumerable<BarSeries>

Optimize(Strategy, IEnumerable<BarSeries>, params OptimizeAttribute[])

Optimizes the strategy using the specified parameters.

public void Optimize(Strategy strategy, IEnumerable<BarSeries> data, params OptimizeAttribute[] optimizationAttributes)

Parameters

strategy Strategy
data IEnumerable<BarSeries>
optimizationAttributes OptimizeAttribute[]

Optimize(Type, DataStoreBase)

Multi-threaded optimization of a money manager type using the specified datastore.

public void Optimize(Type moneyManager, DataStoreBase dataStore)

Parameters

moneyManager Type
dataStore DataStoreBase

Optimize(Type, DataStoreBase, VariableDictionary)

Multi-threaded optimization of a money manager type using the specified properties and datastore.

public void Optimize(Type moneyManager, DataStoreBase dataStore, VariableDictionary moneyManagerProperties)

Parameters

moneyManager Type
dataStore DataStoreBase
moneyManagerProperties VariableDictionary

Optimize(Type, VariableDictionary, Type, VariableDictionary)

Used to optimize strategies that load their own data. They must be decorated with StrategyProvidedDataAttribute.

public void Optimize(Type strategy, VariableDictionary strategyProperties, Type moneyManager, VariableDictionary moneyManagerProperties)

Parameters

strategy Type
strategyProperties VariableDictionary
moneyManager Type
moneyManagerProperties VariableDictionary

Optimize(Type, VariableDictionary, Type, VariableDictionary, BarSeries)

Runs a multi-threaded optimization on a single data series.

public void Optimize(Type strategy, VariableDictionary strategyProperties, Type moneyManager, VariableDictionary moneyManagerProperties, BarSeries data)

Parameters

strategy Type
strategyProperties VariableDictionary
moneyManager Type
moneyManagerProperties VariableDictionary
data BarSeries

Optimize(Type, VariableDictionary, Type, VariableDictionary, IEnumerable<BarSeries>)

Runs a multi-threaded strategy optimization using the specified parameters.

public void Optimize(Type strategy, VariableDictionary strategyProperties, Type moneyManager, VariableDictionary moneyManagerProperties, IEnumerable<BarSeries> data)

Parameters

strategy Type
strategyProperties VariableDictionary
moneyManager Type
moneyManagerProperties VariableDictionary
data IEnumerable<BarSeries>

Optimize(Type, VariableDictionary, Type, VariableDictionary, IEnumerable<BarSeries>, IComputePool)

Runs a multi-threaded strategy optimization using the specified parameters.

public void Optimize(Type strategy, VariableDictionary strategyProperties, Type moneyManager, VariableDictionary moneyManagerProperties, IEnumerable<BarSeries> data, IComputePool computePool)

Parameters

strategy Type
strategyProperties VariableDictionary
moneyManager Type
moneyManagerProperties VariableDictionary
data IEnumerable<BarSeries>
computePool IComputePool

Optimize(Type, VariableDictionary, Type, VariableDictionary, IEnumerable<BarSeries>, IEnumerable<OptimizeAttribute>, IComputePool)

Runs an optimization with the specified parameters. Cancellation from the console is supported.

public void Optimize(Type strategy, VariableDictionary strategyProperties, Type moneyManager, VariableDictionary moneyManagerProperties, IEnumerable<BarSeries> data, IEnumerable<OptimizeAttribute> optimizationAttributes, IComputePool computePool)

Parameters

strategy Type
strategyProperties VariableDictionary
moneyManager Type
moneyManagerProperties VariableDictionary
data IEnumerable<BarSeries>
optimizationAttributes IEnumerable<OptimizeAttribute>
computePool IComputePool

Optimize(Type, VariableDictionary, Type, VariableDictionary, IEnumerable<BarSeries>, IEnumerable<OptimizeAttribute>, IComputePool, IProgress<double>, CancellationToken)

Runs an optimization using the specified parameters.

public override void Optimize(Type strategy, VariableDictionary strategyProperties, Type moneyManager, VariableDictionary moneyManagerProperties, IEnumerable<BarSeries> data, IEnumerable<OptimizeAttribute> optimizationAttributes, IComputePool computePool, IProgress<double> progress, CancellationToken token)

Parameters

strategy Type
strategyProperties VariableDictionary
moneyManager Type
moneyManagerProperties VariableDictionary
data IEnumerable<BarSeries>
optimizationAttributes IEnumerable<OptimizeAttribute>
computePool IComputePool
progress IProgress<double>
token CancellationToken

Optimize(Type, VariableDictionary, Type, VariableDictionary, IEnumerable<BarSeries>, IEnumerable<OptimizeAttribute>, int)

Runs a multi-threaded strategy optimization using the specified parameters.

public void Optimize(Type strategy, VariableDictionary strategyProperties, Type moneyManager, VariableDictionary moneyManagerProperties, IEnumerable<BarSeries> data, IEnumerable<OptimizeAttribute> optimizationAttributes, int maxParallelism = -1)

Parameters

strategy Type
strategyProperties VariableDictionary
moneyManager Type
moneyManagerProperties VariableDictionary
data IEnumerable<BarSeries>
optimizationAttributes IEnumerable<OptimizeAttribute>
maxParallelism int

Optimize(Type, VariableDictionary, Type, VariableDictionary, IEnumerable<BarSeries>, int)

Runs a multi-threaded strategy optimization using the specified parameters.

public void Optimize(Type strategy, VariableDictionary strategyProperties, Type moneyManager, VariableDictionary moneyManagerProperties, IEnumerable<BarSeries> data, int maxParallelism = -1)

Parameters

strategy Type
strategyProperties VariableDictionary
moneyManager Type
moneyManagerProperties VariableDictionary
data IEnumerable<BarSeries>
maxParallelism int