pub struct OiToVolumeRatio { /* private fields */ }Expand description
OI-to-Volume Ratio — open interest divided by the tick’s total taker volume, a measure of how much position is held versus turned over.
OIVR = open_interest / (taker_buy_volume + taker_sell_volume)A high ratio means open interest dwarfs the volume trading it — positions are being held, not churned (low participation, potential complacency or a coiling market). A low ratio means heavy volume relative to outstanding interest — active churn, often around breakouts or capitulation. Watching the ratio change distinguishes new-money trends (OI and volume both rising) from short-covering or position rolls.
The ratio is non-negative; a tick with zero taker volume reports 0 rather than
dividing by zero. It is stateless — each tick yields one value (no warmup). Each
update is O(1).
§Example
use wickra_core::{DerivativesTick, Indicator, OiToVolumeRatio};
let mut indicator = OiToVolumeRatio::new();
let tick = DerivativesTick::new(0.0, 100.0, 100.0, 100.0, 5_000.0, 0.0, 0.0, 400.0, 600.0, 0.0, 0.0, 0).unwrap();
let oivr = indicator.update(tick).unwrap();
assert!((oivr - 5.0).abs() < 1e-12); // 5000 / (400 + 600)Implementations§
Source§impl OiToVolumeRatio
impl OiToVolumeRatio
Sourcepub const fn new() -> OiToVolumeRatio
pub const fn new() -> OiToVolumeRatio
Construct a new OI-to-Volume Ratio. The indicator is parameter-free.
Trait Implementations§
Source§impl Clone for OiToVolumeRatio
impl Clone for OiToVolumeRatio
Source§fn clone(&self) -> OiToVolumeRatio
fn clone(&self) -> OiToVolumeRatio
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for OiToVolumeRatio
impl Debug for OiToVolumeRatio
Source§impl Default for OiToVolumeRatio
impl Default for OiToVolumeRatio
Source§fn default() -> OiToVolumeRatio
fn default() -> OiToVolumeRatio
Source§impl Indicator for OiToVolumeRatio
impl Indicator for OiToVolumeRatio
Source§type Input = DerivativesTick
type Input = DerivativesTick
f64 for a price, or Candle / Tick).Source§fn update(&mut self, tick: DerivativesTick) -> Option<f64>
fn update(&mut self, tick: DerivativesTick) -> Option<f64>
None if the indicator is still warming up.Source§fn reset(&mut self)
fn reset(&mut self)
Source§fn warmup_period(&self) -> usize
fn warmup_period(&self) -> usize
None output can be produced.Auto Trait Implementations§
impl Freeze for OiToVolumeRatio
impl RefUnwindSafe for OiToVolumeRatio
impl Send for OiToVolumeRatio
impl Sync for OiToVolumeRatio
impl Unpin for OiToVolumeRatio
impl UnsafeUnpin for OiToVolumeRatio
impl UnwindSafe for OiToVolumeRatio
Blanket Implementations§
Source§impl<T> BatchExt for Twhere
T: Indicator,
impl<T> BatchExt for Twhere
T: Indicator,
Source§fn batch(&mut self, inputs: &[Self::Input]) -> Vec<Option<Self::Output>>
fn batch(&mut self, inputs: &[Self::Input]) -> Vec<Option<Self::Output>>
None during warmup) per input.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
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>
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>
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