Skip to main content

tvdata_rs/equity/
types.rs

1use crate::market_data::{
2    ConversionRatesSnapshot, InstrumentIdentity, QuoteSnapshot, TechnicalSummary,
3};
4use time::OffsetDateTime;
5
6#[derive(Debug, Clone, PartialEq)]
7pub struct FundamentalsSnapshot {
8    pub instrument: InstrumentIdentity,
9    pub market_cap: Option<f64>,
10    pub price_earnings_ttm: Option<f64>,
11    pub price_to_book_fq: Option<f64>,
12    pub price_to_sales_current: Option<f64>,
13    pub total_revenue_ttm: Option<f64>,
14    pub net_income_ttm: Option<f64>,
15    pub eps_ttm: Option<f64>,
16    pub dividend_yield_recent: Option<f64>,
17    pub return_on_equity_ttm: Option<f64>,
18    pub return_on_assets_ttm: Option<f64>,
19    pub debt_to_equity_mrq: Option<f64>,
20    pub current_ratio_mrq: Option<f64>,
21    pub free_cash_flow_ttm: Option<f64>,
22    pub ebitda_ttm: Option<f64>,
23}
24
25#[derive(Debug, Clone, PartialEq, Default)]
26pub struct AnalystRecommendations {
27    pub buy: Option<u32>,
28    pub sell: Option<u32>,
29    pub hold: Option<u32>,
30    pub outperform: Option<u32>,
31    pub underperform: Option<u32>,
32    pub total: Option<u32>,
33    pub rating: Option<f64>,
34}
35
36#[derive(Debug, Clone, PartialEq, Default)]
37pub struct AnalystPriceTargets {
38    pub average: Option<f64>,
39    pub high: Option<f64>,
40    pub low: Option<f64>,
41    pub median: Option<f64>,
42    pub one_year: Option<f64>,
43    pub one_year_delta_percent: Option<f64>,
44}
45
46#[derive(Debug, Clone, PartialEq, Default)]
47pub struct AnalystForecasts {
48    pub revenue_current_quarter: Option<f64>,
49    pub revenue_next_quarter: Option<f64>,
50    pub revenue_next_half_year: Option<f64>,
51    pub revenue_next_fiscal_year: Option<f64>,
52    pub eps_current_quarter: Option<f64>,
53    pub eps_next_quarter: Option<f64>,
54    pub eps_next_half_year: Option<f64>,
55    pub eps_next_fiscal_year: Option<f64>,
56    pub eps_surprise_recent_quarter: Option<f64>,
57    pub eps_surprise_percent_recent_quarter: Option<f64>,
58    pub forward_non_gaap_price_earnings: Option<f64>,
59    pub forward_price_earnings_fiscal_year: Option<f64>,
60}
61
62#[derive(Debug, Clone, PartialEq, Default)]
63pub struct EarningsCalendar {
64    pub recent_release_at: Option<OffsetDateTime>,
65    pub next_release_at: Option<OffsetDateTime>,
66    pub recent_calendar_date: Option<OffsetDateTime>,
67    pub next_calendar_date: Option<OffsetDateTime>,
68    pub current_quarter_trading_date: Option<OffsetDateTime>,
69    pub next_quarter_trading_date: Option<OffsetDateTime>,
70    pub fiscal_year_trading_date: Option<OffsetDateTime>,
71    pub recent_release_time_code: Option<u32>,
72    pub next_release_time_code: Option<u32>,
73    pub current_quarter_publication_type_code: Option<u32>,
74    pub next_quarter_publication_type_code: Option<u32>,
75}
76
77#[derive(Debug, Clone, PartialEq, Default)]
78pub struct AnalystFxRates {
79    pub current: Option<ConversionRatesSnapshot>,
80    pub time_series: Option<ConversionRatesSnapshot>,
81    pub revenue_current_quarter: Option<ConversionRatesSnapshot>,
82    pub revenue_next_half_year: Option<ConversionRatesSnapshot>,
83    pub revenue_next_fiscal_year: Option<ConversionRatesSnapshot>,
84    pub trailing_twelve_months: Option<ConversionRatesSnapshot>,
85    pub cash_flow: Option<ConversionRatesSnapshot>,
86    pub price_target: Option<ConversionRatesSnapshot>,
87    pub market_cap: Option<ConversionRatesSnapshot>,
88    pub earnings_current_quarter: Option<ConversionRatesSnapshot>,
89    pub earnings_next_quarter: Option<ConversionRatesSnapshot>,
90    pub dividend_recent: Option<ConversionRatesSnapshot>,
91    pub dividend_upcoming: Option<ConversionRatesSnapshot>,
92}
93
94#[derive(Debug, Clone, PartialEq)]
95pub struct AnalystSummary {
96    pub instrument: InstrumentIdentity,
97    pub close: Option<f64>,
98    pub recommendations: AnalystRecommendations,
99    pub price_targets: AnalystPriceTargets,
100    pub forecasts: AnalystForecasts,
101    pub earnings: EarningsCalendar,
102    pub fx_rates: AnalystFxRates,
103}
104
105#[derive(Debug, Clone, PartialEq)]
106pub struct EquityOverview {
107    pub quote: QuoteSnapshot,
108    pub fundamentals: FundamentalsSnapshot,
109    pub analyst: AnalystSummary,
110    pub technicals: TechnicalSummary,
111}