Application accessible here : https://us-funds-ctcoutinho.sbbdata.com/
Welcome to the US-Funds Dashboard, a Streamlit application designed to provide insightful and comprehensive ETF information. The app leverages the power of financial data from Yahoo Finance, processed and stored in DuckDB, and modeled using dbt following the Ralph Kimball methodology. This approach ensures that the data is not only accurate but also presented in a user-friendly and accessible manner.
- Comprehensive Analysis: Explore ETF data through various dimensions such as time, geography, and sector.
- Interactive Interface: Utilize Streamlit’s interactive features to filter and manipulate ETF data for personalized analysis.
- Data Integrity: Benefit from a rigorous data pipeline that cleans, transforms, and models the data to ensure high-quality insights.
To run this project locally you'll need:
- python 3.10 or later
- Duckdb database file (us-funds-project.db) from S3 : s3://us-funds-project-duck-db-bucket/us-funds-project.db
In order to stick with the standard way of managing python projects, poetry will be used as package manager.
First install poetry :
pip install poetry
After having pull the project, you can install all the required dependencies for this project by running.
poetry install
For dbt and Streamlit to work, you have to place .duckdb database file at the root of the project: us-funds-performance/us-funds-project.db !
To run dbt and modify and project :
Navigate to /us_funds_dbt and run any dbt command.
To run Streamlit locally:
Navigate to /streamlit_app and run :
streamlit run etf_app.py
You can now access the app on : http://localhost:8501
-
- Build the Docker image from the directory containing the Dockerfile:
docker build -t us-funds-project .
-
- Run the container with a mounted volume for persistent storage of your database file. This command mounts the us-funds-performance/ directory from your host to the container.
docker run -d -p 8501:8501 -v $(pwd)/us-funds-project.db:/usr/src/app/us-funds-project.db us-funds-project
You can now access the app on : http://localhost:8501