pub struct AvellanedaExact {
pub gamma: f64,
pub sigma: f64,
pub kappa: f64,
pub a: f64,
pub terminal_time: f64,
pub q_max: usize,
pub terminal_condition: TerminalCondition,
}Expand description
The exact analytical solution for the Avellaneda-Stoikov model using the spectral method. Solves the system of ODEs for theta(t, q).
Fields§
§gamma: f64§sigma: f64§kappa: f64§a: f64§terminal_time: f64§q_max: usize§terminal_condition: TerminalConditionTerminal condition for the value function at T. Defaults to Zero.
Implementations§
Source§impl AvellanedaExact
impl AvellanedaExact
pub fn new( gamma: f64, sigma: f64, kappa: f64, a: f64, terminal_time: f64, q_max: usize, ) -> Self
pub fn with_terminal_condition( self, terminal_condition: TerminalCondition, ) -> Self
Sourcepub fn compute_v(&self, t: f64) -> Vec<f64>
pub fn compute_v(&self, t: f64) -> Vec<f64>
Compute v(t, .) vector: the solution to the linearised HJB system at time t. Returns a vector of length 2*q_max+1, indexed by q+q_max.
Sourcepub fn exact_spreads(&self, t: f64, q: f64) -> (f64, f64)
pub fn exact_spreads(&self, t: f64, q: f64) -> (f64, f64)
Solves for the optimal spreads at time t given current inventory q.
Sourcepub fn value_function_theta(&self, t: f64, q: f64) -> f64
pub fn value_function_theta(&self, t: f64, q: f64) -> f64
Computes the value function u(t, x, q, S) = -exp(-gamma * (x + qS + theta(t, q))) Returns theta(t, q).
Trait Implementations§
Source§impl AnalyticalSolution<2> for AvellanedaExact
impl AnalyticalSolution<2> for AvellanedaExact
Source§fn value_function(&self, t: f64, state: &[f64; 2]) -> f64
fn value_function(&self, t: f64, state: &[f64; 2]) -> f64
Returns the theoretical value function V(t, state)
Source§fn optimal_controls(&self, t: f64, state: &[f64; 2]) -> ControlOutput<2>
fn optimal_controls(&self, t: f64, state: &[f64; 2]) -> ControlOutput<2>
Returns the optimal controls (intensities/spreads) at (t, state)
Auto Trait Implementations§
impl Freeze for AvellanedaExact
impl RefUnwindSafe for AvellanedaExact
impl Send for AvellanedaExact
impl Sync for AvellanedaExact
impl Unpin for AvellanedaExact
impl UnsafeUnpin for AvellanedaExact
impl UnwindSafe for AvellanedaExact
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
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> 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