quant-primitives 0.7.0

Pure trading primitives — candles, intervals, symbols, currencies, asset taxonomy
Documentation
#![cfg_attr(
    test,
    allow(
        clippy::expect_used,
        clippy::unwrap_used,
        clippy::panic,
        clippy::indexing_slicing
    )
)]

//! Pure trading primitives — cross-cutting value objects for quantitative finance.
//!
//! Leaf crate: no internal dependencies. Only external: chrono, rust_decimal, serde, thiserror.
//!
//! # Provided types
//!
//! - [`Candle`] — OHLCV bar with timestamp
//! - [`Interval`] — time granularity (minute, hour, day, week)
//! - [`Symbol`] — trading pair (e.g., BTC/USDT)
//! - [`Ticker`] — universal asset identifier with venue/asset class metadata
//! - [`Currency`] — currency code (e.g., USD, BTC)
//! - [`PositionConfig`] — position sizing rules
//! - [`precision_boundary`] — canonical `Decimal ↔ f64` crossings with rich error enum

mod bps;
mod candle;
pub mod crypto_classifier;
mod currency;
mod fraction;
mod interval;
mod percentage;
mod position_config;
pub mod precision_boundary;
mod symbol;
pub mod taxonomy;

pub use bps::{Bps, BpsError};
pub use candle::{Candle, CandleError, CandleQuality, CandleRange, VolumeSource};
pub use currency::Currency;
pub use fraction::{Fraction, FractionError};
pub use interval::{interval_duration, Interval, IntervalError};
pub use percentage::{Percentage, PercentageError};
pub use position_config::{PositionConfig, PositionConfigError};
pub use precision_boundary::{
    decimal_to_f64_checked, f64_to_decimal_checked, NonFiniteKind, PrecisionBoundaryError,
};
pub use symbol::{Symbol, SymbolError};
pub use taxonomy::{AssetClass, AssetType, Derivative, Ticker, TickerError, Underlying, VenueType};