finance_query/models/screeners/
quote.rs1use crate::models::quote::FormattedValue;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
10#[cfg_attr(feature = "dataframe", derive(crate::ToDataFrame))]
11#[serde(rename_all = "camelCase")]
12pub struct ScreenerQuote {
13 pub symbol: String,
16 pub short_name: String,
18 #[serde(skip_serializing_if = "Option::is_none")]
20 pub long_name: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
23 pub display_name: Option<String>,
24 pub quote_type: String,
26 pub exchange: String,
28
29 pub regular_market_price: FormattedValue<f64>,
32 pub regular_market_change: FormattedValue<f64>,
34 pub regular_market_change_percent: FormattedValue<f64>,
36 #[serde(skip_serializing_if = "Option::is_none")]
38 pub regular_market_open: Option<FormattedValue<f64>>,
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub regular_market_day_high: Option<FormattedValue<f64>>,
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub regular_market_day_low: Option<FormattedValue<f64>>,
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub regular_market_previous_close: Option<FormattedValue<f64>>,
48 #[serde(skip_serializing_if = "Option::is_none")]
50 pub regular_market_time: Option<FormattedValue<i64>>,
51
52 #[serde(skip_serializing_if = "Option::is_none")]
55 pub regular_market_volume: Option<FormattedValue<i64>>,
56 #[serde(skip_serializing_if = "Option::is_none")]
58 pub average_daily_volume3_month: Option<FormattedValue<i64>>,
59 #[serde(skip_serializing_if = "Option::is_none")]
61 pub average_daily_volume10_day: Option<FormattedValue<i64>>,
62 #[serde(skip_serializing_if = "Option::is_none")]
64 pub market_cap: Option<FormattedValue<i64>>,
65 #[serde(skip_serializing_if = "Option::is_none")]
67 pub shares_outstanding: Option<FormattedValue<i64>>,
68
69 #[serde(skip_serializing_if = "Option::is_none")]
72 pub fifty_two_week_high: Option<FormattedValue<f64>>,
73 #[serde(skip_serializing_if = "Option::is_none")]
75 pub fifty_two_week_low: Option<FormattedValue<f64>>,
76 #[serde(skip_serializing_if = "Option::is_none")]
78 pub fifty_two_week_change: Option<FormattedValue<f64>>,
79 #[serde(skip_serializing_if = "Option::is_none")]
81 pub fifty_two_week_change_percent: Option<FormattedValue<f64>>,
82
83 #[serde(skip_serializing_if = "Option::is_none")]
86 pub fifty_day_average: Option<FormattedValue<f64>>,
87 #[serde(skip_serializing_if = "Option::is_none")]
89 pub fifty_day_average_change: Option<FormattedValue<f64>>,
90 #[serde(skip_serializing_if = "Option::is_none")]
92 pub fifty_day_average_change_percent: Option<FormattedValue<f64>>,
93 #[serde(skip_serializing_if = "Option::is_none")]
95 pub two_hundred_day_average: Option<FormattedValue<f64>>,
96 #[serde(skip_serializing_if = "Option::is_none")]
98 pub two_hundred_day_average_change: Option<FormattedValue<f64>>,
99 #[serde(skip_serializing_if = "Option::is_none")]
101 pub two_hundred_day_average_change_percent: Option<FormattedValue<f64>>,
102
103 #[serde(skip_serializing_if = "Option::is_none")]
106 pub average_analyst_rating: Option<String>,
107 #[serde(rename = "trailingPE", skip_serializing_if = "Option::is_none")]
109 pub trailing_pe: Option<FormattedValue<f64>>,
110 #[serde(rename = "forwardPE", skip_serializing_if = "Option::is_none")]
112 pub forward_pe: Option<FormattedValue<f64>>,
113 #[serde(skip_serializing_if = "Option::is_none")]
115 pub price_to_book: Option<FormattedValue<f64>>,
116 #[serde(skip_serializing_if = "Option::is_none")]
118 pub book_value: Option<FormattedValue<f64>>,
119
120 #[serde(skip_serializing_if = "Option::is_none")]
123 pub eps_trailing_twelve_months: Option<FormattedValue<f64>>,
124 #[serde(skip_serializing_if = "Option::is_none")]
126 pub eps_forward: Option<FormattedValue<f64>>,
127 #[serde(skip_serializing_if = "Option::is_none")]
129 pub eps_current_year: Option<FormattedValue<f64>>,
130 #[serde(skip_serializing_if = "Option::is_none")]
132 pub price_eps_current_year: Option<FormattedValue<f64>>,
133
134 #[serde(skip_serializing_if = "Option::is_none")]
137 pub dividend_yield: Option<FormattedValue<f64>>,
138 #[serde(skip_serializing_if = "Option::is_none")]
140 pub dividend_rate: Option<FormattedValue<f64>>,
141 #[serde(skip_serializing_if = "Option::is_none")]
143 pub dividend_date: Option<FormattedValue<i64>>,
144 #[serde(skip_serializing_if = "Option::is_none")]
146 pub trailing_annual_dividend_rate: Option<FormattedValue<f64>>,
147 #[serde(skip_serializing_if = "Option::is_none")]
149 pub trailing_annual_dividend_yield: Option<FormattedValue<f64>>,
150
151 #[serde(skip_serializing_if = "Option::is_none")]
154 pub bid: Option<FormattedValue<f64>>,
155 #[serde(skip_serializing_if = "Option::is_none")]
157 pub bid_size: Option<FormattedValue<i64>>,
158 #[serde(skip_serializing_if = "Option::is_none")]
160 pub ask: Option<FormattedValue<f64>>,
161 #[serde(skip_serializing_if = "Option::is_none")]
163 pub ask_size: Option<FormattedValue<i64>>,
164
165 #[serde(skip_serializing_if = "Option::is_none")]
168 pub post_market_price: Option<FormattedValue<f64>>,
169 #[serde(skip_serializing_if = "Option::is_none")]
171 pub post_market_change: Option<FormattedValue<f64>>,
172 #[serde(skip_serializing_if = "Option::is_none")]
174 pub post_market_change_percent: Option<FormattedValue<f64>>,
175 #[serde(skip_serializing_if = "Option::is_none")]
177 pub post_market_time: Option<FormattedValue<i64>>,
178 #[serde(skip_serializing_if = "Option::is_none")]
180 pub pre_market_price: Option<FormattedValue<f64>>,
181 #[serde(skip_serializing_if = "Option::is_none")]
183 pub pre_market_change: Option<FormattedValue<f64>>,
184 #[serde(skip_serializing_if = "Option::is_none")]
186 pub pre_market_change_percent: Option<FormattedValue<f64>>,
187 #[serde(skip_serializing_if = "Option::is_none")]
189 pub pre_market_time: Option<FormattedValue<i64>>,
190
191 #[serde(skip_serializing_if = "Option::is_none")]
194 pub earnings_timestamp: Option<FormattedValue<i64>>,
195 #[serde(skip_serializing_if = "Option::is_none")]
197 pub earnings_timestamp_start: Option<FormattedValue<i64>>,
198 #[serde(skip_serializing_if = "Option::is_none")]
200 pub earnings_timestamp_end: Option<FormattedValue<i64>>,
201
202 #[serde(skip_serializing_if = "Option::is_none")]
205 pub currency: Option<String>,
206}