finance_query/models/corporate/
fund_performance.rs1use serde::{Deserialize, Serialize};
2
3use crate::models::quote::FormattedValue;
4
5#[derive(Default, Debug, Clone, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8#[non_exhaustive]
9pub struct FundPerformance {
10 #[serde(default)]
12 pub max_age: Option<i64>,
13
14 #[serde(default)]
16 pub fund_category_name: Option<String>,
17
18 #[serde(default)]
20 pub performance_overview: Option<PerformanceOverview>,
21
22 #[serde(default)]
24 pub performance_overview_cat: Option<PerformanceOverviewCat>,
25
26 #[serde(default)]
28 pub trailing_returns: Option<TrailingReturns>,
29
30 #[serde(default)]
32 pub trailing_returns_nav: Option<TrailingReturnsNav>,
33
34 #[serde(default)]
36 pub trailing_returns_cat: Option<TrailingReturnsCat>,
37
38 #[serde(default)]
40 pub annual_total_returns: Option<AnnualTotalReturns>,
41
42 #[serde(default)]
44 pub past_quarterly_returns: Option<PastQuarterlyReturns>,
45
46 #[serde(default)]
48 pub risk_overview_statistics: Option<RiskOverviewStatistics>,
49
50 #[serde(default)]
52 pub risk_overview_statistics_cat: Option<RiskOverviewStatisticsCat>,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
57#[serde(rename_all = "camelCase")]
58pub struct PerformanceOverview {
59 #[serde(default)]
61 pub as_of_date: Option<FormattedValue<i64>>,
62
63 #[serde(default)]
65 pub ytd_return_pct: Option<FormattedValue<f64>>,
66
67 #[serde(default)]
69 pub five_yr_avg_return_pct: Option<FormattedValue<f64>>,
70
71 #[serde(default)]
73 pub one_year_total_return: Option<FormattedValue<f64>>,
74
75 #[serde(default)]
77 pub three_year_total_return: Option<FormattedValue<f64>>,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
82#[serde(rename_all = "camelCase")]
83pub struct PerformanceOverviewCat {
84 #[serde(default)]
86 pub ytd_return_pct: Option<FormattedValue<f64>>,
87
88 #[serde(default)]
90 pub five_yr_avg_return_pct: Option<FormattedValue<f64>>,
91
92 #[serde(default)]
94 pub one_year_total_return: Option<FormattedValue<f64>>,
95
96 #[serde(default)]
98 pub three_year_total_return: Option<FormattedValue<f64>>,
99}
100
101#[derive(Debug, Clone, Serialize, Deserialize)]
103#[serde(rename_all = "camelCase")]
104pub struct TrailingReturns {
105 #[serde(default)]
107 pub as_of_date: Option<FormattedValue<i64>>,
108
109 #[serde(default)]
111 pub ytd: Option<FormattedValue<f64>>,
112
113 #[serde(default)]
115 pub one_month: Option<FormattedValue<f64>>,
116
117 #[serde(default)]
119 pub three_month: Option<FormattedValue<f64>>,
120
121 #[serde(default)]
123 pub one_year: Option<FormattedValue<f64>>,
124
125 #[serde(default)]
127 pub three_year: Option<FormattedValue<f64>>,
128
129 #[serde(default)]
131 pub five_year: Option<FormattedValue<f64>>,
132
133 #[serde(default)]
135 pub ten_year: Option<FormattedValue<f64>>,
136
137 #[serde(default)]
139 pub last_bull_mkt: Option<FormattedValue<f64>>,
140
141 #[serde(default)]
143 pub last_bear_mkt: Option<FormattedValue<f64>>,
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize)]
148#[serde(rename_all = "camelCase")]
149pub struct TrailingReturnsNav {
150 #[serde(default)]
152 pub ytd: Option<FormattedValue<f64>>,
153
154 #[serde(default)]
156 pub one_month: Option<FormattedValue<f64>>,
157
158 #[serde(default)]
160 pub three_month: Option<FormattedValue<f64>>,
161
162 #[serde(default)]
164 pub one_year: Option<FormattedValue<f64>>,
165
166 #[serde(default)]
168 pub three_year: Option<FormattedValue<f64>>,
169
170 #[serde(default)]
172 pub five_year: Option<FormattedValue<f64>>,
173
174 #[serde(default)]
176 pub ten_year: Option<FormattedValue<f64>>,
177}
178
179#[derive(Debug, Clone, Serialize, Deserialize)]
181#[serde(rename_all = "camelCase")]
182pub struct TrailingReturnsCat {
183 #[serde(default)]
185 pub ytd: Option<FormattedValue<f64>>,
186
187 #[serde(default)]
189 pub one_month: Option<FormattedValue<f64>>,
190
191 #[serde(default)]
193 pub three_month: Option<FormattedValue<f64>>,
194
195 #[serde(default)]
197 pub one_year: Option<FormattedValue<f64>>,
198
199 #[serde(default)]
201 pub three_year: Option<FormattedValue<f64>>,
202
203 #[serde(default)]
205 pub five_year: Option<FormattedValue<f64>>,
206
207 #[serde(default)]
209 pub ten_year: Option<FormattedValue<f64>>,
210
211 #[serde(default)]
213 pub last_bull_mkt: Option<FormattedValue<f64>>,
214
215 #[serde(default)]
217 pub last_bear_mkt: Option<FormattedValue<f64>>,
218}
219
220#[derive(Debug, Clone, Serialize, Deserialize)]
222#[serde(rename_all = "camelCase")]
223pub struct AnnualTotalReturns {
224 #[serde(default)]
226 pub returns: Option<Vec<AnnualReturn>>,
227
228 #[serde(default)]
230 pub returns_cat: Option<Vec<AnnualReturn>>,
231}
232
233#[derive(Debug, Clone, Serialize, Deserialize)]
235#[serde(rename_all = "camelCase")]
236pub struct AnnualReturn {
237 #[serde(default)]
239 pub year: Option<String>,
240
241 #[serde(default)]
243 pub annual_value: Option<FormattedValue<f64>>,
244}
245
246#[derive(Debug, Clone, Serialize, Deserialize)]
248#[serde(rename_all = "camelCase")]
249pub struct PastQuarterlyReturns {
250 #[serde(default)]
252 pub returns: Option<Vec<serde_json::Value>>,
253}
254
255#[derive(Debug, Clone, Serialize, Deserialize)]
257#[serde(rename_all = "camelCase")]
258pub struct RiskOverviewStatistics {
259 #[serde(default)]
261 pub risk_statistics: Option<Vec<RiskStatistic>>,
262}
263
264#[derive(Debug, Clone, Serialize, Deserialize)]
266#[serde(rename_all = "camelCase")]
267pub struct RiskOverviewStatisticsCat {
268 #[serde(default)]
270 pub risk_statistics_cat: Option<Vec<RiskStatistic>>,
271}
272
273#[derive(Debug, Clone, Serialize, Deserialize)]
275#[serde(rename_all = "camelCase")]
276pub struct RiskStatistic {
277 #[serde(default)]
279 pub year: Option<String>,
280
281 #[serde(default)]
283 pub alpha: Option<FormattedValue<f64>>,
284
285 #[serde(default)]
287 pub beta: Option<FormattedValue<f64>>,
288
289 #[serde(default)]
291 pub mean_annual_return: Option<FormattedValue<f64>>,
292
293 #[serde(default)]
295 pub r_squared: Option<FormattedValue<f64>>,
296
297 #[serde(default)]
299 pub std_dev: Option<FormattedValue<f64>>,
300
301 #[serde(default)]
303 pub sharpe_ratio: Option<FormattedValue<f64>>,
304
305 #[serde(default)]
307 pub treynor_ratio: Option<FormattedValue<f64>>,
308}