pub struct AvellanedaStoikovBilateralHawkesStrategy {
pub params: AvellanedaStoikovBilateralHawkesParameters,
pub bid_spread_table: Arc<LookupTable>,
pub ask_spread_table: Arc<LookupTable>,
/* private fields */
}Expand description
Avellaneda-Stoikov strategy driven by precomputed FDM bilateral-Hawkes spreads.
On every tick the strategy:
- Reads
hawkes_buy_intensity(lambda+) andhawkes_sell_intensity(lambda-) fromobs.parameters, as published byStochasticMatcher::augment_parameterswhen constructed withwith_bilateral_hawkes. - Interpolates the 4-D FDM spread tables at
(q, lambda+, lambda-, tau). - Places bid/ask orders at
mid -/+ interpolated_spread.
§Table format
Both tables must be 4-dimensional with axes [q, lambda+, lambda-, tau]:
- axis 0: inventory grid (e.g. -10..10, 21 points)
- axis 1: buy-side intensity grid (e.g. 0.0..LAMBDA_MAX, N_LAMBDA points)
- axis 2: sell-side intensity grid (e.g. 0.0..LAMBDA_MAX, N_LAMBDA points)
- axis 3: time remaining in seconds (0.0..T_HORIZON, increasing)
§Intensity mapping
In the bilateral Hawkes model:
- lambda+ = buy market-order intensity -> fills the MM ask (ask fill rate proportional to lambda+)
- lambda- = sell market-order intensity -> fills the MM bid (bid fill rate proportional to lambda-)
Both intensities jointly determine optimal bid and ask through the 4-D value function.
Fields§
§params: AvellanedaStoikovBilateralHawkesParameters§bid_spread_table: Arc<LookupTable>4D lookup table for the bid half-spread: axes [q, lambda+, lambda-, tau].
ask_spread_table: Arc<LookupTable>4D lookup table for the ask half-spread: axes [q, lambda+, lambda-, tau].
Implementations§
Source§impl AvellanedaStoikovBilateralHawkesStrategy
impl AvellanedaStoikovBilateralHawkesStrategy
pub fn new( params: AvellanedaStoikovBilateralHawkesParameters, bid_spread_table: Arc<LookupTable>, ask_spread_table: Arc<LookupTable>, ) -> Self
Trait Implementations§
Source§impl Clone for AvellanedaStoikovBilateralHawkesStrategy
impl Clone for AvellanedaStoikovBilateralHawkesStrategy
Source§fn clone(&self) -> AvellanedaStoikovBilateralHawkesStrategy
fn clone(&self) -> AvellanedaStoikovBilateralHawkesStrategy
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Strategy for AvellanedaStoikovBilateralHawkesStrategy
impl Strategy for AvellanedaStoikovBilateralHawkesStrategy
Source§fn on_tick(&mut self, obs: &Observation, requests: &mut Vec<OrderRequest>)
fn on_tick(&mut self, obs: &Observation, requests: &mut Vec<OrderRequest>)
Called each tick with the agent’s filtered observation.
Appends order requests (New, Cancel, CancelAll) to the provided buffer.
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Downcast helper — returns
self as &mut dyn Any.Auto Trait Implementations§
impl Freeze for AvellanedaStoikovBilateralHawkesStrategy
impl RefUnwindSafe for AvellanedaStoikovBilateralHawkesStrategy
impl Send for AvellanedaStoikovBilateralHawkesStrategy
impl Sync for AvellanedaStoikovBilateralHawkesStrategy
impl Unpin for AvellanedaStoikovBilateralHawkesStrategy
impl UnsafeUnpin for AvellanedaStoikovBilateralHawkesStrategy
impl UnwindSafe for AvellanedaStoikovBilateralHawkesStrategy
Blanket Implementations§
impl<T> Allocation for T
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> ⓘ
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 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> ⓘ
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