Skip to main content

BacktestNode

Struct BacktestNode 

Source
pub struct BacktestNode { /* private fields */ }
Expand description

Orchestrates catalog-driven backtests from run configurations.

BacktestNode connects the ParquetDataCatalog with BacktestEngine to load historical data and run backtests. Supports both oneshot and streaming modes.

Implementations§

Source§

impl BacktestNode

Source

pub fn new(configs: Vec<BacktestRunConfig>) -> Result<Self>

Creates a new BacktestNode instance.

Validates that configs are non-empty and internally consistent:

  • All data config instrument venues must have a matching venue config.
  • L2/L3 book types require order book data in the data configs.
  • Data config time ranges must be valid (start <= end).
§Errors

Returns an error if configs is empty or validation fails.

Source

pub fn configs(&self) -> &[BacktestRunConfig]

Returns the run configurations.

Source

pub fn build(&mut self) -> Result<()>

Builds backtest engines from the run configurations.

For each config, creates a BacktestEngine, adds venues, and loads instruments from the catalog.

§Errors

Returns an error if engine creation, venue setup, or instrument loading fails.

Source

pub fn get_engine_mut(&mut self, id: &str) -> Option<&mut BacktestEngine>

Returns a mutable reference to the engine for the given run config ID.

Source

pub fn get_engine(&self, id: &str) -> Option<&BacktestEngine>

Returns a reference to the engine for the given run config ID.

Source

pub fn get_engines(&self) -> Vec<&BacktestEngine>

Returns all created backtest engines.

Source

pub fn run(&mut self) -> Result<Vec<BacktestResult>>

Runs all configured backtests and returns results.

Automatically calls build() if engines have not been created yet. For each run config, loads data from the catalog and runs the engine. Supports both oneshot (chunk_size = None) and streaming modes.

§Errors

Returns an error if building, data loading, or engine execution fails.

Source

pub fn load_catalog(config: &BacktestDataConfig) -> Result<ParquetDataCatalog>

Creates a ParquetDataCatalog from a data config.

§Errors

Returns an error if the catalog cannot be created from the URI.

Source

pub fn load_data_config( config: &BacktestDataConfig, start: Option<UnixNanos>, end: Option<UnixNanos>, ) -> Result<Vec<Data>>

Loads data from the catalog for a specific data config.

§Errors

Returns an error if catalog creation or data querying fails.

Source

pub fn dispose(&mut self)

Disposes all engines and releases resources.

Trait Implementations§

Source§

impl Debug for BacktestNode

Source§

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

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

impl<'py> IntoPyObject<'py> for BacktestNode

Source§

type Target = BacktestNode

The Python output type
Source§

type Output = Bound<'py, <BacktestNode as IntoPyObject<'py>>::Target>

The smart pointer type to use. Read more
Source§

type Error = PyErr

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

fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>

Performs the conversion.
Source§

impl PyClass for BacktestNode

Source§

const NAME: &str = "BacktestNode"

Name of the class. Read more
Source§

type Frozen = False

Whether the pyclass is frozen. Read more
Source§

impl PyClassImpl for BacktestNode

Source§

const MODULE: Option<&str>

Module which the class will be associated with. Read more
Source§

const IS_BASETYPE: bool = false

#[pyclass(subclass)]
Source§

const IS_SUBCLASS: bool = false

#[pyclass(extends=…)]
Source§

const IS_MAPPING: bool = false

#[pyclass(mapping)]
Source§

const IS_SEQUENCE: bool = false

#[pyclass(sequence)]
Source§

const IS_IMMUTABLE_TYPE: bool = false

#[pyclass(immutable_type)]
Source§

const RAW_DOC: &'static CStr = /// Orchestrates catalog-driven backtests from run configurations. /// /// `BacktestNode` connects the [`ParquetDataCatalog`] with [`BacktestEngine`] to load /// historical data and run backtests. Supports both oneshot and streaming modes.

Docstring for the class provided on the struct or enum. Read more
Source§

const DOC: &'static CStr

Fully rendered class doc, including the text_signature if a constructor is defined. Read more
Source§

type Layout = <<BacktestNode as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<BacktestNode>

Description of how this class is laid out in memory
Source§

type BaseType = PyAny

Base class
Source§

type ThreadChecker = ThreadCheckerImpl

This handles following two situations: Read more
Source§

type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild

Immutable or mutable
Source§

type Dict = PyClassDummySlot

Specify this class has #[pyclass(dict)] or not.
Source§

type WeakRef = PyClassDummySlot

Specify this class has #[pyclass(weakref)] or not.
Source§

type BaseNativeType = PyAny

The closest native ancestor. This is PyAny by default, and when you declare #[pyclass(extends=PyDict)], it’s PyDict.
Source§

fn items_iter() -> PyClassItemsIter

Source§

fn lazy_type_object() -> &'static LazyTypeObject<Self>

Source§

fn dict_offset() -> Option<PyObjectOffset>

Used to provide the dictoffset slot (equivalent to tp_dictoffset)
Source§

fn weaklist_offset() -> Option<PyObjectOffset>

Used to provide the weaklistoffset slot (equivalent to tp_weaklistoffset
Source§

impl PyClassNewTextSignature for BacktestNode

Source§

const TEXT_SIGNATURE: &'static str = "(configs)"

Source§

impl PyMethods<BacktestNode> for PyClassImplCollector<BacktestNode>

Source§

fn py_methods(self) -> &'static PyClassItems

Source§

impl PyTypeInfo for BacktestNode

Source§

const NAME: &str = <Self as ::pyo3::PyClass>::NAME

👎Deprecated since 0.28.0: prefer using ::type_object(py).name() to get the correct runtime value
Class name.
Source§

const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE

👎Deprecated since 0.28.0: prefer using ::type_object(py).module() to get the correct runtime value
Module name, if any.
Source§

fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject

Returns the PyTypeObject instance for this type.
Source§

fn type_object(py: Python<'_>) -> Bound<'_, PyType>

Returns the safe abstraction over the type object.
Source§

fn is_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type or a subclass of this type.
Source§

fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type.
Source§

impl DerefToPyAny for BacktestNode

Source§

impl ExtractPyClassWithClone for BacktestNode

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<'py, T> IntoPyObjectExt<'py> for T
where T: IntoPyObject<'py>,

Source§

fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>

Converts self into an owned Python object, dropping type information.
Source§

fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>

Converts self into an owned Python object, dropping type information and unbinding it from the 'py lifetime.
Source§

fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>

Converts self into a Python object. Read more
Source§

impl<'py, T> IntoPyObjectNautilusExt<'py> for T
where T: IntoPyObjectExt<'py>,

Source§

fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>

Convert self into a Py<PyAny> while panicking if the conversion fails. Read more
Source§

impl<T> PyTypeCheck for T
where T: PyTypeInfo,

Source§

const NAME: &'static str = T::NAME

👎Deprecated since 0.27.0: Use ::classinfo_object() instead and format the type name at runtime. Note that using built-in cast features is often better than manual PyTypeCheck usage.
Name of self. This is used in error messages, for example.
Source§

fn type_check(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of Self, which may include a subtype. Read more
Source§

fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>

Returns the expected type as a possible argument for the isinstance and issubclass function. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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