pub struct BatesProcess {
pub lambda: f64,
pub mu_jump: f64,
pub sigma_jump: f64,
/* private fields */
}Expand description
Bates model: Heston stochastic volatility + Merton jump diffusion.
Same as Heston, but with compound Poisson jumps on the price.
Fields§
§lambda: f64§mu_jump: f64§sigma_jump: f64Implementations§
Source§impl BatesProcess
impl BatesProcess
pub fn new( mu: f64, kappa: f64, theta: f64, sigma: f64, rho: f64, lambda: f64, mu_jump: f64, sigma_jump: f64, initial_price: f64, initial_variance: f64, ) -> Self
pub fn price(&self) -> f64
pub fn volatility(&self) -> f64
pub fn mu(&self) -> f64
pub fn kappa(&self) -> f64
pub fn theta(&self) -> f64
pub fn sigma(&self) -> f64
pub fn rho(&self) -> f64
Trait Implementations§
Source§impl Clone for BatesProcess
impl Clone for BatesProcess
Source§fn clone(&self) -> BatesProcess
fn clone(&self) -> BatesProcess
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 Simulatable for BatesProcess
impl Simulatable for BatesProcess
Source§type Output = (f64, f64)
type Output = (f64, f64)
The type emitted at each step (e.g.
f64 for GBM, BookSnapshot for L3).Source§fn dim(&self) -> usize
fn dim(&self) -> usize
Dimensionality of the Brownian driver. Used by the runner to
pre-generate the correct number of random normals per step.
GBM is 1, Heston is 2, etc.
Source§impl StochasticProcess for BatesProcess
impl StochasticProcess for BatesProcess
type State = ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>
type Diffusion = ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>
type BrownianIncrement = ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>
fn drift(&self, x: &Array1<f64>, t: f64) -> Array1<f64>
fn diffusion(&self, x: &Array1<f64>, t: f64) -> Array2<f64>
fn jump_intensity(&self, _x: &Array1<f64>, _t: f64) -> f64
fn jump_size<R: Rng + ?Sized>( &self, x: &Array1<f64>, _t: f64, rng: &mut R, ) -> Array1<f64>
fn expected_value(&self, x0: &Array1<f64>, t: f64) -> Array1<f64>
fn variance(&self, x0: &Array1<f64>, t: f64) -> Array1<f64>
fn step<R: Rng + ?Sized>( &self, x: &Array1<f64>, t: f64, dt: f64, dw: &Array1<f64>, rng: &mut R, ) -> Array1<f64>
fn generate_increment<R: Rng + ?Sized>( &self, rng: &mut R, dt: f64, ) -> Array1<f64>
fn simulate<R: Rng + ?Sized>( &self, x0: Array1<f64>, t0: f64, t_end: f64, dt: f64, rng: &mut R, ) -> Vec<(f64, Array1<f64>)>
fn simulate_paths( &self, x0: Self::State, t0: f64, t_end: f64, dt: f64, num_paths: usize, ) -> Vec<Vec<(f64, Self::State)>>
Auto Trait Implementations§
impl Freeze for BatesProcess
impl RefUnwindSafe for BatesProcess
impl Send for BatesProcess
impl Sync for BatesProcess
impl Unpin for BatesProcess
impl UnsafeUnpin for BatesProcess
impl UnwindSafe for BatesProcess
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> 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