Compétence d'Analyse de Portefeuille
Analyse le portefeuille d'actions de Justin avec un benchmark sur le S&P 500 (SPY).
Fichiers
portfolio.py— Classe Portfolio pour gérer les positionsanalyze.py— Moteur d'analyse (volatilité, corrélation, Sortino, diversification, croissance)prices.py— Module de récupération des prix
Utilisation
Mettre à jour le portefeuille depuis un CSV Fidelity
from portfolio import Portfolio
p = Portfolio()
p.load_from_fidelity_csv("/chemin/vers/export.csv")
p.save()
Lancer l'analyse
python analyze.py # Par défaut 90 jours
python analyze.py --days 180 # Période personnalisée
python analyze.py --json portfolio.json --days 60
Sortie
Texte formaté pour Slack avec :
- Volatilité par position et du portefeuille (annualisée)
- Matrice de corrélation
- Score de diversification
- Ratio Sortino (taux sans risque 0 %)
- Croissance vs benchmark SPY
Surveillant de Stop Suiveur
trailing_stops.py — Stops suiveurs de volatilité ajustés au bêta pour chaque position.
Fonctionnement
- Calcule la volatilité annualisée glissante sur 30 jours et le bêta par rapport à SPY
- Suit le prix le plus haut glissant par position
- Calcule la baisse ajustée = baisse brute depuis le sommet − (bêta × baisse de SPY depuis son sommet)
- Alerte lorsque la baisse ajustée dépasse 1,5× la volatilité quotidienne pendant 2 jours de bourse consécutifs
- État persistant dans
stops_state.json
Utilisation
python trailing_stops.py --status # Afficher les niveaux actuels pour toutes les positions
python trailing_stops.py --check # Surveillance quotidienne (déclenche des alertes en cas de dépassement)
Sortie
--status: Prix actuel, plus haut glissant, volatilité, bêta, distance au niveau de stop--check: Alerte en cas de dépassement, sinon « tout est clair ». Réinitialise l'état après alerte.
Rapports
report.py — Rapports de portefeuille multi-cadence avec sortie formatée pour Slack.
Utilisation
python report.py --cadence daily # Résumé quotidien court (cours en direct Finnhub)
python report.py --cadence weekly # Performance hebdomadaire + stops suiveurs
python report.py --cadence monthly # Analyse complète, fenêtre de 30 jours
python report.py --cadence quarterly # 90 jours + tendances de momentum + dérive des poids
python report.py --cadence yearly # 252 jours + classement annuel + tendance de diversification
Détails par Cadence
- Quotidienne : ~10-15 lignes. Cours en direct, changements de positions, meilleur/pire, comparaison SPY
- Hebdomadaire : ~20 lignes. Changements hebdomadaires, distances des stops suiveurs, volatilité
- Mensuelle : Suite complète — volatilité, matrice de corrélation, Sortino, diversification, croissance vs SPY, P/L, stops suiveurs
- Trimestrielle : Mensuelle + tendances de momentum (accélération/décélération), dérive des poids par rapport à l'égalité des poids
- Annuelle : Mensuelle + classements annuels, tendance du score de diversification par trimestre
Sources de Données
- Quotidien : Cours en direct Finnhub (pas de problème de limite de taux)
- Hebdomadaire+ : Historique AlphaVantage (délai de 3 secondes entre les appels pour respecter la limitation de débit)
Cribleur de Momentum
momentum_screener.py — Parcourt le marché à la recherche des actions à fort momentum en utilisant les données Yahoo Finance.
Utilisation
python3 momentum_screener.py # Par défaut : top 20 par momentum sur 10 jours
python3 momentum_screener.py --lookback 5 # Momentum sur 5 jours
python3 momentum_screener.py --lookback 20 # Momentum sur 20 jours (1 mois)
python3 momentum_screener.py --top 10 # Top 10 résultats
python3 momentum_screener.py --universe bullpen # Parcourir uniquement les actions du bullpen
python3 momentum_screener.py --universe sp500 # S&P 500 complet
python3 momentum_screener.py --min-volume 500000 # Filtre de volume quotidien moyen minimum
python3 momentum_screener.py --compare # Marquer les positions actuelles dans les résultats
python3 momentum_screener.py --json # Sortie JSON
Sortie
Par action : rendement brut, volatilité annualisée, momentum ajusté au risque, constance des jours haussiers, volume moyen.
Suivi de Rotation
rotation_tracker.py — Enregistre les entrées/sorties du portefeuille et suit la performance des rotations.
Utilisation
python3 rotation_tracker.py --log GOOGL exit 311.49 "Dépassement du stop suiveur"
python3 rotation_tracker.py --log POWL enter 85.20 "Sélection par le cribleur de momentum"
python3 rotation_tracker.py --stats # Statistiques des trades (taux de réussite, gain/perte moyen, etc.)
python3 rotation_tracker.py --json # Sortie JSON
Document de Stratégie
Voir docs/finance/STRATEGY.md pour la documentation complète de la stratégie de rotation momentum.
Remarques
- Utilise AlphaVantage pour les prix historiques (5 appels/min pour le niveau gratuit, délai de 3 secondes entre les appels)
- Les données du portefeuille sont stockées au format JSON dans
~/hex/skills/portfolio/portfolio.json - SPAXX (marché monétaire) est exclu des analyses