use crate::statistic::summary::TradingSummary;
use rust_decimal::Decimal;
use smol_str::SmolStr;
use std::time::Duration;
#[derive(Debug)]
pub struct MultiBacktestSummary<Interval> {
pub num_backtests: usize,
pub duration: Duration,
pub summaries: Vec<BacktestSummary<Interval>>,
}
impl<Interval> MultiBacktestSummary<Interval> {
pub fn new<SummaryIter>(duration: Duration, summary_iter: SummaryIter) -> Self
where
SummaryIter: IntoIterator<Item = BacktestSummary<Interval>>,
{
let summaries = summary_iter.into_iter().collect::<Vec<_>>();
Self {
num_backtests: summaries.len(),
duration,
summaries,
}
}
}
#[derive(Debug, PartialEq)]
pub struct BacktestSummary<Interval> {
pub id: SmolStr,
pub risk_free_return: Decimal,
pub trading_summary: TradingSummary<Interval>,
}