📖 About the Project Inspiration
Most trading platforms overwhelm users with raw numbers and charts, leaving them to interpret market movements on their own. As students exploring real-time systems and AI, we noticed a gap between data availability and decision-making support.
We were inspired by how modern fintech platforms combine live market data, news sentiment, and AI explanations, yet often operate as black boxes. Our goal was to build a system that not only generates trading signals but also clearly explains why each signal exists, using transparent AI-driven reasoning.
What it does
This project is a real-time market intelligence and signal engine that:
Streams live stock prices from market APIs
Enriches price data with recent financial news sentiment using FinBERT
Generates BUY / SELL / NEUTRAL signals based on price movement and sentiment
Uses Google Vertex AI (Gemini) to produce human-readable explanations
Delivers signals instantly to a live dashboard via WebSockets
The result is an end-to-end pipeline that turns raw market events into actionable, explainable insights in real time.
How we built it
We designed the system as an event-driven microservices pipeline using Apache Kafka.
Market Data Producer
Fetches live stock prices from Alpha Vantage
Publishes events to Kafka (market.stocks)
News & Sentiment Enricher
Consumes stock events
Fetches related news articles
Applies FinBERT for financial sentiment analysis
Publishes enriched events to Kafka (market.enriched)
Signal Engine
Combines price change + sentiment scores
Generates BUY / SELL / NEUTRAL signals
Calls Vertex AI Gemini to generate explanations
Publishes signals to Kafka (market.signals)
Dashboard API & Frontend
Flask + Socket.IO consumes signals
Broadcasts them to a real-time dashboard
Displays live updates without page refresh
Each component runs independently, making the system scalable and fault-tolerant.
Challenges we ran into
Kafka configuration and authentication Setting up secure Kafka connections required careful handling of SSL, SASL, and topic configuration.
Large NLP model loading (FinBERT) FinBERT is heavy and slow to load initially. We solved this using lazy loading and caching to avoid blocking real-time processing.
API rate limits Free market data APIs enforce strict rate limits. We implemented controlled delays and batching to avoid request failures.
Real-time data delivery Ensuring signals reached the frontend instantly and reliably required proper WebSocket handling and fallback REST endpoints.
Vertex AI integration Configuring service accounts, credentials, and error handling was complex, so we added graceful fallbacks when AI services are unavailable.
Accomplishments that we're proud of
Built a fully working real-time pipeline from ingestion to UI
Successfully integrated financial NLP (FinBERT) and cloud LLMs (Vertex AI)
Implemented a production-style, event-driven architecture
Delivered live, explainable trading signals with zero manual refresh
Created clean documentation and modular code suitable for extension
What we learned
How event-driven systems scale better than monolithic designs
Practical use of Apache Kafka for real-time data pipelines
Challenges of deploying AI models in streaming environments
Importance of explainability in AI-driven financial systems
How WebSockets dramatically improve real-time user experience
What's next for Untitled
Add technical indicators like RSI, MACD, EMA
Store signals in a database for historical analysis and backtesting
Improve AI models with market-specific fine-tuning
Deploy the system on cloud infrastructure using Docker and CI/CD
Add user authentication, alerts, and portfolio tracking features