Skip to main content

quant_metrics/
lib.rs

1#![cfg_attr(
2    test,
3    allow(
4        clippy::expect_used,
5        clippy::unwrap_used,
6        clippy::panic,
7        clippy::indexing_slicing
8    )
9)]
10
11//! Pure performance statistics library for trading.
12//!
13//! All functions are pure math - no I/O, no async, WASM-compatible.
14//!
15//! # Example
16//!
17//! ```
18//! use quant_metrics::{total_return, sharpe_ratio, max_drawdown};
19//! use rust_decimal_macros::dec;
20//!
21//! let equity = vec![dec!(10000), dec!(10150), dec!(10230), dec!(10080), dec!(10350)];
22//! let rf_rate = dec!(0.02); // 2% annual risk-free rate
23//!
24//! let ret = total_return(&equity);
25//! let sharpe = sharpe_ratio(&equity, rf_rate, 252); // 252 trading days
26//! let max_dd = max_drawdown(&equity);
27//! ```
28
29pub mod analytics;
30pub mod cointegration;
31pub mod composition;
32mod drawdown;
33mod error;
34mod kelly;
35mod math;
36mod returns;
37mod risk_adjusted;
38pub mod risk_metrics;
39mod rolling;
40mod trading;
41
42pub use drawdown::{drawdown_series, max_drawdown, max_drawdown_duration, recovery_time};
43pub use error::MetricsError;
44pub use kelly::{compute_kelly_fraction, compute_kelly_inputs, KellyFraction, KellyMode};
45pub use returns::{annualized_return, cagr, total_return};
46pub use risk_adjusted::{calmar_ratio, information_ratio, sharpe_ratio, sortino_ratio};
47pub use rolling::RollingWindow;
48pub use trading::{avg_loss, avg_win, expectancy, profit_factor, win_rate};