Ravenhood is a better Robinhood analytics dashboard that is local-first. It pairs a Flask backend with a modern single-page frontend to show portfolio performance, holdings, benchmark comparisons, and cash-flow insights.
- Authenticates with Robinhood credentials (including optional 2FA code support).
- Fetches stock holdings and transaction history.
- Computes per-holding and portfolio-level metrics including P/L and XIRR.
- Compares portfolio behavior with an S&P 500 strategy.
- Visualizes allocation, performance trends, and monthly cash flows.
- Shows holding-level metadata such as sector and ETF classification.
- Backend: Python, Flask, robin-stocks, yfinance, pyxirr, pandas
- Frontend: HTML, Tailwind CSS (CDN), Chart.js, Font Awesome
- Runtime model: Local server (
http://localhost:5005) serving API + UI
backend.py: Flask API server, Robinhood login flow, portfolio calculations, and analytics endpoints.index.html: Single-page dashboard UI with login, charts, and holdings table.palettes.ts/palettes.js: Color palette definitions for dashboard theme options.requirements.txt: Python dependencies.
POST /api/login- Body:
username,password, optionalmfa_code/mfaCode - Response indicates success or whether additional authentication is required.
- Body:
GET /api/portfolio- Returns consolidated portfolio data: stocks, S&P 500 comparison, historical performance, and cash flow data.
POST /api/logout- Logs out and clears backend login state.
- Python 3.10+
- A Robinhood account
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtpython backend.pyThen open http://localhost:5005.
- Enter Robinhood username and password in the Ravenhood login screen.
- If Robinhood requests additional verification, enter your code in the optional
2FA Codefield. - Ravenhood sends credentials only to your local Flask backend.
- This project is intended for local/personal use.
- Broker APIs and response formats can change over time.
- Some computed historical data is approximation-based and depends on available transaction + market data.
- Run Ravenhood only on trusted machines.
- Avoid exposing port
5005to public networks. - Treat Robinhood credentials and session data as sensitive.
- Add persistent local config and encrypted credential/session handling.
- Improve historical portfolio valuation accuracy by reconstructing point-in-time holdings.
- Add export support (CSV/PDF) for reports.
- Add tests for API response contracts and core analytics logic.
This project is licensed under the Apache 2.0 License. See LICENSE for details.
