1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//! # Forecast Trade
//!
//! A Rust library for financial time series forecasting and trading strategy development.
//!
//! ## Features
//!
//! - Time series data handling (OHLCV data)
//! - Advanced forecasting models from OxiDiviner:
//! - **Exponential Smoothing** (Simple, Holt Linear, Holt-Winters)
//! - **ETS** (Error, Trend, Seasonal) state space models
//! - **ARIMA/SARIMA** (AutoRegressive Integrated Moving Average with seasonal support)
//! - **AR** (AutoRegressive) models
//! - **GARCH** (Generalized AutoRegressive Conditional Heteroskedasticity) for volatility
//! - **Moving Average** models with adaptive window optimization
//! - Trading strategies (Mean Reversion, Trend Following, Volatility Breakout, ARIMA, Volatility)
//! - Strategy backtesting with performance metrics
//! - Support for both daily and minute-level data
//! - Advanced model comparison and automatic selection capabilities
//!
//! ## Advanced OxiDiviner Integration
//!
//! This library now provides **full integration** with OxiDiviner v0.4.3, including all advanced variants:
//!
//! ### Core Models
//! - **Simple ES**: Basic exponential smoothing for stable series
//! - **Holt Linear**: Linear trend modeling
//! - **Holt-Winters**: Seasonal pattern forecasting
//! - **ETS**: Error-Trend-Seasonal state space models with automatic component selection
//! - **ARIMA**: Full ARIMA(p,d,q) support with seasonal extensions
//! - **AR**: AutoRegressive models for temporal dependencies
//! - **GARCH**: Volatility modeling and risk forecasting
//!
//! ### Easy API
//! ```rust
//! use forecast_trade::models::oxidiviner::easy;
//!
//! // Automatic model selection with performance comparison
//! let (forecast, best_model) = easy::auto_forecast(dates, values, 5)?;
//!
//! // Advanced model comparison with metrics
//! let comparison = easy::model_comparison(dates, values, 5, 0.8)?;
//!
//! // Specific advanced models
//! let ets_forecast = easy::ets_forecast(dates, values, 5, Some(12))?;
//! let ar_forecast = easy::ar_forecast(dates, values, 5, Some(3))?;
//! let garch_forecast = easy::garch_forecast(dates, values, 5, Some(1), Some(1))?;
//! ```
//!
//! ## Time Granularity Support
//!
//! This library supports both daily and minute-level data through the `TimeGranularity` enum:
//!
//! ```rust
//! pub enum TimeGranularity {
//! Daily,
//! Minute,
//! }
//! ```
//!
//! Trading strategies automatically adjust parameters based on the time granularity:
//!
//! - **Parameter Scaling**: Window sizes, momentum thresholds, and other parameters
//! - **Transaction Costs**: Different commission and slippage models based on granularity
//! - **Direct Integration**: Work with both `crate::day_trade::DailyOhlcv` and `crate::minute_trade::MinuteOhlcv` types
//!
//! ## Quick Start
//!
//! ```rust
//! use forecast_trade::data::DataLoader;
//! use forecast_trade::models::oxidiviner::ExponentialSmoothingAdapter;
//! use forecast_trade::strategies::arima_strategy::ArimaStrategy;
//! use forecast_trade::strategies::{ForecastStrategy, TimeGranularity};
//!
//! // Load data
//! let data = DataLoader::from_csv("data.csv")?;
//!
//! // Create a forecasting model
//! let model = ExponentialSmoothingAdapter::new(0.7)?;
//!
//! // Create a trading strategy for daily data
//! let daily_strategy = ArimaStrategy::new_with_granularity(
//! model.clone(),
//! 2.0, // Threshold
//! TimeGranularity::Daily
//! )?;
//!
//! // Generate trading signals
//! let signals = daily_strategy.generate_signals(&data)?;
//!
//! // Run backtest
//! let results = daily_strategy.backtest(&data, 10000.0)?;
//! ```
// Re-export common types
pub use crate;
pub use crateForecastError;
// Re-export from models
pub use ;
pub use ;
// Re-export from strategies
pub use ;
// Re-export common utilities
pub use run_backtest;
// Version information
pub const VERSION: &str = env!;
pub const NAME: &str = env!;