fmp_rs/models/
market_performance.rs

1//! Models for market performance endpoints
2
3use serde::{Deserialize, Serialize};
4
5/// Sector performance data
6#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct SectorPerformance {
9    /// Sector name
10    pub sector: String,
11    /// Performance change percentage
12    pub changes_percentage: Option<String>,
13}
14
15/// Historical sector performance
16#[derive(Debug, Clone, Serialize, Deserialize)]
17#[serde(rename_all = "camelCase")]
18pub struct SectorHistorical {
19    /// Date
20    pub date: String,
21    /// Technology sector performance
22    #[serde(rename = "technologyChangesPercentage")]
23    pub technology_changes_percentage: Option<f64>,
24    /// Healthcare sector performance
25    #[serde(rename = "healthcareChangesPercentage")]
26    pub healthcare_changes_percentage: Option<f64>,
27    /// Financial sector performance
28    #[serde(rename = "financialServicesChangesPercentage")]
29    pub financial_services_changes_percentage: Option<f64>,
30    /// Consumer Cyclical sector performance
31    #[serde(rename = "consumerCyclicalChangesPercentage")]
32    pub consumer_cyclical_changes_percentage: Option<f64>,
33    /// Industrials sector performance
34    #[serde(rename = "industrialsChangesPercentage")]
35    pub industrials_changes_percentage: Option<f64>,
36    /// Energy sector performance
37    #[serde(rename = "energyChangesPercentage")]
38    pub energy_changes_percentage: Option<f64>,
39    /// Basic Materials sector performance
40    #[serde(rename = "basicMaterialsChangesPercentage")]
41    pub basic_materials_changes_percentage: Option<f64>,
42    /// Consumer Defensive sector performance
43    #[serde(rename = "consumerDefensiveChangesPercentage")]
44    pub consumer_defensive_changes_percentage: Option<f64>,
45    /// Real Estate sector performance
46    #[serde(rename = "realEstateChangesPercentage")]
47    pub real_estate_changes_percentage: Option<f64>,
48    /// Communication Services sector performance
49    #[serde(rename = "communicationServicesChangesPercentage")]
50    pub communication_services_changes_percentage: Option<f64>,
51    /// Utilities sector performance
52    #[serde(rename = "utilitiesChangesPercentage")]
53    pub utilities_changes_percentage: Option<f64>,
54}
55
56/// Market hours information
57#[derive(Debug, Clone, Serialize, Deserialize)]
58#[serde(rename_all = "camelCase")]
59pub struct MarketHours {
60    /// Stock exchange name
61    pub stock_exchange_name: Option<String>,
62    /// Stock market hours
63    pub stock_market_hours: Option<MarketHourDetails>,
64    /// Stock market holidays
65    #[serde(default)]
66    pub stock_market_holidays: Vec<Holiday>,
67    /// Whether market is open
68    pub is_the_stock_market_open: Option<bool>,
69    /// Whether it's a holiday
70    pub is_the_stock_market_holiday: Option<bool>,
71}
72
73/// Market hour details
74#[derive(Debug, Clone, Serialize, Deserialize)]
75#[serde(rename_all = "camelCase")]
76pub struct MarketHourDetails {
77    /// Opening time
78    pub open_time: Option<String>,
79    /// Closing time
80    pub close_time: Option<String>,
81}
82
83/// Holiday information
84#[derive(Debug, Clone, Serialize, Deserialize)]
85#[serde(rename_all = "camelCase")]
86pub struct Holiday {
87    /// Year
88    pub year: Option<i32>,
89    /// Holiday name
90    pub holiday: Option<String>,
91    /// Holiday date
92    pub date: Option<String>,
93}
94
95/// Stock gainer, loser, or most active
96#[derive(Debug, Clone, Serialize, Deserialize)]
97#[serde(rename_all = "camelCase")]
98pub struct StockMover {
99    /// Stock symbol
100    pub symbol: String,
101    /// Company name
102    pub name: Option<String>,
103    /// Current price
104    pub price: Option<f64>,
105    /// Price change
106    pub change: Option<f64>,
107    /// Percentage change
108    pub changes_percentage: Option<f64>,
109    /// Trading volume
110    pub volume: Option<i64>,
111}
112
113/// Pre/Post market trading data
114#[derive(Debug, Clone, Serialize, Deserialize)]
115#[serde(rename_all = "camelCase")]
116pub struct PrePostMarket {
117    /// Stock symbol
118    pub symbol: String,
119    /// Pre-market price
120    pub pre_market_price: Option<f64>,
121    /// Pre-market change
122    pub pre_market_change: Option<f64>,
123    /// Pre-market change percentage
124    pub pre_market_change_percentage: Option<f64>,
125    /// After-hours price
126    pub after_hours_price: Option<f64>,
127    /// After-hours change
128    pub after_hours_change: Option<f64>,
129    /// After-hours change percentage
130    pub after_hours_change_percentage: Option<f64>,
131}