chapaty 0.1.4

A software to backtest trading strategies.
Documentation
use std::collections::HashMap;

use polars::prelude::DataFrame;
use serde::{Deserialize, Serialize};

use crate::{data_frame_operations::io_operations::save_df_as_csv, MarketKind};

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PerformanceReportAggMarkets {
    pub markets: Vec<MarketKind>,
    pub report: DataFrame,
}

impl PerformanceReportAggMarkets {
    pub fn save_as_csv(&self, file_name: &str) {
        save_df_as_csv(
            &mut self.report.clone(),
            &format!("{file_name}_all_markets_performance_report"),
        )
    }
}


#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PerformanceReportsAggYears {
    pub markets: Vec<MarketKind>,
    pub reports: HashMap<MarketKind, DataFrame>,
}

impl PerformanceReportsAggYears {
    pub fn save_as_csv(&self, file_name: &str) {
        self.reports
            .iter()
            .for_each(|(market, performance_report)| {
                save_df_as_csv(
                    &mut performance_report.clone(),
                    &format!("{file_name}_{market}_all_years_performance_report"),
                )
            })
    }
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PerformanceReports {
    pub markets: Vec<MarketKind>,
    pub reports: HashMap<MarketKind, DataFrame>,
}

impl PerformanceReports {
    pub fn save_as_csv(&self, file_name: &str) {
        self.reports
            .iter()
            .for_each(|(market, performance_report)| {
                save_df_as_csv(
                    &mut performance_report.clone(),
                    &format!("{file_name}_{market}_performance_report"),
                )
            })
    }
}