Skip to main content

SpreadQuoteAggregator

Struct SpreadQuoteAggregator 

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

Spread quote aggregator: builds synthetic quotes from leg quotes (Cython parity).

Quote-driven mode (update_interval_seconds == None): emits when all legs have quotes. Timer-driven mode: emits on timer fire when _has_update is true. Historical mode: defers timer event at ts_init until after the update.

Implementations§

Source§

impl SpreadQuoteAggregator

Source

pub fn new( spread_instrument_id: InstrumentId, legs: &[(InstrumentId, i64)], is_futures_spread: bool, price_precision: u8, size_precision: u8, handler: Box<dyn FnMut(QuoteTick)>, clock: Rc<RefCell<dyn Clock>>, historical_mode: bool, update_interval_seconds: Option<u64>, quote_build_delay: u64, vega_provider: Option<Box<dyn VegaProvider>>, price_rounder: Option<Box<dyn SpreadPriceRounder>>, ) -> Self

Creates a new SpreadQuoteAggregator.

§Panics

Panics if legs has fewer than 2 entries or any ratio is zero.

Source

pub fn set_aggregator_weak(&mut self, weak: Weak<RefCell<Self>>)

Sets the weak reference to this aggregator (used when starting the timer so the callback can call back). Prefer Self::prepare_for_timer_mode so the owner passes the owning Rc in one step.

Source

pub fn prepare_for_timer_mode(&mut self, self_rc: &Rc<RefCell<Self>>)

One-step setup for timer-driven mode (live or historical). Call this with the Rc that owns this aggregator before feeding any quotes when update_interval_seconds is set. The timer callback will use the stored weak reference to call back into this aggregator; without this, Self::start_timer will panic in historical mode or when called with None.

Source

pub fn set_historical_mode( &mut self, historical_mode: bool, handler: Box<dyn FnMut(QuoteTick)>, vega_provider: Option<Box<dyn VegaProvider>>, )

Sets historical mode and handler (and optionally greeks provider when switching).

Source

pub fn set_running(&mut self, is_running: bool)

Source

pub fn set_clock(&mut self, clock: Rc<RefCell<dyn Clock>>)

Source

pub fn start_timer(&mut self, aggregator_rc: Option<Rc<RefCell<Self>>>)

Starts the timer when update_interval_seconds is set (timer-driven mode). In live mode pass Some(rc) so the weak is set and the timer can call back. In historical mode the owner must have called Self::prepare_for_timer_mode with the owning Rc before any quote is processed, then call with None here.

§Panics

Panics if called with None in timer mode without a prior Self::prepare_for_timer_mode call.

Source

pub fn on_timer_fire(&mut self, ts_event: UnixNanos)

Called when the timer fires (live mode). Builds and sends a spread quote using the timer event timestamp.

Source

pub fn stop_timer(&mut self)

Stops the timer when in timer-driven mode.

Source

pub fn handle_quote_tick(&mut self, tick: QuoteTick)

Handles an incoming leg quote (Cython handle_quote_tick).

Source

pub fn flush_pending_historical_quote(&mut self)

Flushes the deferred historical timer event, if any.

This is intended for historical request finalization, where we know no more historical quotes will arrive for the requested range and should not require a later live tick just to release the final same-timestamp spread quote.

Trait Implementations§

Source§

impl Debug for SpreadQuoteAggregator

Source§

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

Formats the value using the given formatter. 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more