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§
Trait Implementations§
Source§impl Clone for OiToVolumeRatio
impl Clone for OiToVolumeRatio
Source§fn clone(&self) -> OiToVolumeRatio
fn clone(&self) -> OiToVolumeRatio
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 Debug for OiToVolumeRatio
impl Debug for OiToVolumeRatio
Source§impl Default for OiToVolumeRatio
impl Default for OiToVolumeRatio
Source§fn default() -> OiToVolumeRatio
fn default() -> OiToVolumeRatio
Returns the “default value” for a type. Read more
Source§impl Indicator for OiToVolumeRatio
impl Indicator for OiToVolumeRatio
Source§type Input = DerivativesTick
type Input = DerivativesTick
Type of one input data point (typically
f64 for a price, or Candle / Tick).Source§fn update(&mut self, tick: DerivativesTick) -> Option<f64>
fn update(&mut self, tick: DerivativesTick) -> Option<f64>
Feed one new data point into the indicator and return the freshly computed
output, or
None if the indicator is still warming up.Source§fn reset(&mut self)
fn reset(&mut self)
Reset all internal state, leaving the indicator equivalent to a freshly
constructed instance with the same parameters.
Source§fn warmup_period(&self) -> usize
fn warmup_period(&self) -> usize
Number of inputs required before the first non-
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>>
Run the indicator over a slice of inputs in order, returning one output (or
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
Mutably borrows from an owned value. Read more
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