A financial sentiment dashboard that analyses current stock news with FinBERT, generates confidence-backed market-mood signals, and visualises historical sentiment trends.
The project combines a React frontend with a FastAPI backend to create an end-to-end financial NLP pipeline. Users enter a stock ticker, the backend retrieves current news, removes duplicate stories, evaluates each article with FinBERT, and aggregates the results into an overall market-mood signal.
Technologies
- FrontendReact 18, Vite, Tailwind CSS, Recharts, Axios, Lucide React
- BackendFastAPI, Uvicorn, Pydantic, httpx, FinBERT, feedparser, SQLite
- DevOpsDocker, Pytest
- Data SourceYahoo Finance RSS
Analysis Pipeline
The analysis begins by collecting recent financial news associated with the selected ticker. Before sentiment analysis, the backend performs two levels of deduplication: MD5 hashing removes exact duplicates, while SequenceMatcher identifies highly similar stories.
The remaining articles are passed through FinBERT, a transformer-based NLP model designed for financial text. Each article is classified as bullish, neutral, or bearish and assigned a sentiment score between -1 and +1.
These article-level signals are then aggregated into an overall market-mood score. Stronger and more recent signals receive greater influence, while weak neutral stories have less impact on the final result.
Market-Mood Signal
The aggregated sentiment is translated into a market mood: Strong Buy, Buy, Hold, Sell, or Strong Sell. When the available evidence is too limited, the system returns Insufficient Data instead of producing an unreliable signal.
The verdict describes the direction and strength of sentiment expressed in the collected news, rather than attempting to predict a stock's future price.
Confidence Scoring
In addition to the sentiment signal, the system calculates a confidence score from 0% to 100%. Rather than treating sentiment strength alone as evidence of reliability, the score combines multiple characteristics of the available news: signal magnitude, consensus strength, article volume, source quality, recency, source stability.
Screenshots
Some screenshots from the project:
