Mini Projet - #99
Open
roukhmi wants to merge 2 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
FinanceLake
What is FinanceLake?
FinanceLake is an open-source financial data platform that ingests, analyzes, and visualizes market and financial data — similar in ambition to platforms like Bloomberg Terminal, but powered by open technologies.
Whether you're a quant, data engineer, open-source maintainer, or trading enthusiast, FinanceLake offers a scalable and intelligent data stack to support real-time insights, financial research, and data-driven decision-making.
🚀 Features
📥 Data Ingestion
Real-time streaming pipelines using Apache Kafka with Delta Lake Bronze layer storage and batch processing via Apache NiFi.
🏗️ Delta Lake Architecture
Multi-layer data lakehouse with Bronze (raw), Silver (cleaned), and Gold (analytics) layers for ACID transactions and time travel.
🤖 Machine Learning Pipeline
Real-time ML model training with Spark MLlib Random Forest classifier for price direction prediction and continuous model updates.
⚙️ Big Data Processing
Built on Apache Spark 3.4.1 with Delta Lake 2.4.0 for scalable, resilient analytics and schema evolution.
📈 Advanced Financial Analytics
Technical indicators (RSI, MACD), volatility analysis, risk metrics, and custom financial KPIs with real-time computation.
📊 Interactive Real-time Dashboard
Professional Streamlit dashboard with live data streaming, technical analysis charts, ML insights, and risk analytics.
🧠 Query Engine
Ask questions and get answers using a simple SQL-like interface or a natural language layer (NLQ) with optional LLM integration.
📡 Data APIs
REST & GraphQL APIs to expose insights and dashboards to downstream systems or external apps.
🏗️ Architecture Overview
FinanceLake implements a modern Delta Lakehouse Architecture with real-time streaming and ML capabilities:
graph TB A[📡 Data Sources] --> B[Kafka Producer] B --> C[Kafka Broker] C --> D[🟡 Bronze Layer<br/>Raw Data] D --> E[Spark Streaming] E --> F[🔵 Silver Layer<br/>Cleaned + ML] F --> G[Spark ML<br/>Model Training] F --> H[Spark SQL<br/>Aggregations] G --> I[🟢 Gold Layer<br/>KPIs & Predictions] H --> I I --> J[📊 Streamlit Dashboard] style D fill:#f59e0b style F fill:#3b82f6 style I fill:#10b981 style J fill:#8b5cf6Data Pipeline Flow
Key Components
💡 Use Cases
🎯 What can be accomplished with FinanceLake?
FinanceLake empowers users to unlock value from vast streams of financial and economic data. Here’s what you can achieve:
🧠 Derive Actionable Insights
📈 Build & Test Trading Strategies
📊 Visualize and Monitor in Real Time
🔎 Query Like a Pro
🏗️ Build Custom Financial Applications
🧩 Extend and Contribute
👉 Live Demos
Comming soon !!
💪 Supported Data Sources
Comming soon !!
🚀 Getting Started
Prerequisites
Quick Start with Docker Compose
Clone the repository
git clone https://github.com/roukhmi/financelake.git cd financelakeStart the Delta Lake Platform
Access the Applications
Manual Development Setup
Configuration
Create a
.envfile in the project root:🎥 Project Demo Video
A demonstration video of the FinanceLake platform is available in this repository:
📹 Watch Demo Video
File:
videos/financelake-demo.mp4Format: MP4
Duration: ~5-10 minutes
How to View the Video
videos/financelake-demo.mp4with any video playerVideo Contents
This video demonstrates:
🤓 Usage
Dashboard Features
The FinanceLake dashboard provides comprehensive real-time financial analytics:
📊 Real-time Analytics
📈 Multi-asset Support
🔄 Pipeline Monitoring
🤖 ML Insights
💹 Risk Analytics
Data Schema
{ "timestamp": "2024-01-10T12:00:00Z", "symbol": "AAPL", "price": 150.25, "open": 149.50, "high": 151.00, "low": 148.75, "close": 150.25, "volume": 15420, "rsi": 65.4, "macd": 0.85, "volatility": 2.1, "price_change": 1.25, "price_direction": 1, "volume_change": 234 }Contributing
Please read the contribution guidelines before you make contribution. The following docs list the resources you might need to know after you decided to make contribution.
👩🏾💻 Contributing Code
If you plan to contribute code to FinanceLake, we have instructions on how to get started with setting up your Development environemtn.
📄 Contributing Documentation
One of the best ways to get started contributing is by improving FinanceLake's documentation.
⌚ Roadmap
💙 Community
Message us on Discord
📄 License
🔧 Environment Configuration
Before running the project, configure your environment variables.
.env.examplefile and create your own.envfile:-DB_HOST: Database host (e.g., localhost)
-KAFKA_BROKER: Kafka broker address
-SPARK_MASTER Spark master URL
-API_KEY: Your API key
-DATA_SOURCE_URL: URL to fetch data from
-RAW_DATA_PATH: Path for storing raw data
-DASHBOARD_USER: Dashboard login user
-LOG_LEVEL: Logging level (e.g., INFO, DEBUG)
Steps to execute Kafka & HDFS:
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
Make sure HDFS is running on localhost:9000.
python producer.py
curl -X POST -H "Content-Type: application/json" --data @hdfs-sink.json http://localhost:8083/connectors
🤝 Contributors
This project was built as a collaborative school project by: