Skip to content

Repository files navigation

BioFlux Logo

DelsIO - Programme d'Analyse de Portefeuille

Python License Security Finance Streamlit

Un programme professionnel d'analyse quantitative de portefeuilles financiers, conçu pour les investisseurs particuliers et professionnels. Le programme permet de construire, analyser et optimiser des portefeuilles multi-actifs avec une interface intuitive et des calculs financiers avancés.


📋 Table des Matières


✨ Fonctionnalités

🔐 Système de Sécurité Intégré

  • Signature cryptographique RSA-2048 de tous les fichiers critiques
  • Vérification d'intégrité automatique au démarrage
  • Licence numérique signée avec expiration configurable
  • Protection anti-modification : l'application s'arrête si le code est altéré

📈 Analyse Financière Avancée

  • 502 actifs du S&P500 disponibles pour analyse
  • Période d'étude : de 1 à 30 ans ajustable
  • Métriques professionnelles :
    • Ratio de Sharpe optimisé
    • Volatilité annualisée
    • Rendement cumulé total
    • Maximum Drawdown (pire perte historique)
  • Matrice de corrélation interactive avec heatmap

🧮 Optimisation Quantitative

  • Simulation Monte Carlo de 5000 portefeuilles
  • Frontière efficiente visualisée en 2D
  • Optimisation automatique du Ratio de Sharpe
  • Répartition optimale des poids d'actifs

📊 Visualisations Professionnelles

  • Évolution du capital avec courbe de performance
  • Camembert d'allocation coloré par actif
  • Graphique de drawdown avec zones de perte
  • Heatmap de corrélation annotée
  • Frontière efficiente avec point optimal

💾 Export & Reporting

  • Export CSV des données historiques
  • Résumé exécutif généré automatiquement
  • Sauvegarde des graphiques en 300 DPI
  • Interface responsive mode plein écran

⚡ Démarrage Rapide

Prérequis

  • Python 3.8 ou supérieur
  • 4 Go de RAM minimum
  • Connexion internet pour le téléchargement des données

Installation en 3 étapes

# 1. Cloner et configurer
git clone https://github.com/votre-repo/QuantTerminal.git
cd QuantTerminal
python -m venv venv

# 2. Activer l'environnement
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate

# 3. Installer les dépendances
pip install -r requirements.txt

Lancement

# Version Web (Recommandée)
streamlit run app_streamlit.py

# Version CLI (Scripts automatisés)
python main.py

🏗️ Architecture

DelsIo/
├── 📱 Interface
│   ├── app_streamlit.py          # Interface web principale
│   └── main.py                   # Version ligne de commande
│
├── 🧠 Moteur de Calcul
│   ├── src/engine.py             # ❌ Cœur financier (calculs avancés)
│   ├── src/loader.py             #📥 Gestion des données
│   └── src/visualizer.py         #📊 Génération des graphiques
│
├── 🔐 Sécurité
│   ├── tools/integrity.py        #🔐 Vérification signature
│   ├── tools/license_check.py    #📜 Validation licence
│   ├── tools/sign.py             #✍️ Signature du projet
│   └── tools/generate_license.py #🔑 Générateur de licence
│
├── 📁 Données
│   └──  data/constituents.csv     #📋 Liste des 502 tickers S&P500
│
├── 🔑 Fichiers de Sécurité
│   ├── public_key.pem            #🔓 Clé publique
│   ├── private_key.pem           #🔒 Clé privée (SECRET)
│   ├── signature.sig             #✍️ Signature du code
│   ├── license.json              #📄 Fichier de licence
│   └── license.sig               #🔏 Signature de licence
│
└── 📚 Documentation
    ├── README.md                 #📖 Ce fichier
    └── requirements.txt          #📦 Dépendances Python

🔗 Dépendances Clés

streamlit>=1.28.0        # Interface web
yfinance>=0.2.33         # Données financières
pandas>=2.0.0           # Manipulation données
numpy>=1.24.0           # Calculs scientifiques
matplotlib>=3.7.0       # Visualisations
seaborn>=0.12.0         # Graphiques statistiques
cryptography>=41.0.0    # Sécurité RSA

🔧 Installation Détaillée

1. Configuration Initiale

# Créer l'environnement virtuel
python -m venv venv

# Activer selon votre OS
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate

# Mettre à jour pip
pip install --upgrade pip

2. Installation des Dépendances

# Installer depuis requirements.txt
pip install -r requirements.txt

# Ou installer manuellement
pip install streamlit yfinance pandas numpy matplotlib seaborn cryptography

3. Configuration de la Sécurité

# Générer les clés RSA (première fois)
python tools/sign.py

# Générer une licence valide
python tools/generate_license.py

4. Vérification de l'Installation

# Tester l'application
streamlit run app_streamlit.py

# Si tout fonctionne, vous verrez :
# ✅ Local URL: http://localhost:8501
# ✅ Network URL: http://192.168.x.x:8501

🎯 Utilisation

Interface Web (Streamlit)

  1. Configurer votre capital (10,000€ par défaut)

  2. Sélectionner les actifs via la liste déroulante

  3. Ajuster les pondérations (total = 100%)

  4. Cliquer sur "Lancer l'Analyse Complète"

  5. Explorer les résultats dans les 3 onglets :

    • 📈 Onglet Performance

      • Courbe d'évolution du capital
      • Statistiques clés (Sharpe, volatilité, rendement)
      • Camembert d'allocation
      • Matrice de corrélation
    • 🛡️ Onglet Stress Test & Risque

      • Maximum Drawdown historique
      • Analyse de résilience
      • Recommandations de risque
      • Graphique des pertes potentielles
    • 🧬 Onglet Optimisation

      • Frontière efficiente
      • Portefeuille optimal (max Sharpe)
      • Comparaison des allocations
      • Simulation Monte Carlo

Exemple de Configuration

# Configuration type pour un portefeuille tech
Capital : 25,000 €
Actifs : ["AAPL", "MSFT", "GOOGL", "AMZN", "NVDA"]
Période : 10 ans
Pondérations : [20%, 20%, 20%, 20%, 20%]

Commandes Utiles

# Réinitialiser le cache
streamlit cache clear

# Lancer en mode développement
streamlit run app_streamlit.py --server.port 8502

# Voir les logs
streamlit run app_streamlit.py --logger.level=debug

🔒 Sécurité

Architecture de Sécurité

Démarrage → Vérification Signature → Vérification Licence → Exécution
      │              │                      │
      ▼              ▼                      ▼
   Code OK?    Fichiers altérés?     Licence valide?
      │              │                      │
      ├──────────────┼──────────────────────┤
      ▼              ▼                      ▼
  Exécution     Message erreur        Message erreur
   normale          STOP                  STOP

Fichiers Protégés

Les fichiers suivants sont signés et vérifiés :

app_streamlit.py - Interface principale

main.py - Version CLI

src/engine.py - Moteur de calcul (CŒUR)

src/loader.py - Gestion des données

src/visualizer.py - Visualisations

tools/integrity.py - Vérificateur

tools/license_check.py - Gestionnaire licence

Génération des Clés

# tools/sign.py (Privé)
def generate_keys():
  private_key = rsa.generate_private_key(
      public_exponent=65537,
      key_size=2048  # RSA-2048
  )

Vérification au Démarrage

# app_streamlit.py
if not verify_signature():
    st.error("🚫 Programme modifié ou non authentique !")
    st.stop()

if not verify_license():
    st.warning("🔑 Licence invalide.")
    st.stop()

📊 Exemples

Exemple 1 : Portefeuille Tech

Actifs: [AAPL, MSFT, GOOGL, AMZN, TSLA]
Capital: 15,000€
Période: 5 ans
Résultats:
  - Rendement: +189%
  - Volatilité: 24.3%
  - Sharpe Ratio: 1.42
  - Max Drawdown: -34.2%

Exemple 2 : Portefeuille Diversifié

Actifs: [JNJ, PG, XOM, JPM, T]
Capital: 50,000€
Période: 15 ans
Résultats:
  - Rendement: +87%
  - Volatilité: 14.1%
  - Sharpe Ratio: 0.96
  - Max Drawdown: -18.7%

Visualisations Générées

  1. Courbe de Performance : Évolution de 15,000€ à 43,350€ sur 5 ans
  2. Heatmap de Corrélation : Couleurs indiquant les relations entre actifs
  3. Frontière Efficiente : Nuage de 5000 portefeuilles simulés
  4. Graphique Drawdown : Zones rouges montrant les périodes de perte

❓ FAQ

📊 Données & Téléchargement

❔ "Aucune donnée trouvée pour ces actifs"

Problème : L'application ne peut pas télécharger les données financières.

Solutions :

# 1. Tester votre connexion internet
ping google.com

# 2. Vérifier les tickers (utilisez ceux de la liste S&P500)
Tickers valides : ["AAPL", "MSFT", "GOOGL", "AMZN", "TSLA"]

# 3. Tester avec yfinance directement
python -c "import yfinance as yf; data = yf.download('AAPL', period='1mo'); print(data.shape)"

Si le problème persiste :

  • Vérifiez que le fichier data/constituents.csv existe
  • Redémarrez l'application
  • Essayez avec une période plus courte (ex: 1 an au lieu de 10 ans)
❔ "Les données sont incomplètes ou erronées"

Problème : Certains actifs manquent de données historiques.

Cause : yFinance peut avoir des lacunes pour certains tickers.

Solution :

  • L'application filtre automatiquement les actifs avec +20% de données manquantes

  • Privilégiez les grandes capitalisations (AAPL, MSFT, etc.)

  • Vérifiez la période : +10 ans pour certains actifs jeunes (ex: SNOW)

🔐 Sécurité & Licence

🔒 "Programme modifié ou non authentique !"

Message d'erreur :

🚫 Programme modifié ou non authentique !
Veuillez contacter le développeur pour obtenir une version valide.

Causes possibles :

  • Modification d'un fichier signé
  • Signature cryptographique corrompue
  • Fichier signature.sig manquant

Résolution :

# 1. Vérifier l'intégrité
python -c "from tools.integrity import verify_signature; print('✅ OK' if verify_signature() else '❌ Échec')"

# 2. Regénérer la signature
python tools/sign.py

# 3. Vérifier les fichiers protégés
ls -la app_streamlit.py src/engine.py tools/integrity.py
🔑 "Licence invalide"

Problème : La vérification de licence échoue.

Étapes de diagnostic :

# 1. Vérifier les fichiers de licence
ls -la license.json license.sig

# 2. Générer une nouvelle licence
python tools/generate_license.py

# 3. Vérifier la date d'expiration
cat license.json | python -m json.tool

# 4. Vérifier la clé publique
openssl rsa -pubin -in public_key.pem -text -noout

Solution rapide :

  • Supprimez license.json et license.sig

  • Exécutez python tools/generate_license.py

  • Redémarrez l'application

⚡ Performance & Mémoire

🐌 "L'application est très lente"

Causes :

  • Trop d'actifs sélectionnés (>15)

  • Période trop longue (>20 ans)

  • Mémoire RAM insuffisante

Optimisations :

# Configuration recommandée :
Actifs : 5-10 maximum
Période : 5-15 ans
RAM disponible : 4 Go minimum

# Pour les grandes analyses :
1. Fermer les autres applications
2. Réduire le nombre de simulations (modifier engine.py)
3. Utiliser la version CLI (main.py) pour les batchs

Paramètres optimaux :

  • Portefeuille standard : 8 actifs, 10 ans
  • Analyse rapide : 5 actifs, 5 ans
  • Étude approfondie : 12 actifs, 15 ans (8 Go RAM)
💾 "Erreur de mémoire insuffisante" -

Message typique : MemoryError ou Killed

Solutions :

  • Réduire la charge :

    # Dans app_streamlit.py, réduire le nombre de simulations :
    # Ligne ~120 : num_portfolios = 5000 → 2000
  • Libérer de la mémoire :

    # Linux/Mac
    sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
    
    # Windows
    # Redémarrer l'ordinateur
  • Augmenter la swap (Linux) :

    sudo fallocate -l 4G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile

📈 Calculs & Résultats

📉 "Les résultats semblent incorrects"

Vérifications à effectuer :

  1. Somme des poids = 100% ?

    # Les poids doivent être normalisés
    sum(weights) == 1.0  # True
  2. Période cohérente ?

  • Certains actifs n'existaient pas il y a 30 ans
  • Vérifier les dates de création des entreprises
  1. Devise correcte ?
  • Tous les prix sont en USD
  • Le capital est converti selon le taux du jour

Test de validation :

# Tester avec un portefeuille simple
python -c "
from src.loader import PortfolioLoader
from src.engine import PortfolioEngine

loader = PortfolioLoader(['AAPL', 'MSFT'], years=2)
df = loader.download_data()
engine = PortfolioEngine(df, [0.5, 0.5])
print(engine.portfolio_performance())
"

📄 Licence

Informations de Licence

PRODUIT: DelsIo
VERSION: 1.0.0
AUTEUR: Dels Dinla Marcel
TYPE: Licence Propriétaire
USAGE: Usage personnel et professionnel
DISTRIBUTION: Restreinte

Conditions d'Utilisation

  • Usage Personnel : Autorisé avec licence valide
  • Usage Commercial : Licence spécifique requise
  • Modification du Code : Interdite sans autorisation
  • Distribution : Interdite sans accord écrit
  • Support : Inclus avec licence valide

Fichier de Licence

{
  "author": "Dinla Marcel",
  "product": "DelsIo",
  "date": "31/01/2026",
  "type": "Owner license",
  "use": "Personal and professional use",
  "distribution": "Restricted"
}

Obtention d'une Licence

Pour obtenir une licence ou des informations commerciales :

  • 📧 Email : dels.git@gmail.com

👤 Auteur

VX

Dels Dinla Marcel

Data Scientist & IA. En Licence à l'Institut de Formation et de Recherche en Informatique (IFRI Bénin)

📧 Support

Pour toute question :

  • Email : dels.git@gmail.com

💡 Conseil Pro : Utilisez l'optimisation Monte Carlo pour découvrir des allocations contre-intuitives mais performantes !

DelsIo - Optimisez vos investissements avec la puissance du quantitatif

About

Un programme professionnel d'analyse quantitative de portefeuilles financiers, conçu pour les investisseurs particuliers et professionnels. Le programme permet de construire, analyser et optimiser des portefeuilles multi-actifs avec une interface intuitive et des calculs financiers avancés.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages