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.
- ✨ Fonctionnalités
- ⚡ Démarrage Rapide
- 🏗️ Architecture
- 🔧 Installation Détaillée
- 🎯 Utilisation
- 🔒 Sécurité
- 📊 Exemples
- ❓ FAQ
- 📄 Licence
- 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é
- 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
- 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
- É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 CSV des données historiques
- Résumé exécutif généré automatiquement
- Sauvegarde des graphiques en 300 DPI
- Interface responsive mode plein écran
- Python 3.8 ou supérieur
- 4 Go de RAM minimum
- Connexion internet pour le téléchargement des données
# 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# Version Web (Recommandée)
streamlit run app_streamlit.py
# Version CLI (Scripts automatisés)
python main.pyDelsIo/
├── 📱 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 Pythonstreamlit>=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# 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# Installer depuis requirements.txt
pip install -r requirements.txt
# Ou installer manuellement
pip install streamlit yfinance pandas numpy matplotlib seaborn cryptography# 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# 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-
Configurer votre capital (10,000€ par défaut)
-
Sélectionner les actifs via la liste déroulante
-
Ajuster les pondérations (total = 100%)
-
Cliquer sur "Lancer l'Analyse Complète"
-
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
-
# 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%]# 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=debugDé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 STOPLes 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
# tools/sign.py (Privé)
def generate_keys():
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048 # RSA-2048
)# 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()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%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%- Courbe de Performance : Évolution de 15,000€ à 43,350€ sur 5 ans
- Heatmap de Corrélation : Couleurs indiquant les relations entre actifs
- Frontière Efficiente : Nuage de 5000 portefeuilles simulés
- Graphique Drawdown : Zones rouges montrant les périodes de perte
❔ "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.csvexiste - 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)
🔒 "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.sigmanquant
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 -nooutSolution rapide :
-
Supprimez
license.jsonetlicense.sig -
Exécutez python
tools/generate_license.py -
Redémarrez l'application
🐌 "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 batchsParamè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
📉 "Les résultats semblent incorrects"
Vérifications à effectuer :
-
Somme des poids = 100% ?
# Les poids doivent être normalisés sum(weights) == 1.0 # True
-
Période cohérente ?
- Certains actifs n'existaient pas il y a 30 ans
- Vérifier les dates de création des entreprises
- 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())
"Informations de Licence
PRODUIT: DelsIo
VERSION: 1.0.0
AUTEUR: Dels Dinla Marcel
TYPE: Licence Propriétaire
USAGE: Usage personnel et professionnel
DISTRIBUTION: Restreinte- 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
{
"author": "Dinla Marcel",
"product": "DelsIo",
"date": "31/01/2026",
"type": "Owner license",
"use": "Personal and professional use",
"distribution": "Restricted"
}Pour obtenir une licence ou des informations commerciales :
- 📧 Email :
dels.git@gmail.com
Dels Dinla Marcel
Data Scientist & IA. En Licence à l'Institut de Formation et de Recherche en Informatique (IFRI Bénin)
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

