Aller au contenu principal
AnthemionAnthemion
Retour aux projets

StockMarket

Aucun outil ne combinait suivi de portefeuille et backtesting avec transparence. J'ai construit le mien — analyse statistique, 7 indicateurs techniques, stratégie mean-reversion validée.

PythonStreamlitSQLiteData ScienceTrading
1 février 2026
StockMarket

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

ComposantTechnologie
LangagePython 3.12+
InterfaceStreamlit + Plotly
Base de donnéesSQLite + SQLModel
Données marchéyfinance (historique) + Finnhub (temps réel)
Indicateursta (SMA, EMA, RSI, MACD, Bollinger, ATR, OBV)
Testspytest (29 tests)
Linterruff

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)