📖 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

Built With

Share this project:

Updates