pub struct HawkesProcess<K: Kernel> {
pub mu: f64,
pub kernel: K,
/* private fields */
}Expand description
Hawkes process with arbitrary kernel.
Simulated via Ogata’s thinning algorithm. For exponential kernels, intensity is maintained O(1) via the recursion I(t+dt) = mu + (I(t) - mu) * exp(-beta*dt) + alpha * new_jumps. For non-exponential kernels, intensity is computed by summing over all historical jumps (O(n)).
Fields§
§mu: f64§kernel: KImplementations§
Source§impl<K: Kernel> HawkesProcess<K>
impl<K: Kernel> HawkesProcess<K>
Source§impl<K: Kernel + 'static> HawkesProcess<K>
Simulate the Hawkes process and return the intensity path on a grid.
impl<K: Kernel + 'static> HawkesProcess<K>
Simulate the Hawkes process and return the intensity path on a grid.
Trait Implementations§
Source§impl<K: Clone + Kernel> Clone for HawkesProcess<K>
impl<K: Clone + Kernel> Clone for HawkesProcess<K>
Source§fn clone(&self) -> HawkesProcess<K>
fn clone(&self) -> HawkesProcess<K>
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<K: Kernel + 'static> Simulatable for HawkesProcess<K>
impl<K: Kernel + 'static> Simulatable for HawkesProcess<K>
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<K: Kernel + 'static> StochasticProcess for HawkesProcess<K>
impl<K: Kernel + 'static> StochasticProcess for HawkesProcess<K>
type State = f64
type Diffusion = f64
type BrownianIncrement = f64
fn drift(&self, x: &f64, _t: f64) -> f64
fn diffusion(&self, _x: &f64, _t: f64) -> f64
fn jump_intensity(&self, _x: &f64, _t: f64) -> f64
fn jump_size<R: Rng + ?Sized>(&self, _x: &f64, t: f64, _rng: &mut R) -> f64
fn expected_value(&self, x0: &f64, _t: f64) -> f64
fn variance(&self, _x0: &f64, _t: f64) -> f64
fn step<R: Rng + ?Sized>( &self, x: &f64, _t: f64, dt: f64, _dw: &f64, rng: &mut R, ) -> f64
fn generate_increment<R: Rng + ?Sized>(&self, _rng: &mut R, _dt: f64) -> f64
fn simulate<R: Rng + ?Sized>( &self, x0: f64, t0: f64, t_end: f64, dt: f64, rng: &mut R, ) -> Vec<(f64, 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<K> Freeze for HawkesProcess<K>where
K: Freeze,
impl<K> RefUnwindSafe for HawkesProcess<K>where
K: RefUnwindSafe,
impl<K> Send for HawkesProcess<K>
impl<K> Sync for HawkesProcess<K>
impl<K> Unpin for HawkesProcess<K>where
K: Unpin,
impl<K> UnsafeUnpin for HawkesProcess<K>where
K: UnsafeUnpin,
impl<K> UnwindSafe for HawkesProcess<K>where
K: UnwindSafe,
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