Skip to main content

BacktestConfig

Struct BacktestConfig 

Source
pub struct BacktestConfig {
    pub initial_balance: f64,
    pub close_on_finish: bool,
    pub fill_model: FillModel,
    pub contract_sizes: HashMap<String, f64>,
    pub sizing: Option<SizingPolicy>,
    pub symbol_specs: HashMap<String, SymbolSpec>,
    pub instrument_manifest: Option<ReplayInstrumentManifest>,
    pub bar_spread_fallback: HashMap<String, f64>,
    pub run_tags: BTreeMap<String, String>,
    pub costs: HashMap<String, InstrumentCosts>,
}
Expand description

Configuration for a backtest run.

Fields§

§initial_balance: f64

Starting account balance.

§close_on_finish: bool

If true, all remaining open positions are closed at market when the data feed is exhausted.

§fill_model: FillModel

How fill conditions and rule triggers interpret price quotes.

Defaults to FillModel::BidAsk — the most realistic model that uses the appropriate side of the spread for each operation.

§contract_sizes: HashMap<String, f64>

Per-symbol contract size (point value) for P&L calculation.

Maps symbol name → contract size. For forex, this is typically lot_base_units from SymbolSpec (e.g. 100_000 for majors). For gold (XAUUSD) it’s 100 (1 lot = 100 oz).

When a symbol is absent from this map the multiplier defaults to 1.0, which preserves backward compatibility with all existing tests.

§sizing: Option<SizingPolicy>

Optional position sizing policy. When set, entry signal sizes are recalculated after profile transformation using symbol metadata.

§symbol_specs: HashMap<String, SymbolSpec>

Symbol specs for sizing calculations. Populated by the server from the symbol registry. Empty when no sizing policy is configured.

§instrument_manifest: Option<ReplayInstrumentManifest>

Optional explicit instrument specifications and stored-series bindings pinned for this run.

§bar_spread_fallback: HashMap<String, f64>

Per-symbol symmetric bid/ask spread in price units, applied to bars that carry no recorded spread.

Stored bars normally carry the average spread observed while they formed. This map covers feeds that cannot supply one; without it such bars execute at a zero spread, and the run reports how often that happened.

§run_tags: BTreeMap<String, String>

Caller-supplied labels recorded with the run and attached to every completed position.

A batch of runs uses these to say what distinguishes one run from another, such as the parameter values or the data window, so that evaluation can break results down by them afterwards. They are inert: the engine never reads a tag to decide anything. Keys and values are bounded and validated before replay starts, and they are kept separate from the engine’s own diagnostic tags so neither can overwrite the other.

§costs: HashMap<String, InstrumentCosts>

Per-symbol commission and swap specification.

An empty map charges nothing and reproduces runs made before costs existed. Point-denominated swap additionally requires a matching symbol_specs entry, because the price point size comes from its digit count.

Trait Implementations§

Source§

impl Clone for BacktestConfig

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BacktestConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BacktestConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Serialize for BacktestConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V