Skip to main content

finance_query/models/corporate/
earnings_history.rs

1//! Earnings History Module
2//!
3//! Contains historical earnings data comparing actual vs estimated earnings.
4
5use serde::{Deserialize, Serialize};
6
7/// Historical earnings data
8#[derive(Default, Debug, Clone, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10#[non_exhaustive]
11pub struct EarningsHistory {
12    /// Default methodology (e.g., "gaap")
13    #[serde(default)]
14    pub default_methodology: Option<String>,
15
16    /// List of historical earnings
17    #[serde(default)]
18    pub history: Vec<EarningsHistoryEntry>,
19}
20
21/// Single historical earnings entry
22#[derive(Debug, Clone, Serialize, Deserialize)]
23#[serde(rename_all = "camelCase")]
24pub struct EarningsHistoryEntry {
25    /// Maximum age of this data in seconds
26    #[serde(default)]
27    pub max_age: Option<i64>,
28
29    /// Quarter for this earnings report
30    #[serde(default)]
31    pub quarter: Option<crate::models::quote::FormattedValue<i64>>,
32
33    /// Period identifier (e.g., "-1q", "-2q")
34    #[serde(default)]
35    pub period: Option<String>,
36
37    /// Currency code
38    #[serde(default)]
39    pub currency: Option<String>,
40
41    /// Actual EPS reported
42    #[serde(default)]
43    pub eps_actual: Option<crate::models::quote::FormattedValue<f64>>,
44
45    /// Estimated EPS
46    #[serde(default)]
47    pub eps_estimate: Option<crate::models::quote::FormattedValue<f64>>,
48
49    /// Difference between actual and estimate
50    #[serde(default)]
51    pub eps_difference: Option<crate::models::quote::FormattedValue<f64>>,
52
53    /// Surprise percentage
54    #[serde(default)]
55    pub surprise_percent: Option<crate::models::quote::FormattedValue<f64>>,
56}