pub struct GridMarketMakerConfig {
pub base: StrategyConfig,
pub instrument_id: InstrumentId,
pub trade_size: Option<Quantity>,
pub num_levels: usize,
pub grid_step_bps: u32,
pub skew_factor: f64,
pub max_position: Quantity,
pub requote_threshold_bps: u32,
pub expire_time_secs: Option<u64>,
pub on_cancel_resubmit: bool,
}Expand description
Configuration for the grid market making strategy.
Fields§
§base: StrategyConfigBase strategy configuration.
instrument_id: InstrumentIdInstrument ID to trade.
trade_size: Option<Quantity>Trade size per grid level. When None the strategy resolves it from
the instrument’s min_quantity during on_start.
num_levels: usizeNumber of price levels on each side (buy & sell).
grid_step_bps: u32Grid spacing in basis points of mid-price (geometric grid).
E.g. 10 = 10 bps = 0.1%. Buy level N = mid × (1 - bps/10000)^N.
skew_factor: f64How aggressively to shift the grid based on inventory.
max_position: QuantityHard cap on net exposure (long or short).
requote_threshold_bps: u32Minimum mid-price move in basis points before re-quoting.
E.g. 5 = 5 bps = 0.05%.
expire_time_secs: Option<u64>Optional order expiry in seconds. When set, orders use GTD
time-in-force with expire_time = now + expire_time_secs.
on_cancel_resubmit: boolWhen true, resubmit the full grid on the next quote after receiving
an order cancel event. Useful for exchanges like dYdX where short-term
orders are canceled by the protocol after expiry.
Implementations§
Source§impl GridMarketMakerConfig
impl GridMarketMakerConfig
Sourcepub fn new(instrument_id: InstrumentId, max_position: Quantity) -> Self
pub fn new(instrument_id: InstrumentId, max_position: Quantity) -> Self
Creates a new GridMarketMakerConfig with required fields and sensible defaults.
pub fn with_trade_size(self, trade_size: Quantity) -> Self
pub fn with_num_levels(self, num_levels: usize) -> Self
pub fn with_grid_step_bps(self, bps: u32) -> Self
pub fn with_skew_factor(self, skew_factor: f64) -> Self
pub fn with_requote_threshold_bps(self, bps: u32) -> Self
pub fn with_expire_time_secs(self, secs: u64) -> Self
pub fn with_on_cancel_resubmit(self, enabled: bool) -> Self
pub fn with_strategy_id(self, strategy_id: StrategyId) -> Self
pub fn with_order_id_tag(self, tag: String) -> Self
Trait Implementations§
Source§impl Clone for GridMarketMakerConfig
impl Clone for GridMarketMakerConfig
Source§fn clone(&self) -> GridMarketMakerConfig
fn clone(&self) -> GridMarketMakerConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GridMarketMakerConfig
impl Debug for GridMarketMakerConfig
Source§impl<'a, 'py> FromPyObject<'a, 'py> for GridMarketMakerConfigwhere
Self: Clone,
impl<'a, 'py> FromPyObject<'a, 'py> for GridMarketMakerConfigwhere
Self: Clone,
Source§impl<'py> IntoPyObject<'py> for GridMarketMakerConfig
impl<'py> IntoPyObject<'py> for GridMarketMakerConfig
Source§type Target = GridMarketMakerConfig
type Target = GridMarketMakerConfig
Source§type Output = Bound<'py, <GridMarketMakerConfig as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <GridMarketMakerConfig as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for GridMarketMakerConfig
impl PyClass for GridMarketMakerConfig
Source§impl PyClassImpl for GridMarketMakerConfig
impl PyClassImpl for GridMarketMakerConfig
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = /// Configuration for the grid market making strategy.
const RAW_DOC: &'static CStr = /// Configuration for the grid market making strategy.
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type Layout = <<GridMarketMakerConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<GridMarketMakerConfig>
type Layout = <<GridMarketMakerConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<GridMarketMakerConfig>
Source§type ThreadChecker = NoopThreadChecker
type ThreadChecker = NoopThreadChecker
type Inventory = Pyo3MethodsInventoryForGridMarketMakerConfig
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
§fn dict_offset() -> Option<PyObjectOffset>
fn dict_offset() -> Option<PyObjectOffset>
§fn weaklist_offset() -> Option<PyObjectOffset>
fn weaklist_offset() -> Option<PyObjectOffset>
Source§impl PyClassNewTextSignature for GridMarketMakerConfig
impl PyClassNewTextSignature for GridMarketMakerConfig
const TEXT_SIGNATURE: &'static str = "(instrument_id, max_position, strategy_id=None, order_id_tag=None, trade_size=None, num_levels=3, grid_step_bps=10, skew_factor=0.0, requote_threshold_bps=5, expire_time_secs=None, on_cancel_resubmit=False)"
Source§impl PyTypeInfo for GridMarketMakerConfig
impl PyTypeInfo for GridMarketMakerConfig
Source§const NAME: &str = <Self as ::pyo3::PyClass>::NAME
const NAME: &str = <Self as ::pyo3::PyClass>::NAME
prefer using ::type_object(py).name() to get the correct runtime value
Source§const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
prefer using ::type_object(py).module() to get the correct runtime value
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.impl DerefToPyAny for GridMarketMakerConfig
Auto Trait Implementations§
impl Freeze for GridMarketMakerConfig
impl RefUnwindSafe for GridMarketMakerConfig
impl Send for GridMarketMakerConfig
impl Sync for GridMarketMakerConfig
impl Unpin for GridMarketMakerConfig
impl UnsafeUnpin for GridMarketMakerConfig
impl UnwindSafe for GridMarketMakerConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read more§impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
§fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>
fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
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.
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more