Skip to main content

finance_query/backtesting/portfolio/
mod.rs

1//! Multi-symbol portfolio backtesting.
2//!
3//! Runs multiple strategies concurrently on a shared capital pool.
4//!
5//! # Quick Start
6//!
7//! ```ignore
8//! use finance_query::backtesting::portfolio::{
9//!     PortfolioConfig, PortfolioEngine, SymbolData, RebalanceMode,
10//! };
11//! use finance_query::backtesting::{BacktestConfig, SmaCrossover};
12//!
13//! let config = PortfolioConfig::new(BacktestConfig::default())
14//!     .max_total_positions(3)
15//!     .rebalance(RebalanceMode::EqualWeight);
16//!
17//! let symbol_data = vec![
18//!     SymbolData::new("AAPL", aapl_candles),
19//!     SymbolData::new("MSFT", msft_candles),
20//!     SymbolData::new("GOOG", goog_candles),
21//! ];
22//!
23//! let result = PortfolioEngine::new(config)
24//!     .run(&symbol_data, |_sym| SmaCrossover::new(10, 50))
25//!     .unwrap();
26//!
27//! println!("Portfolio return: {:.2}%", result.portfolio_metrics.total_return_pct);
28//! ```
29
30mod config;
31mod engine;
32mod result;
33
34pub use config::{PortfolioConfig, RebalanceMode};
35pub use engine::{PortfolioEngine, SymbolData};
36pub use result::{AllocationSnapshot, PortfolioResult};