pub struct TradeFeatures {Show 52 fields
pub tick_price: Decimal,
pub tick_qty: Decimal,
pub tick_direction: i8,
pub signed_tick_price: Decimal,
pub plus_tick_price: Decimal,
pub minus_tick_price: Decimal,
pub signed_tick_qty: Decimal,
pub plus_tick_qty: Decimal,
pub minus_tick_qty: Decimal,
pub weighted_tick_price: Decimal,
pub log_tick_price: Decimal,
pub tick_price_ratio: Decimal,
pub tick_price_power: Decimal,
pub relative_tick_price: Decimal,
pub log_return: Decimal,
pub percent_return: Decimal,
pub volume_weighted_tick_price: Decimal,
pub tick_price_acceleration: Decimal,
pub tick_price_momentum: Decimal,
pub relative_strength: Decimal,
pub tick_price_skewness: Decimal,
pub tick_price_kurtosis: Decimal,
pub tick_price_volatility: Decimal,
pub tick_price_entropy: Decimal,
pub tick_size: Decimal,
pub tick_type: i8,
pub tick_volume: Decimal,
pub tick_value: Decimal,
pub tick_efficiency: Decimal,
pub tick_impact: Decimal,
pub tick_aggressiveness: i8,
pub tick_frequency: Decimal,
pub tick_duration: Decimal,
pub tick_intensity: Decimal,
pub tick_persistence: Decimal,
pub tick_reversion: Decimal,
pub tick_momentum: Decimal,
pub tick_trend: Decimal,
pub tick_signal: Decimal,
pub tick_noise: Decimal,
pub tick_correlation: Decimal,
pub tick_beta: Decimal,
pub tick_alpha: Decimal,
pub tick_sharpe_ratio: Decimal,
pub tick_sortino_ratio: Decimal,
pub tick_information_ratio: Decimal,
pub tick_treynor_ratio: Decimal,
pub tick_jensen_alpha: Decimal,
pub tick_max_drawdown: Decimal,
pub tick_calmar_ratio: Decimal,
pub tick_sterling_ratio: Decimal,
pub tick_burke_ratio: Decimal,
}Expand description
Trade-based features for tick data analysis
This struct contains comprehensive microstructure features for high-frequency trading analysis. Features are organized by implementation status and complexity:
§Implementation Status (67 total fields)
§✅ Fully Implemented (16 fields)
Basic Trade Data (5 fields):
tick_price,tick_qty,tick_direction,tick_value,tick_volume
Immediate Calculations (8 fields):
signed_tick_price,plus_tick_price,minus_tick_pricesigned_tick_qty,plus_tick_qty,minus_tick_qtyweighted_tick_price,log_tick_price
Priority 1 - Immediate Features (3 fields):
tick_price_power,tick_efficiency,tick_impact
§🔶 Partially Implemented (14 fields)
Requires with_previous_trade() (11 fields):
tick_price_ratio,relative_tick_price,log_return,percent_returntick_size,tick_type,tick_frequency,tick_duration,tick_intensityvolume_weighted_tick_price,relative_strength
Requires with_trade_history() (4 fields):
tick_price_volatility,tick_price_momentum,tick_trend,tick_price_acceleration
§❌ Not Implemented (37 fields)
Priority 3 - Requires Rolling Windows (13 fields):
tick_price_skewness,tick_price_kurtosis,tick_price_entropytick_persistence,tick_reversion,tick_momentumtick_signal,tick_noise,tick_correlation,tick_beta,tick_alphatick_aggressiveness(basic version implemented)
Priority 4 - Portfolio-Level Metrics (9 fields):
tick_sharpe_ratio,tick_sortino_ratio,tick_information_ratiotick_treynor_ratio,tick_jensen_alpha,tick_max_drawdowntick_calmar_ratio,tick_sterling_ratio,tick_burke_ratio
§Usage Patterns
use rust_decimal_macros::dec;
// Basic usage - immediate calculations only
let basic = TradeFeatures::new(dec!(100.5), dec!(10), OrderSide::Buy);
// With previous trade data
let enhanced = TradeFeatures::new(dec!(100.5), dec!(10), OrderSide::Buy)
.with_previous_trade(dec!(100.0), dec!(8), 1000000000, 1000001000);
// With full historical data
let prices = vec![dec!(99.5), dec!(100.0), dec!(100.2), dec!(100.5)];
let qtys = vec![dec!(5), dec!(8), dec!(12), dec!(10)];
let full = TradeFeatures::new(dec!(100.5), dec!(10), OrderSide::Buy)
.with_previous_trade(dec!(100.0), dec!(8), 1000000000, 1000001000)
.with_trade_history(&prices, &qtys);§Memory Usage
Current: 67 × 16 bytes = ~1KB per instance (many fields are zeros) Proposed: Split into focused structs to reduce memory waste
§Future Refactoring (Recommended)
Consider splitting into specialized structs:
CoreTradeFeatures(basic trade data + immediate calculations)TradeStatistics(requires historical data)TradePerformanceMetrics(portfolio-level metrics)TradeMicrostructure(advanced market structure features)
Fields§
§tick_price: DecimalThe price of the tick.
tick_qty: DecimalThe quantity of the tick.
tick_direction: i8The direction of the tick (1 for buy, -1 for sell).
signed_tick_price: DecimalThe signed price of the tick.
plus_tick_price: DecimalThe price of the tick if it was a buy.
minus_tick_price: DecimalThe price of the tick if it was a sell.
signed_tick_qty: DecimalThe signed quantity of the tick.
plus_tick_qty: DecimalThe quantity of the tick if it was a buy.
minus_tick_qty: DecimalThe quantity of the tick if it was a sell.
weighted_tick_price: DecimalThe weighted price of the tick.
log_tick_price: DecimalThe logarithm of the tick price.
tick_price_ratio: DecimalThe ratio of the tick price to the previous tick price.
tick_price_power: DecimalThe power of the tick price.
relative_tick_price: DecimalThe relative tick price.
log_return: DecimalThe log return of the tick price.
percent_return: DecimalThe percent return of the tick price.
volume_weighted_tick_price: DecimalThe volume-weighted tick price.
tick_price_acceleration: DecimalThe acceleration of the tick price.
tick_price_momentum: DecimalThe momentum of the tick price.
relative_strength: DecimalThe relative strength of the tick price.
tick_price_skewness: DecimalThe skewness of the tick price.
tick_price_kurtosis: DecimalThe kurtosis of the tick price.
tick_price_volatility: DecimalThe volatility of the tick price.
tick_price_entropy: DecimalThe entropy of the tick price.
tick_size: DecimalThe tick size.
tick_type: i8The tick type (1 for uptick, -1 for downtick, 0 for no change).
tick_volume: DecimalThe tick volume.
tick_value: DecimalThe tick value.
tick_efficiency: DecimalThe tick efficiency.
tick_impact: DecimalThe tick impact.
tick_aggressiveness: i8The aggressiveness of the tick (1 for aggressive, 0 for passive).
tick_frequency: DecimalThe tick frequency.
tick_duration: DecimalThe tick duration.
tick_intensity: DecimalThe tick intensity.
tick_persistence: DecimalThe tick persistence.
tick_reversion: DecimalThe tick reversion.
tick_momentum: DecimalThe tick momentum.
tick_trend: DecimalThe tick trend.
tick_signal: DecimalThe tick signal.
tick_noise: DecimalThe tick noise.
tick_correlation: DecimalThe tick correlation.
tick_beta: DecimalThe tick beta.
tick_alpha: DecimalThe tick alpha.
tick_sharpe_ratio: DecimalThe tick sharpe ratio.
tick_sortino_ratio: DecimalThe tick sortino ratio.
tick_information_ratio: DecimalThe tick information ratio.
tick_treynor_ratio: DecimalThe tick treynor ratio.
tick_jensen_alpha: DecimalThe tick jensen alpha.
tick_max_drawdown: DecimalThe tick maximum drawdown.
tick_calmar_ratio: DecimalThe tick calmar ratio.
tick_sterling_ratio: DecimalThe tick sterling ratio.
tick_burke_ratio: DecimalThe tick burke ratio.
Implementations§
Source§impl TradeFeatures
impl TradeFeatures
Sourcepub fn new(price: Decimal, qty: Decimal, side: OrderSide) -> Self
pub fn new(price: Decimal, qty: Decimal, side: OrderSide) -> Self
Create a new TradeFeatures instance with calculated trade features
Sourcepub fn with_previous_trade(
self,
prev_price: Decimal,
prev_qty: Decimal,
prev_timestamp_ns: u64,
current_timestamp_ns: u64,
) -> Self
pub fn with_previous_trade( self, prev_price: Decimal, prev_qty: Decimal, prev_timestamp_ns: u64, current_timestamp_ns: u64, ) -> Self
Update features that require historical data
This method should be called when previous trade data is available to calculate features that depend on price history, trade patterns, etc.
Implemented features:
- tick_price_ratio, relative_tick_price, log_return, percent_return
- tick_size, tick_type (price movement direction)
- tick_frequency, tick_duration, tick_intensity (time-based)
- volume_weighted_tick_price
- relative_strength (price momentum)
Sourcepub fn with_trade_history(
self,
price_history: &[Decimal],
qty_history: &[Decimal],
) -> Self
pub fn with_trade_history( self, price_history: &[Decimal], qty_history: &[Decimal], ) -> Self
Update features with a rolling window of historical trades
This method calculates statistical features that require multiple data points such as volatility, skewness, kurtosis, and various risk metrics.
Implemented features:
- tick_price_volatility (standard deviation of prices)
- tick_price_momentum (price change over window)
- tick_trend (linear regression slope approximation)
- tick_price_acceleration (second derivative of price changes)
Minimum requirements:
- price_history.len() >= 2 for basic calculations
- price_history.len() >= 3 for trend and acceleration
Trait Implementations§
Source§impl Clone for TradeFeatures
impl Clone for TradeFeatures
Source§fn clone(&self) -> TradeFeatures
fn clone(&self) -> TradeFeatures
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
source. Read more