use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use crate::backtesting::result::{BacktestResult, EquityPoint, PerformanceMetrics};
#[non_exhaustive]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AllocationSnapshot {
pub timestamp: i64,
pub cash: f64,
pub positions: HashMap<String, f64>,
}
impl AllocationSnapshot {
pub fn total_equity(&self) -> f64 {
self.cash + self.positions.values().sum::<f64>()
}
}
#[non_exhaustive]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PortfolioResult {
pub symbols: HashMap<String, BacktestResult>,
pub portfolio_equity_curve: Vec<EquityPoint>,
pub portfolio_metrics: PerformanceMetrics,
pub initial_capital: f64,
pub final_equity: f64,
pub allocation_history: Vec<AllocationSnapshot>,
}