pub struct PinEstimate {
pub alpha: f64,
pub mu: f64,
pub epsilon_b: f64,
pub epsilon_s: f64,
}Expand description
Easley et al. (1996) PIN model parameters estimated via method-of-moments.
Parameters:
alpha: probability of an information event (0 to 1).mu: arrival rate of informed traders given an event.epsilon_b: uninformed buy-order arrival rate.epsilon_s: uninformed sell-order arrival rate.
§Example
use fin_primitives::microstructure::PinEstimate;
let buys = vec![80u64, 90, 85];
let sells = vec![20u64, 10, 15];
let pin = PinEstimate::from_trade_counts(&buys, &sells);
let p = pin.pin_probability();
assert!((0.0..=1.0).contains(&p));Fields§
§alpha: f64Probability of an information event occurring.
mu: f64Informed trader arrival rate conditional on an event.
epsilon_b: f64Uninformed buy-order arrival rate.
epsilon_s: f64Uninformed sell-order arrival rate.
Implementations§
Source§impl PinEstimate
impl PinEstimate
Sourcepub fn from_trade_counts(buy_days: &[u64], sell_days: &[u64]) -> Self
pub fn from_trade_counts(buy_days: &[u64], sell_days: &[u64]) -> Self
Estimate PIN parameters from daily buy/sell trade counts via method-of-moments.
Method-of-moments approximation:
epsilon_b ≈ mean(min(buys, sells))(uninformed baseline)epsilon_s ≈ mean(min(buys, sells))mu ≈ mean(|buys - sells|)(excess flow attributable to informed)alpha ≈ fraction of days with buys > sells(event probability)
Returns all-zero parameters when both slices are empty.
Sourcepub fn pin_probability(&self) -> f64
pub fn pin_probability(&self) -> f64
Compute the PIN probability.
PIN = alpha * mu / (alpha * mu + epsilon_b + epsilon_s)
Returns 0.0 when the denominator is zero.
Trait Implementations§
Source§impl Clone for PinEstimate
impl Clone for PinEstimate
impl Copy for PinEstimate
Auto Trait Implementations§
impl Freeze for PinEstimate
impl RefUnwindSafe for PinEstimate
impl Send for PinEstimate
impl Sync for PinEstimate
impl Unpin for PinEstimate
impl UnsafeUnpin for PinEstimate
impl UnwindSafe for PinEstimate
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