{"id":49355165,"url":"https://github.com/maximefarre/quantitative-finance-dashboard","last_synced_at":"2026-04-27T13:02:35.065Z","repository":{"id":325314974,"uuid":"1100069834","full_name":"MaximeFARRE/Quantitative-Finance-Dashboard","owner":"MaximeFARRE","description":"Streamlit dashboard for backtesting systematic trading strategies (MA Crossover, Regime Switching) on stocks, indices, forex and commodities — with automatic parameter optimization, trade analytics and daily reports.","archived":false,"fork":false,"pushed_at":"2026-04-21T18:45:37.000Z","size":240,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T20:43:28.813Z","etag":null,"topics":["backtesting","python","quantitative-finance","strategies","streamlit","trading"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaximeFARRE.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-19T19:55:17.000Z","updated_at":"2026-04-21T18:47:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/MaximeFARRE/Quantitative-Finance-Dashboard","commit_stats":null,"previous_names":["skymmax/projet","maximefarre/projet","maximefarre/quantitative-finance-dashboard"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/MaximeFARRE/Quantitative-Finance-Dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaximeFARRE%2FQuantitative-Finance-Dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaximeFARRE%2FQuantitative-Finance-Dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaximeFARRE%2FQuantitative-Finance-Dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaximeFARRE%2FQuantitative-Finance-Dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaximeFARRE","download_url":"https://codeload.github.com/MaximeFARRE/Quantitative-Finance-Dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaximeFARRE%2FQuantitative-Finance-Dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32337274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backtesting","python","quantitative-finance","strategies","streamlit","trading"],"created_at":"2026-04-27T13:02:33.924Z","updated_at":"2026-04-27T13:02:35.053Z","avatar_url":"https://github.com/MaximeFARRE.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Quantitative Finance Dashboard\n\n![Python](https://img.shields.io/badge/Python-3.10%2B-blue?logo=python\u0026logoColor=white)\n![Streamlit](https://img.shields.io/badge/Streamlit-1.x-FF4B4B?logo=streamlit\u0026logoColor=white)\n![License](https://img.shields.io/badge/License-MIT-green)\n![Data](https://img.shields.io/badge/Data-Yahoo%20Finance-6001D2?logo=yahoo\u0026logoColor=white)\n![Status](https://img.shields.io/badge/Status-Active-brightgreen)\n\nA **Streamlit-based quantitative finance dashboard** for backtesting systematic trading strategies on individual assets and multi-asset portfolios, built as a 4th-year engineering project at ESILV.\n\n---\n\n## 1. Project Context\n\nThis project was developed as part of the **Python, Git, Linux for Finance** course.\nIt simulates the work of a **quantitative research team** in an asset management company, whose role is to support portfolio managers with **quantitative tools**.\n\nThe objective is to design and deploy a **professional interactive dashboard** able to:\n- retrieve financial market data from a dynamic source (API),\n- implement quantitative strategies and backtesting,\n- simulate multi-asset portfolios,\n- display results and key metrics in a clear and user-friendly way.\n\nThe application is built in **Python with Streamlit**, versioned using **Git/GitHub**, and **deployed on a Linux virtual machine** to ensure continuous availability.\n\n---\n\n## 2. Team \u0026 Division of Work\n\nThis project was completed by **two students**, with a strict separation of responsibilities, as required by the project guidelines.\n\n- **Maxime Farré — Quant A (Single Asset Analysis)** · [@MaximeFARRE](https://github.com/MaximeFARRE)\n  Responsible for:\n  - single-asset data loading and preprocessing,\n  - implementation of quantitative strategies on one asset,\n  - backtesting logic and performance metrics,\n  - visualization of asset price vs strategy performance.\n\n- **Emilien Combaret — Quant B (Multi-Asset Portfolio Analysis)** · [@EmilienCombaret](https://github.com/EmilienCombaret)\n  Responsible for:\n  - extension to multi-asset portfolios (minimum 3 assets),\n  - portfolio allocation and rebalancing logic,\n  - portfolio-level metrics and diversification analysis,\n  - Streamlit user interface for portfolio configuration and results.\n\nBoth modules are integrated into a **single unified Streamlit application**.\n\n---\n\n## 3. Data Sources \u0026 API\n\nMarket data is retrieved from a **public financial API** through the Quant A data loader\n(e.g. *yfinance* or an equivalent public data provider).\n\nKey characteristics:\n- daily and intraday data (`1d`, `60m`, `15m`, `5m`),\n- OHLCV data handling,\n- support for MultiIndex formats,\n- automatic refresh approximately every 5 minutes,\n- robust handling of missing or invalid data.\n\n---\n\n## 4. Quant A — Single Asset Module\n\n### Objective\nAnalyze and backtest **one asset at a time** (equities, FX, commodities, etc.).\n\n### Implemented strategies\n- **Buy \u0026 Hold**\n- **Moving Average Crossover**\n- **Regime Switching (Trend / Mean Reversion)**\n\n### Metrics\nFor each strategy:\n- cumulative return,\n- annualized return,\n- annualized volatility,\n- Sharpe ratio,\n- maximum drawdown.\n\n### Visualization\n- main chart showing:\n  - raw asset price,\n  - cumulative strategy value (base 100),\n- interactive controls for:\n  - strategy parameters,\n  - data frequency selection.\n\n---\n\n## 5. Quant B — Multi-Asset Portfolio Module\n\n### Objective\nExtend the analysis to a **portfolio of multiple assets** (at least 3 simultaneously).\n\n### Portfolio construction\nTwo portfolio modes are available:\n1. **Fixed weights**\n   - equal-weight,\n   - custom user-defined weights.\n2. **Strategy-based allocation**\n   - portfolio weights derived from Quant A strategy signals.\n\n### Allocation \u0026 rebalancing\n- allocation rules:\n  - equal-weight,\n  - inverse volatility,\n- rebalancing frequency:\n  - none,\n  - daily,\n  - weekly,\n  - monthly.\n\n### Portfolio metrics\nThe module computes:\n- portfolio value and returns (base 100),\n- annualized volatility and return,\n- CAGR,\n- Sharpe ratio,\n- maximum drawdown,\n- correlation matrix,\n- annualized covariance matrix,\n- diversification ratio,\n- effective number of assets,\n- risk contributions by asset.\n\n### Visualization\n- comparison of individual assets vs portfolio value,\n- correlation, covariance and distance heatmaps,\n- tables of weights, volatilities and risk contributions.\n\n---\n\n## 6. Application Structure\n\n```text\nPROJET/\n├── .streamlit/\n│   └── config.toml              # Streamlit configuration (layout, theme)\n│\n├── app/\n│   ├── quant_a/                 # Quant A — Single Asset module\n│   │   ├── data_loader.py       # Market data retrieval (API)\n│   │   ├── strategies.py        # Single-asset strategies\n│   │   ├── metrics.py           # Performance metrics\n│   │   ├── optimizers.py        # Portfolio/strategy optimizers\n│   │   ├── daily_report.py      # Daily report generation (cron)\n│   │   ├── ui_quant_a.py        # Streamlit UI for Quant A\n│   │   ├── universe.py          # Asset universe definition\n│   │   └── readme_quant_a.md    # Quant A technical documentation\n│   │\n│   ├── quant_b/                 # Quant B — Multi-Asset Portfolio module\n│   │   ├── data_adapter.py      # Adapter to reuse Quant A data loader\n│   │   ├── strategies.py        # Multi-asset strategies\n│   │   ├── portfolio.py         # Portfolio valuation logic\n│   │   ├── backtest.py          # Portfolio backtesting \u0026 turnover\n│   │   ├── metrics.py           # Portfolio \u0026 diversification metrics\n│   │   └── page_quant_b.py      # Streamlit UI for Quant B\n│   │\n│   └── __init__.py\n│\n├── docs/                        # Technical documentation\n│   └── api_quant_a.md           # Quant A public API reference\n├── reports/                     # Daily reports generated via cron\n├── screenshots/                 # Application screenshots\n├── main.py                      # Streamlit application entry point\n├── requirements.txt             # Python dependencies\n├── LICENSE\n└── README.md\n```\n\n---\n\n## 7. Installation\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/MaximeFARRE/Projet-Python-Git-A4.git\ncd Projet-Python-Git-A4\n\n# 2. Create and activate a virtual environment\npython -m venv .venv\nsource .venv/bin/activate        # Windows: .venv\\Scripts\\activate\n\n# 3. Install dependencies\npip install -r requirements.txt\n\n# 4. Launch the dashboard\nstreamlit run main.py\n```\n\nOpen your browser at `http://localhost:8501`.\n\n### Automate daily reports with cron (Linux / macOS)\n\nAdd the following line to your crontab (`crontab -e`) to generate a CAC 40 report every weekday at 18:00:\n\n```\n0 18 * * 1-5 cd /path/to/project \u0026\u0026 /path/to/.venv/bin/python -m app.quant_a.daily_report \u003e\u003e logs/cron.log 2\u003e\u00261\n```\n\n---\n\n## 8. Screenshots\n\n*Screenshots will be added here once the application is running.*\n\n\u003c!-- To add a screenshot:\n1. Run `streamlit run main.py`\n2. Take a screenshot and save it to screenshots/\n3. Replace this comment with: ![Dashboard](screenshots/dashboard.png)\n--\u003e\n\n---\n\n## 9. Known Limitations\n\n- **Quant B integration**: some features described in section 5 are developed on the `quant_b` branch and require a merge to run end-to-end.\n- **No transaction costs**: the backtester does not model bid-ask spreads or commissions. All results are gross of fees.\n- **Intraday data depth**: Yahoo Finance limits intraday history to the last 5–7 calendar days depending on the interval.\n- **In-sample optimization**: the parameter grid search runs on the full selected period — no walk-forward or out-of-sample validation is performed.\n- **ML forecasting**: the linear regression model in Quant A is illustrative only and is not intended for production trading signals.\n\n---\n\n## License\n\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximefarre%2Fquantitative-finance-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximefarre%2Fquantitative-finance-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximefarre%2Fquantitative-finance-dashboard/lists"}