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.

Développeur & data analyst2 moisEn développement actif
PythonStreamlitSQLiteData ScienceTrading
1 février 2026
7Indicateurs
29Tests
5Pages Streamlit
2Stratégies
StockMarket

Problème

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.

Solution

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.

Architecture

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

Résultats

  • 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)