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 #[serde(default, alias = "companyshortname")]
18 pub short_name: String,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub long_name: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub display_name: Option<String>,
25 pub quote_type: String,
27 pub exchange: String,
29
30 pub regular_market_price: FormattedValue<f64>,
33 pub regular_market_change: FormattedValue<f64>,
35 pub regular_market_change_percent: FormattedValue<f64>,
37 #[serde(skip_serializing_if = "Option::is_none")]
39 pub regular_market_open: Option<FormattedValue<f64>>,
40 #[serde(skip_serializing_if = "Option::is_none")]
42 pub regular_market_day_high: Option<FormattedValue<f64>>,
43 #[serde(skip_serializing_if = "Option::is_none")]
45 pub regular_market_day_low: Option<FormattedValue<f64>>,
46 #[serde(skip_serializing_if = "Option::is_none")]
48 pub regular_market_previous_close: Option<FormattedValue<f64>>,
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub regular_market_time: Option<FormattedValue<i64>>,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
56 pub regular_market_volume: Option<FormattedValue<i64>>,
57 #[serde(skip_serializing_if = "Option::is_none")]
59 pub average_daily_volume3_month: Option<FormattedValue<i64>>,
60 #[serde(skip_serializing_if = "Option::is_none")]
62 pub average_daily_volume10_day: Option<FormattedValue<i64>>,
63 #[serde(skip_serializing_if = "Option::is_none")]
65 pub market_cap: Option<FormattedValue<i64>>,
66 #[serde(skip_serializing_if = "Option::is_none")]
68 pub shares_outstanding: Option<FormattedValue<i64>>,
69
70 #[serde(skip_serializing_if = "Option::is_none")]
73 pub fifty_two_week_high: Option<FormattedValue<f64>>,
74 #[serde(skip_serializing_if = "Option::is_none")]
76 pub fifty_two_week_low: Option<FormattedValue<f64>>,
77 #[serde(skip_serializing_if = "Option::is_none")]
79 pub fifty_two_week_change: Option<FormattedValue<f64>>,
80 #[serde(skip_serializing_if = "Option::is_none")]
82 pub fifty_two_week_change_percent: Option<FormattedValue<f64>>,
83
84 #[serde(skip_serializing_if = "Option::is_none")]
87 pub fifty_day_average: Option<FormattedValue<f64>>,
88 #[serde(skip_serializing_if = "Option::is_none")]
90 pub fifty_day_average_change: Option<FormattedValue<f64>>,
91 #[serde(skip_serializing_if = "Option::is_none")]
93 pub fifty_day_average_change_percent: Option<FormattedValue<f64>>,
94 #[serde(skip_serializing_if = "Option::is_none")]
96 pub two_hundred_day_average: Option<FormattedValue<f64>>,
97 #[serde(skip_serializing_if = "Option::is_none")]
99 pub two_hundred_day_average_change: Option<FormattedValue<f64>>,
100 #[serde(skip_serializing_if = "Option::is_none")]
102 pub two_hundred_day_average_change_percent: Option<FormattedValue<f64>>,
103
104 #[serde(skip_serializing_if = "Option::is_none")]
107 pub average_analyst_rating: Option<String>,
108 #[serde(rename = "trailingPE", skip_serializing_if = "Option::is_none")]
110 pub trailing_pe: Option<FormattedValue<f64>>,
111 #[serde(rename = "forwardPE", skip_serializing_if = "Option::is_none")]
113 pub forward_pe: Option<FormattedValue<f64>>,
114 #[serde(skip_serializing_if = "Option::is_none")]
116 pub price_to_book: Option<FormattedValue<f64>>,
117 #[serde(skip_serializing_if = "Option::is_none")]
119 pub book_value: Option<FormattedValue<f64>>,
120
121 #[serde(skip_serializing_if = "Option::is_none")]
124 pub eps_trailing_twelve_months: Option<FormattedValue<f64>>,
125 #[serde(skip_serializing_if = "Option::is_none")]
127 pub eps_forward: Option<FormattedValue<f64>>,
128 #[serde(skip_serializing_if = "Option::is_none")]
130 pub eps_current_year: Option<FormattedValue<f64>>,
131 #[serde(skip_serializing_if = "Option::is_none")]
133 pub price_eps_current_year: Option<FormattedValue<f64>>,
134
135 #[serde(skip_serializing_if = "Option::is_none")]
138 pub dividend_yield: Option<FormattedValue<f64>>,
139 #[serde(skip_serializing_if = "Option::is_none")]
141 pub dividend_rate: Option<FormattedValue<f64>>,
142 #[serde(skip_serializing_if = "Option::is_none")]
144 pub dividend_date: Option<FormattedValue<i64>>,
145 #[serde(skip_serializing_if = "Option::is_none")]
147 pub trailing_annual_dividend_rate: Option<FormattedValue<f64>>,
148 #[serde(skip_serializing_if = "Option::is_none")]
150 pub trailing_annual_dividend_yield: Option<FormattedValue<f64>>,
151
152 #[serde(skip_serializing_if = "Option::is_none")]
155 pub bid: Option<FormattedValue<f64>>,
156 #[serde(skip_serializing_if = "Option::is_none")]
158 pub bid_size: Option<FormattedValue<i64>>,
159 #[serde(skip_serializing_if = "Option::is_none")]
161 pub ask: Option<FormattedValue<f64>>,
162 #[serde(skip_serializing_if = "Option::is_none")]
164 pub ask_size: Option<FormattedValue<i64>>,
165
166 #[serde(skip_serializing_if = "Option::is_none")]
169 pub post_market_price: Option<FormattedValue<f64>>,
170 #[serde(skip_serializing_if = "Option::is_none")]
172 pub post_market_change: Option<FormattedValue<f64>>,
173 #[serde(skip_serializing_if = "Option::is_none")]
175 pub post_market_change_percent: Option<FormattedValue<f64>>,
176 #[serde(skip_serializing_if = "Option::is_none")]
178 pub post_market_time: Option<FormattedValue<i64>>,
179 #[serde(skip_serializing_if = "Option::is_none")]
181 pub pre_market_price: Option<FormattedValue<f64>>,
182 #[serde(skip_serializing_if = "Option::is_none")]
184 pub pre_market_change: Option<FormattedValue<f64>>,
185 #[serde(skip_serializing_if = "Option::is_none")]
187 pub pre_market_change_percent: Option<FormattedValue<f64>>,
188 #[serde(skip_serializing_if = "Option::is_none")]
190 pub pre_market_time: Option<FormattedValue<i64>>,
191
192 #[serde(skip_serializing_if = "Option::is_none")]
195 pub earnings_timestamp: Option<FormattedValue<i64>>,
196 #[serde(skip_serializing_if = "Option::is_none")]
198 pub earnings_timestamp_start: Option<FormattedValue<i64>>,
199 #[serde(skip_serializing_if = "Option::is_none")]
201 pub earnings_timestamp_end: Option<FormattedValue<i64>>,
202
203 #[serde(skip_serializing_if = "Option::is_none")]
206 pub currency: Option<String>,
207}