MCPcopy Create free account
hub / github.com/Open-Quant/openquant / bar_features

Method bar_features

crates/openquant/src/microstructural_features.rs:711–743  ·  view source on GitHub ↗
(&self, date_time: NaiveDateTime)

Source from the content-addressed store, hash-verified

709 out.push(get_plug_in_entropy(message, 1));
710 out.push(get_lempel_ziv_entropy(message));
711 out.push(get_konto_entropy(message, 0));
712 }
713
714 fn bar_features(&self, date_time: NaiveDateTime) -> Vec<f64> {
715 let mut features = vec![
716 date_time.and_utc().timestamp_millis() as f64,
717 get_avg_tick_size(&self.trade_size),
718 self.tick_rule.iter().sum::<f64>(),
719 vwap(&self.dollar_size, &self.trade_size),
720 get_trades_based_kyle_lambda(&self.price_diff, &self.trade_size, &self.tick_rule),
721 get_trades_based_amihud_lambda(&self.log_ret, &self.dollar_size),
722 get_trades_based_hasbrouck_lambda(&self.log_ret, &self.dollar_size, &self.tick_rule),
723 ];
724
725 let tick_msg =
726 encode_tick_rule_array(&self.tick_rule.iter().map(|v| *v as i32).collect::<Vec<_>>())
727 .unwrap_or_default();
728 self.encode_entropy_features(&tick_msg, &mut features);
729
730 if let Some(enc) = &self.volume_encoding {
731 let msg = encode_array(&self.trade_size, enc);
732 self.encode_entropy_features(&msg, &mut features);
733 }
734 if let Some(enc) = &self.pct_encoding {
735 let msg = encode_array(&self.log_ret, enc);
736 self.encode_entropy_features(&msg, &mut features);
737 }
738 features
739 }
740
741 pub fn get_features_from_csv(&mut self, trades_path: &str) -> Result<Vec<Vec<f64>>, String> {
742 let mut rdr = csv::ReaderBuilder::new()
743 .has_headers(true)
744 .from_path(trades_path)
745 .map_err(|e| e.to_string())?;
746 let mut bars: Vec<Vec<f64>> = Vec::new();

Callers 1

get_features_from_csvMethod · 0.80

Calls 8

get_avg_tick_sizeFunction · 0.85
vwapFunction · 0.85
encode_tick_rule_arrayFunction · 0.85
encode_arrayFunction · 0.85

Tested by

no test coverage detected