pub struct KalmanFilter { /* private fields */ }Expand description
Kalman filter with a Local Linear Trend state-space model.
§Example
use quant_indicators::KalmanFilter;
use quant_primitives::Candle;
use chrono::Utc;
use rust_decimal_macros::dec;
let ts = Utc::now();
let candles: Vec<Candle> = (0..100).map(|i| {
let price = dec!(100) + rust_decimal::Decimal::from(i);
Candle::new(price, price, price, price, dec!(1000), ts).unwrap()
}).collect();
let kf = KalmanFilter::new(dec!(0.01), dec!(0.001), dec!(1), 20, 20).unwrap();
let result = kf.compute(&candles).unwrap();
assert_eq!(result.len(), 80); // 100 - 20Implementations§
Source§impl KalmanFilter
impl KalmanFilter
Sourcepub fn new(
q_level: Decimal,
q_slope: Decimal,
r_obs: Decimal,
warmup: usize,
eiv_window: usize,
) -> Result<Self, IndicatorError>
pub fn new( q_level: Decimal, q_slope: Decimal, r_obs: Decimal, warmup: usize, eiv_window: usize, ) -> Result<Self, IndicatorError>
Create a new Kalman filter.
§Arguments
q_level— process noise for level state (must be > 0)q_slope— process noise for slope state (must be > 0)r_obs— measurement noise (must be > 0)warmup— bars consumed before output starts (must be ≥ 1)eiv_window— rolling window size for empirical innovation variance (must be ≥ 2)
§Errors
Returns InvalidParameter if any noise parameter is ≤ 0, warmup is 0, or
eiv_window is less than 2.
Sourcepub fn warmup_period(&self) -> usize
pub fn warmup_period(&self) -> usize
Minimum number of candles consumed before output starts.
Sourcepub fn compute(
&self,
candles: &[Candle],
) -> Result<KalmanResult, IndicatorError>
pub fn compute( &self, candles: &[Candle], ) -> Result<KalmanResult, IndicatorError>
Compute the Kalman filter on candle data.
Returns KalmanResult with five output series, each of length
candles.len() - warmup.
§Errors
Returns InsufficientData if candles.len() <= warmup.
Trait Implementations§
Source§impl Clone for KalmanFilter
impl Clone for KalmanFilter
Source§fn clone(&self) -> KalmanFilter
fn clone(&self) -> KalmanFilter
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for KalmanFilter
impl RefUnwindSafe for KalmanFilter
impl Send for KalmanFilter
impl Sync for KalmanFilter
impl Unpin for KalmanFilter
impl UnsafeUnpin for KalmanFilter
impl UnwindSafe for KalmanFilter
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