Skip to main content

finance_query/models/sentiment/
mod.rs

1//! Market sentiment models.
2//!
3//! Contains the Fear & Greed Index data from Alternative.me (market-wide gauge)
4//! and per-symbol sentiment from provider news analysis (Polygon, etc.).
5
6pub(crate) mod response;
7
8#[cfg(feature = "sentiment")]
9mod score;
10
11pub use response::{FearAndGreed, FearGreedLabel};
12
13#[cfg(feature = "sentiment")]
14pub use score::{Sentiment, SentimentLabel, analyze};
15
16#[cfg(feature = "sentiment")]
17pub(crate) use score::{aggregate, aggregate_weighted};
18
19use serde::{Deserialize, Serialize};
20
21/// Per-symbol sentiment from provider news analysis (Polygon, etc.).
22///
23/// Scores range from -1.0 (very negative) to 1.0 (very positive).
24/// Unlike [`FearAndGreed`] (a market-wide 0—100 gauge from Alternative.me),
25/// this reflects news sentiment for a specific stock.
26#[derive(Debug, Clone, Serialize, Deserialize)]
27#[non_exhaustive]
28pub struct SymbolSentiment {
29    /// Sentiment score (-1.0 = very negative, 0.0 = neutral, 1.0 = very positive).
30    pub score: Option<f64>,
31    /// Human-readable label (e.g., "Bullish", "Bearish", "Neutral").
32    pub label: Option<String>,
33}