1use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
7#[serde(rename_all = "camelCase")]
8pub struct KeyMetricsTtm {
9 #[serde(deserialize_with = "super::non_empty_string")]
10 pub symbol: String,
11 pub market_cap: Option<f64>,
12 #[serde(rename = "enterpriseValueTTM")]
13 pub enterprise_value_ttm: Option<f64>,
14 #[serde(rename = "evToSalesTTM")]
15 pub ev_to_sales_ttm: Option<f64>,
16 #[serde(rename = "evToOperatingCashFlowTTM")]
17 pub ev_to_operating_cash_flow_ttm: Option<f64>,
18 #[serde(rename = "evToFreeCashFlowTTM")]
19 pub ev_to_free_cash_flow_ttm: Option<f64>,
20 #[serde(rename = "evToEBITDATTM")]
21 pub ev_to_ebitda_ttm: Option<f64>,
22 #[serde(rename = "netDebtToEBITDATTM")]
23 pub net_debt_to_ebitda_ttm: Option<f64>,
24 #[serde(rename = "currentRatioTTM")]
25 pub current_ratio_ttm: Option<f64>,
26 #[serde(rename = "incomeQualityTTM")]
27 pub income_quality_ttm: Option<f64>,
28 #[serde(rename = "grahamNumberTTM")]
29 pub graham_number_ttm: Option<f64>,
30 #[serde(rename = "grahamNetNetTTM")]
31 pub graham_net_net_ttm: Option<f64>,
32 #[serde(rename = "taxBurdenTTM")]
33 pub tax_burden_ttm: Option<f64>,
34 #[serde(rename = "interestBurdenTTM")]
35 pub interest_burden_ttm: Option<f64>,
36 #[serde(rename = "workingCapitalTTM")]
37 pub working_capital_ttm: Option<f64>,
38 #[serde(rename = "investedCapitalTTM")]
39 pub invested_capital_ttm: Option<f64>,
40 #[serde(rename = "returnOnAssetsTTM")]
41 pub return_on_assets_ttm: Option<f64>,
42 #[serde(rename = "operatingReturnOnAssetsTTM")]
43 pub operating_return_on_assets_ttm: Option<f64>,
44 #[serde(rename = "returnOnTangibleAssetsTTM")]
45 pub return_on_tangible_assets_ttm: Option<f64>,
46 #[serde(rename = "returnOnEquityTTM")]
47 pub return_on_equity_ttm: Option<f64>,
48 #[serde(rename = "returnOnInvestedCapitalTTM")]
49 pub return_on_invested_capital_ttm: Option<f64>,
50 #[serde(rename = "returnOnCapitalEmployedTTM")]
51 pub return_on_capital_employed_ttm: Option<f64>,
52 #[serde(rename = "earningsYieldTTM")]
53 pub earnings_yield_ttm: Option<f64>,
54 #[serde(rename = "freeCashFlowYieldTTM")]
55 pub free_cash_flow_yield_ttm: Option<f64>,
56 #[serde(rename = "capexToOperatingCashFlowTTM")]
57 pub capex_to_operating_cash_flow_ttm: Option<f64>,
58 #[serde(rename = "capexToDepreciationTTM")]
59 pub capex_to_depreciation_ttm: Option<f64>,
60 #[serde(rename = "capexToRevenueTTM")]
61 pub capex_to_revenue_ttm: Option<f64>,
62 #[serde(rename = "salesGeneralAndAdministrativeToRevenueTTM")]
63 pub sales_general_and_administrative_to_revenue_ttm: Option<f64>,
64 #[serde(rename = "researchAndDevelopementToRevenueTTM")]
65 pub research_and_development_to_revenue_ttm: Option<f64>,
66 #[serde(rename = "stockBasedCompensationToRevenueTTM")]
67 pub stock_based_compensation_to_revenue_ttm: Option<f64>,
68 #[serde(rename = "intangiblesToTotalAssetsTTM")]
69 pub intangibles_to_total_assets_ttm: Option<f64>,
70 #[serde(rename = "averageReceivablesTTM")]
71 pub average_receivables_ttm: Option<f64>,
72 #[serde(rename = "averagePayablesTTM")]
73 pub average_payables_ttm: Option<f64>,
74 #[serde(rename = "averageInventoryTTM")]
75 pub average_inventory_ttm: Option<f64>,
76 #[serde(rename = "daysOfSalesOutstandingTTM")]
77 pub days_of_sales_outstanding_ttm: Option<f64>,
78 #[serde(rename = "daysOfPayablesOutstandingTTM")]
79 pub days_of_payables_outstanding_ttm: Option<f64>,
80 #[serde(rename = "daysOfInventoryOutstandingTTM")]
81 pub days_of_inventory_outstanding_ttm: Option<f64>,
82 #[serde(rename = "operatingCycleTTM")]
83 pub operating_cycle_ttm: Option<f64>,
84 #[serde(rename = "cashConversionCycleTTM")]
85 pub cash_conversion_cycle_ttm: Option<f64>,
86 #[serde(rename = "freeCashFlowToEquityTTM")]
87 pub free_cash_flow_to_equity_ttm: Option<f64>,
88 #[serde(rename = "freeCashFlowToFirmTTM")]
89 pub free_cash_flow_to_firm_ttm: Option<f64>,
90 #[serde(rename = "tangibleAssetValueTTM")]
91 pub tangible_asset_value_ttm: Option<f64>,
92 #[serde(rename = "netCurrentAssetValueTTM")]
93 pub net_current_asset_value_ttm: Option<f64>,
94}
95
96#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
98#[serde(rename_all = "camelCase")]
99pub struct FinancialRatiosTtm {
100 #[serde(deserialize_with = "super::non_empty_string")]
101 pub symbol: String,
102 #[serde(rename = "grossProfitMarginTTM")]
103 pub gross_profit_margin_ttm: Option<f64>,
104 #[serde(rename = "ebitMarginTTM")]
105 pub ebit_margin_ttm: Option<f64>,
106 #[serde(rename = "ebitdaMarginTTM")]
107 pub ebitda_margin_ttm: Option<f64>,
108 #[serde(rename = "operatingProfitMarginTTM")]
109 pub operating_profit_margin_ttm: Option<f64>,
110 #[serde(rename = "pretaxProfitMarginTTM")]
111 pub pretax_profit_margin_ttm: Option<f64>,
112 #[serde(rename = "continuousOperationsProfitMarginTTM")]
113 pub continuous_operations_profit_margin_ttm: Option<f64>,
114 #[serde(rename = "netProfitMarginTTM")]
115 pub net_profit_margin_ttm: Option<f64>,
116 #[serde(rename = "bottomLineProfitMarginTTM")]
117 pub bottom_line_profit_margin_ttm: Option<f64>,
118 #[serde(rename = "receivablesTurnoverTTM")]
119 pub receivables_turnover_ttm: Option<f64>,
120 #[serde(rename = "payablesTurnoverTTM")]
121 pub payables_turnover_ttm: Option<f64>,
122 #[serde(rename = "inventoryTurnoverTTM")]
123 pub inventory_turnover_ttm: Option<f64>,
124 #[serde(rename = "fixedAssetTurnoverTTM")]
125 pub fixed_asset_turnover_ttm: Option<f64>,
126 #[serde(rename = "assetTurnoverTTM")]
127 pub asset_turnover_ttm: Option<f64>,
128 #[serde(rename = "currentRatioTTM")]
129 pub current_ratio_ttm: Option<f64>,
130 #[serde(rename = "quickRatioTTM")]
131 pub quick_ratio_ttm: Option<f64>,
132 #[serde(rename = "solvencyRatioTTM")]
133 pub solvency_ratio_ttm: Option<f64>,
134 #[serde(rename = "cashRatioTTM")]
135 pub cash_ratio_ttm: Option<f64>,
136 #[serde(rename = "priceToEarningsRatioTTM")]
137 pub price_to_earnings_ratio_ttm: Option<f64>,
138 #[serde(rename = "priceToEarningsGrowthRatioTTM")]
139 pub price_to_earnings_growth_ratio_ttm: Option<f64>,
140 #[serde(rename = "forwardPriceToEarningsGrowthRatioTTM")]
141 pub forward_price_to_earnings_growth_ratio_ttm: Option<f64>,
142 #[serde(rename = "priceToEarningsDilutedRatioTTM")]
143 pub price_to_earnings_diluted_ratio_ttm: Option<f64>,
144 #[serde(rename = "priceToEarningsDilutedGrowthRatioTTM")]
145 pub price_to_earnings_diluted_growth_ratio_ttm: Option<f64>,
146 #[serde(rename = "priceToBookRatioTTM")]
147 pub price_to_book_ratio_ttm: Option<f64>,
148 #[serde(rename = "priceToSalesRatioTTM")]
149 pub price_to_sales_ratio_ttm: Option<f64>,
150 #[serde(rename = "priceToFreeCashFlowRatioTTM")]
151 pub price_to_free_cash_flow_ratio_ttm: Option<f64>,
152 #[serde(rename = "priceToOperatingCashFlowRatioTTM")]
153 pub price_to_operating_cash_flow_ratio_ttm: Option<f64>,
154 #[serde(rename = "debtToAssetsRatioTTM")]
155 pub debt_to_assets_ratio_ttm: Option<f64>,
156 #[serde(rename = "debtToEquityRatioTTM")]
157 pub debt_to_equity_ratio_ttm: Option<f64>,
158 #[serde(rename = "debtToCapitalRatioTTM")]
159 pub debt_to_capital_ratio_ttm: Option<f64>,
160 #[serde(rename = "longTermDebtToCapitalRatioTTM")]
161 pub long_term_debt_to_capital_ratio_ttm: Option<f64>,
162 #[serde(rename = "financialLeverageRatioTTM")]
163 pub financial_leverage_ratio_ttm: Option<f64>,
164 #[serde(rename = "workingCapitalTurnoverRatioTTM")]
165 pub working_capital_turnover_ratio_ttm: Option<f64>,
166 #[serde(rename = "operatingCashFlowRatioTTM")]
167 pub operating_cash_flow_ratio_ttm: Option<f64>,
168 #[serde(rename = "operatingCashFlowSalesRatioTTM")]
169 pub operating_cash_flow_sales_ratio_ttm: Option<f64>,
170 #[serde(rename = "freeCashFlowOperatingCashFlowRatioTTM")]
171 pub free_cash_flow_operating_cash_flow_ratio_ttm: Option<f64>,
172 #[serde(rename = "debtServiceCoverageRatioTTM")]
173 pub debt_service_coverage_ratio_ttm: Option<f64>,
174 #[serde(rename = "interestCoverageRatioTTM")]
175 pub interest_coverage_ratio_ttm: Option<f64>,
176 #[serde(rename = "shortTermOperatingCashFlowCoverageRatioTTM")]
177 pub short_term_operating_cash_flow_coverage_ratio_ttm: Option<f64>,
178 #[serde(rename = "operatingCashFlowCoverageRatioTTM")]
179 pub operating_cash_flow_coverage_ratio_ttm: Option<f64>,
180 #[serde(rename = "capitalExpenditureCoverageRatioTTM")]
181 pub capital_expenditure_coverage_ratio_ttm: Option<f64>,
182 #[serde(rename = "dividendPaidAndCapexCoverageRatioTTM")]
183 pub dividend_paid_and_capex_coverage_ratio_ttm: Option<f64>,
184 #[serde(rename = "dividendPayoutRatioTTM")]
185 pub dividend_payout_ratio_ttm: Option<f64>,
186 #[serde(rename = "dividendYieldTTM")]
187 pub dividend_yield_ttm: Option<f64>,
188 #[serde(rename = "enterpriseValueTTM")]
189 pub enterprise_value_ttm: Option<f64>,
190 #[serde(rename = "revenuePerShareTTM")]
191 pub revenue_per_share_ttm: Option<f64>,
192 #[serde(rename = "netIncomePerShareTTM")]
193 pub net_income_per_share_ttm: Option<f64>,
194 #[serde(rename = "interestDebtPerShareTTM")]
195 pub interest_debt_per_share_ttm: Option<f64>,
196 #[serde(rename = "cashPerShareTTM")]
197 pub cash_per_share_ttm: Option<f64>,
198 #[serde(rename = "bookValuePerShareTTM")]
199 pub book_value_per_share_ttm: Option<f64>,
200 #[serde(rename = "tangibleBookValuePerShareTTM")]
201 pub tangible_book_value_per_share_ttm: Option<f64>,
202 #[serde(rename = "shareholdersEquityPerShareTTM")]
203 pub shareholders_equity_per_share_ttm: Option<f64>,
204 #[serde(rename = "operatingCashFlowPerShareTTM")]
205 pub operating_cash_flow_per_share_ttm: Option<f64>,
206 #[serde(rename = "capexPerShareTTM")]
207 pub capex_per_share_ttm: Option<f64>,
208 #[serde(rename = "freeCashFlowPerShareTTM")]
209 pub free_cash_flow_per_share_ttm: Option<f64>,
210 #[serde(rename = "netIncomePerEBTTTM")]
211 pub net_income_per_ebt_ttm: Option<f64>,
212 #[serde(rename = "ebtPerEbitTTM")]
213 pub ebt_per_ebit_ttm: Option<f64>,
214 #[serde(rename = "priceToFairValueTTM")]
215 pub price_to_fair_value_ttm: Option<f64>,
216 #[serde(rename = "debtToMarketCapTTM")]
217 pub debt_to_market_cap_ttm: Option<f64>,
218 #[serde(rename = "effectiveTaxRateTTM")]
219 pub effective_tax_rate_ttm: Option<f64>,
220 #[serde(rename = "enterpriseValueMultipleTTM")]
221 pub enterprise_value_multiple_ttm: Option<f64>,
222 #[serde(rename = "dividendPerShareTTM")]
223 pub dividend_per_share_ttm: Option<f64>,
224}