market_data_source/
lib.rs

1//! # Market Data Source
2//!
3//! A Rust library for generating realistic synthetic market data with unparalleled configurability.
4//! 
5//! ## Features
6//! 
7//! - Configurable market data generation with statistical controls
8//! - Support for OHLC candles and tick data
9//! - Random walk with drift algorithm
10//! - Builder pattern for easy configuration
11//! - Deterministic generation with seed support
12//!
13//! ## Quick Start
14//!
15//! ```no_run
16//! use market_data_source::{MarketDataGenerator, GeneratorConfig};
17//!
18//! // Create a generator with default config
19//! let mut generator = MarketDataGenerator::new();
20//! 
21//! // Generate a series of OHLC candles
22//! let candles = generator.generate_series(100);
23//! 
24//! for candle in &candles[..5] {
25//!     println!("{:?}", candle);
26//! }
27//! ```
28
29// Public modules
30pub mod config;
31pub mod generator;
32pub mod types;
33
34// Environment configuration module (conditional on feature flag)
35#[cfg(feature = "dotenvy")]
36pub mod env;
37
38// Export module (conditional on feature flags)
39#[cfg(any(feature = "csv_export", feature = "json_export", feature = "couchdb", feature = "png_export"))]
40pub mod export;
41
42// Re-export main types for convenience
43pub use config::{GeneratorConfig, ConfigBuilder, TrendDirection};
44pub use generator::MarketDataGenerator;
45pub use types::{OHLC, Tick, TimeInterval, Volume};
46
47// Re-export export functionality when feature is enabled
48#[cfg(feature = "csv_export")]
49pub use export::{to_csv_ohlc, to_csv_ticks};
50
51// Module for algorithms (internal implementation details)
52mod algorithms;
53
54// Regime detection module (conditional on feature flag)
55#[cfg(feature = "regimes")]
56pub mod regimes;
57
58// Re-export regime types when feature is enabled
59#[cfg(feature = "regimes")]
60pub use regimes::{MarketRegime, RegimeController, RegimeSchedule, RegimeSegment, ScheduleInfo};
61
62// Re-export generator regime types when feature is enabled
63#[cfg(feature = "regimes")]
64pub use generator::{RegimeOHLC, ControlledRegimeOHLC};
65
66// Server module (conditional on feature flag)
67#[cfg(feature = "api-server")]
68pub mod server;
69