StockMarket
Application de suivi de portefeuille d'actions avec analyse statistique, indicateurs techniques et stratégie de trading backtestée.
Le projet
Un outil personnel qui combine suivi de portefeuille, analyse statistique et backtesting de stratégies — le tout dans une seule application. L'objectif : prendre des décisions d'investissement basées sur des données, pas sur l'intuition.
Pourquoi construire ça
Les outils existants forcent à choisir : soit un tracker de portfolio (Yahoo Finance, Ghostfolio), soit un outil de backtesting (Backtrader, QuantConnect). Aucun ne combine les deux avec de la transparence sur les modèles. StockMarket comble ce vide.
Stack technique
| Composant | Technologie |
|---|---|
| Langage | Python 3.12+ |
| Interface | Streamlit + Plotly |
| Base de données | SQLite + SQLModel |
| Données marché | yfinance (historique) + Finnhub (temps réel) |
| Indicateurs | ta (SMA, EMA, RSI, MACD, Bollinger, ATR, OBV) |
| Tests | pytest (29 tests) |
| Linter | ruff |
Fonctionnalités
- Suivi de portefeuille : CRUD achats/ventes, holdings, P&L avec prix temps réel
- Analyse statistique : rendements, volatilité, Sharpe ratio, max drawdown, corrélations
- Indicateurs techniques : 7 indicateurs calculés automatiquement
- Stratégie Mean-Reversion + Breakout : backtesting avec optimisation grid search et validation train/test
- Dashboard Streamlit : 5 pages interactives (Portfolio, Analyse, Comparer, Stratégie, Transactions)
Stratégie de trading
La stratégie repose sur des bandes d'écart-type autour d'une moyenne glissante :
upper_2 = μ + a₂·σ → BUY (breakout haussier)
upper_1 = μ + a₁·σ → SELL (take profit)
lower_1 = μ - a₁·σ → BUY (buy the dip)
lower_2 = μ - a₂·σ → SELL (stop loss)
Les paramètres optimaux (a₁, a₂, window) sont trouvés par grid search sur une période d'entraînement, puis validés sur une période de test pour éviter l'overfitting.
Ce que j'ai appris
- Structurer une application data Python (séparation data / analysis / viz)
- Implémenter et valider un backtest sans tomber dans l'overfitting
- Utiliser Streamlit pour du prototypage rapide de dashboards interactifs
- Intégrer plusieurs sources de données financières (yfinance, Finnhub)