use serde::{Deserialize, Serialize};
use super::FormattedValue;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FundPerformance {
#[serde(default)]
pub max_age: Option<i64>,
#[serde(default)]
pub fund_category_name: Option<String>,
#[serde(default)]
pub performance_overview: Option<PerformanceOverview>,
#[serde(default)]
pub performance_overview_cat: Option<PerformanceOverviewCat>,
#[serde(default)]
pub trailing_returns: Option<TrailingReturns>,
#[serde(default)]
pub trailing_returns_nav: Option<TrailingReturnsNav>,
#[serde(default)]
pub trailing_returns_cat: Option<TrailingReturnsCat>,
#[serde(default)]
pub annual_total_returns: Option<AnnualTotalReturns>,
#[serde(default)]
pub past_quarterly_returns: Option<PastQuarterlyReturns>,
#[serde(default)]
pub risk_overview_statistics: Option<RiskOverviewStatistics>,
#[serde(default)]
pub risk_overview_statistics_cat: Option<RiskOverviewStatisticsCat>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PerformanceOverview {
#[serde(default)]
pub as_of_date: Option<FormattedValue<i64>>,
#[serde(default)]
pub ytd_return_pct: Option<FormattedValue<f64>>,
#[serde(default)]
pub five_yr_avg_return_pct: Option<FormattedValue<f64>>,
#[serde(default)]
pub one_year_total_return: Option<FormattedValue<f64>>,
#[serde(default)]
pub three_year_total_return: Option<FormattedValue<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PerformanceOverviewCat {
#[serde(default)]
pub ytd_return_pct: Option<FormattedValue<f64>>,
#[serde(default)]
pub five_yr_avg_return_pct: Option<FormattedValue<f64>>,
#[serde(default)]
pub one_year_total_return: Option<FormattedValue<f64>>,
#[serde(default)]
pub three_year_total_return: Option<FormattedValue<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TrailingReturns {
#[serde(default)]
pub as_of_date: Option<FormattedValue<i64>>,
#[serde(default)]
pub ytd: Option<FormattedValue<f64>>,
#[serde(default)]
pub one_month: Option<FormattedValue<f64>>,
#[serde(default)]
pub three_month: Option<FormattedValue<f64>>,
#[serde(default)]
pub one_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub three_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub five_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub ten_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub last_bull_mkt: Option<FormattedValue<f64>>,
#[serde(default)]
pub last_bear_mkt: Option<FormattedValue<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TrailingReturnsNav {
#[serde(default)]
pub ytd: Option<FormattedValue<f64>>,
#[serde(default)]
pub one_month: Option<FormattedValue<f64>>,
#[serde(default)]
pub three_month: Option<FormattedValue<f64>>,
#[serde(default)]
pub one_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub three_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub five_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub ten_year: Option<FormattedValue<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TrailingReturnsCat {
#[serde(default)]
pub ytd: Option<FormattedValue<f64>>,
#[serde(default)]
pub one_month: Option<FormattedValue<f64>>,
#[serde(default)]
pub three_month: Option<FormattedValue<f64>>,
#[serde(default)]
pub one_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub three_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub five_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub ten_year: Option<FormattedValue<f64>>,
#[serde(default)]
pub last_bull_mkt: Option<FormattedValue<f64>>,
#[serde(default)]
pub last_bear_mkt: Option<FormattedValue<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AnnualTotalReturns {
#[serde(default)]
pub returns: Option<Vec<AnnualReturn>>,
#[serde(default)]
pub returns_cat: Option<Vec<AnnualReturn>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AnnualReturn {
#[serde(default)]
pub year: Option<String>,
#[serde(default)]
pub annual_value: Option<FormattedValue<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PastQuarterlyReturns {
#[serde(default)]
pub returns: Option<Vec<serde_json::Value>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RiskOverviewStatistics {
#[serde(default)]
pub risk_statistics: Option<Vec<RiskStatistic>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RiskOverviewStatisticsCat {
#[serde(default)]
pub risk_statistics_cat: Option<Vec<RiskStatistic>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RiskStatistic {
#[serde(default)]
pub year: Option<String>,
#[serde(default)]
pub alpha: Option<FormattedValue<f64>>,
#[serde(default)]
pub beta: Option<FormattedValue<f64>>,
#[serde(default)]
pub mean_annual_return: Option<FormattedValue<f64>>,
#[serde(default)]
pub r_squared: Option<FormattedValue<f64>>,
#[serde(default)]
pub std_dev: Option<FormattedValue<f64>>,
#[serde(default)]
pub sharpe_ratio: Option<FormattedValue<f64>>,
#[serde(default)]
pub treynor_ratio: Option<FormattedValue<f64>>,
}