Skip to main content

Framework de Backtesting de Stratégies d’Investissement

Overview

Ce dépôt contient un framework de backtesting conçu pour tester, analyser et comparer différentes stratégies d’investissement sur des données historiques. Il est flexible, extensible, et adapté à divers types d'actifs financiers tels que les actions, les crypto-monnaies ou autres instruments financiers.


Fonctionnalités principales

  • Gestion des données :

    • Prise en charge des fichiers CSV et Parquet, ou directement des DataFrame pandas.
    • Compatible avec des sources de données externes telles que yfinance ou pandas-datareader.
    • Données indexées par des dates avec prise en charge de colonnes personnalisées (e.g., Close, Open, indicateurs financiers).
  • Stratégies d’investissement :

    • Définition des stratégies via une classe abstraite ou des décorateurs pour une flexibilité maximale.
    • Stratégies prédéfinies incluses : Moyenne Mobile, Quality, Value, MinVariance, PairsTrading, etc.
    • Support pour des stratégies mono-actif ou multi-actifs.
  • Backtesting performant :

    • Gestion des coûts de transaction, slippage, et ajustements basés sur la volatilité cible.
    • Options de rebalancement flexibles : journalier, hebdomadaire, mensuel, etc.
  • Analyse des résultats :

    • Statistiques détaillées : rendement total, ratio de Sharpe, drawdown maximum, VaR, etc.
    • Comparaison des performances entre plusieurs stratégies.
  • Visualisation avancée :

    • Graphiques interactifs avec matplotlib, seaborn ou plotly :
      • Rendements cumulés.
      • Heatmaps des rendements mensuels.
      • Distribution des rendements quotidiens.

Installation

Installez le framework directement depuis PyPI :

pip install Backtesting-Framework

Les dépendances sont gérées via pyproject.toml :

pip install poetry
poetry install
poetry check
poetry shell

Structure

Backtesting-Framework/ 
├── backtesting_framework/ 
├── Core/ # Composants principaux du framework. 
│ ├── init.py # Initialisation du module Core. 
│ ├── app.py # Gestionnaire principal de l'application. 
│ ├── Backtester.py # Composant central pour exécuter les backtests. 
│ ├── Calendar.py # Gestion des calendriers de trading et des dates. 
│ ├── Main.py # Point d'entrée pour l'exécution du framework. 
│ ├── Result.py # Classe pour gérer et analyser les résultats du backtest. 
│ └── Strategy.py # Classe abstraite définissant la structure des stratégies. 
├── Strategies/ # Implémentations des stratégies prédéfinies. 
│ ├── Utils/ # Fonctions utilitaires pour le traitement des données et autres. 
│ │ ├── init.py # Initialisation du module Utils. 
│ │ └── Tools.py # Fonctions utilitaires spécifiques. 
│ └── init.py # Fichier d'initialisation du module principal. 
├── Datasets/ # Données d'exemple utilisées pour les tests et le développement. 
├── tests/ # Tests unitaires pour valider le fonctionnement du framework. 
│ ├── init.py # Initialisation du module de tests. 
│ └── test_backtester.py # Tests pour le composant Backtester. 
├── Framework de Backtesting de Stratégies d’Investissement.ipynb # Jupyter Notebook de démonstration du framework. 
├── pyproject.toml # Configuration du projet et gestion des dépendances avec Poetry. 
├── README.md # Documentation du projet (vous y êtes).

Utilisation

Le fichier Jupyter Notebook Framework de Backtesting de Stratégies d’Investissement.ipynb agit comme un guide utilisateur complet. Il présente les principales classes du framework, leurs arguments et leur fonctionnement. Vous y trouverez des exemples concrets pour la gestion des données, la création et l'exécution de stratégies, ainsi que l'analyse et la visualisation des résultats. Ce notebook est un excellent point de départ pour comprendre comment utiliser efficacement le framework et pour expérimenter avec vos propres stratégies d'investissement.


Interface Streamlit

Pour rendre l’utilisation du framework plus accessible, nous fournissons une interface utilisateur développée avec Streamlit. Elle vous permet de réaliser et de visualiser vos backtests sans avoir à écrire de code Python. Voici ce à quoi ressemble l’interface utilisateur :

Interface Streamlit

  • Panneau de configuration (côté gauche) :

    • Réglage des paramètres financiers (coûts de transaction, slippage, taux sans risque, etc.).
    • Choix de la fréquence de rebalancement (journalier, hebdomadaire, mensuel...).
    • Sélection du schéma de pondération (EqualWeight, MarketCapWeight...).
    • Définition d’un index de “special start” pour ignorer un certain nombre de lignes de données initiales.
    • Choix de la bibliothèque de visualisation (matplotlib, seaborn, plotly…).
    • Activations optionnelles (Vol Target, comparaison de stratégies, etc.).
  • Panneau principal (côté droit) :

    • Téléversement de fichiers de données (formats CSV, Parquet...).
    • Sélection de la stratégie (Moyenne Mobile, MinVariance, etc.).
    • Configuration des paramètres spécifiques à la stratégie (ex. taille de fenêtres pour une stratégie de moyennes mobiles).
    • Bouton d’exécution du backtest et affichage des résultats (statistiques, graphiques interactifs).

Pour lancer l'interface graphique Streamlit, exécutez la commande suivante depuis le terminal :

poetry run streamlit run backtesting_framework/Core/app.py

Auteurs

  • Nassim BOUSSAID
  • Nicolas COUTURAUD
  • Kartty MOUROUGAYA
  • Hugo SOULIER

Sous la supervision de M. Rémi Genet.


Licence

Ce projet est sous licence MIT.

Metadata

Release files for Backtesting-Framework 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Backtesting-Framework 0.1.6
File Size Uploaded
backtesting_framework-0.1.6.tar.gz 76.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Backtesting-Framework 0.1.6
File Interpreter ABI Platform
backtesting_framework-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 115.0 kB

Release files / backtesting_framework-0.1.6.tar.gz

Download URL backtesting_framework-0.1.6.tar.gz
Size 76.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f695483cf28219c3a6838b68a16dd74e0fb1db3c8cbab24c38f2603cbc8977e7
BLAKE2b-256 checksum
How to use checksums
462bafeed2ee931f5a8fdffdb9bf5929f5ce769abe94ecc1ce17f6b97e19df4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.11.1 Windows/10

Release files / backtesting_framework-0.1.6-py3-none-any.whl

Download URL backtesting_framework-0.1.6-py3-none-any.whl
Size 38.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b2f88f50ba5b2e113c0fe4d9ac3155d0ac9b22e2b3246582cb9a8a0b1d55af72
BLAKE2b-256 checksum
How to use checksums
53d5c588a4d1a63b16d047286f2b02bb3c61a3e3e2f7065846bbbd33990ebb65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.11.1 Windows/10

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page