Analyse d'actions

Analyse la distance entre le cours actuel d'actions ou d'ETF et leur plus haut sur 52 semaines, explique les causes de la baisse, présente les arguments haussiers et baissiers, puis génère un rapport HTML cohérent et, si l'utilisateur fournit une adresse e-mail, prépare un email prêt à envoyer.

Qu'est-ce que Analyse d'actions ?

Cette compétence permet aux agents IA d'effectuer une analyse standardisée de drawdown (baisse par rapport au plus haut sur 52 semaines) pour une liste d'actions ou d'ETF. Elle utilise un ensemble de scripts Python pour calculer les métriques de performance, les écarts par rapport aux plus hauts et générer un rapport HTML complet. L'agent orchestre le processus : il lit la liste de tickers (ou utilise une watchlist par défaut), déploie des sous-agents pour la recherche, vérifie les données via un script de validation, puis construit et publie le rapport. La compétence prend en charge à la fois les tickers individuels et les indices (S&P 500, Dow Jones, etc.), et peut préparer un email formaté pour l'envoi par l'utilisateur. Elle est conçue pour fonctionner avec des outils de développement d'agents comme Claude Code ou Cursor, en respectant des principes stricts : pas de recommandations d'achat/vente, pas d'accès aux outils de trading, toutes les données vérifiées et sourcées.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wbdou2006/ClaudeSkills/tree/HEAD/stock-analysis

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Analyse d'actions ?

Cette compétence produit le même rapport à chaque utilisation :

  • un tableau récapitulatif
  • un panneau par ticker, contenant :
    • les faits
    • un graphique hebdomadaire par rapport au plus haut sur 52 semaines
    • les rendements
    • les facteurs de la baisse
    • les arguments haussiers et baissiers
    • les participations, les lacunes de données et le journal de calcul

Les scripts effectuent tous les calculs et le HTML. Votre travail est la recherche et la vérification. Ne redessinez pas la page et n'écrivez pas de HTML à la main.

SKILL_DIR est le dossier contenant ce fichier. Trouvez-le une fois avec dirname sur ce chemin SKILL.md.

Fichiers

CheminObjectif
scripts/compute_drawdown.pyCSV quotidien → plus haut et plus bas sur 52 semaines, % de baisse, rendements, clôtures hebdomadaires
scripts/verify.pyRe-dérive chaque chiffre clé à partir des CSV, vérifie les champs et les sources, écrit verified.json, quitte avec le code 1 en cas de problème
scripts/build_report.pyJSON de travail + verified.json → une page HTML autonome (utilise assets/report.css)
scripts/build_email.pyMêmes chiffres vérifiés → drawdown_report.eml prêt à envoyer (HTML + texte compatible email, rapport en pièce jointe) ; valide l'adresse
scripts/send_email.pyPour que l'utilisateur exécute sur son ordinateur : envoie le .eml via SMTP avec une demande de confirmation et un mot de passe d'application saisi localement
defaults.jsonLa watchlist par défaut utilisée lorsque l'utilisateur ne nomme aucun ticker (modifiable par l'utilisateur)
references/worker_brief.mdLe brief que chaque sous-agent suit (remplir les espaces réservés {…})
references/schema.mdLe contrat <TICKER>.json
examples/run-2026-10-16/Un exemple de référence complet (FTEC, QQQ, SMH, ARTY) : quatre JSON de travail et le report.html final. Utilisez-le comme référence pour la profondeur, le ton et le style de citation.

Flux de travail

1. Configuration

  1. Lisez la liste des tickers depuis la demande de l'utilisateur.
    • Aucun ticker nommé ("lance mon analyse d'actions", "comment se situe le marché par rapport aux plus hauts ?") : lisez $SKILL_DIR/defaults.json et utilisez son default_watchlist, dans cet ordre. Dites dans votre première ligne que vous utilisez la watchlist par défaut et listez-la.
    • Des tickers nommés : utilisez exactement ceux-là ; n'ajoutez pas les valeurs par défaut sauf si l'utilisateur le demande (par exemple "les habituels plus NVDA").
    • Indices (S&P 500, Dow Jones, Nasdaq Composite…) : recherchez le niveau de l'indice lui-même, en utilisant l'id de defaults.json (SPX, DJI) ou un label court comme COMP comme ticker dans les noms de fichiers. Dites au sous-agent qu'il s'agit d'un indice (voir les notes sur les indices dans le brief).
  2. Créez un dossier de travail : WORK_DIR=$PWD/drawdown-<YYYY-MM-DD>.
  3. Créez une liste de tâches avec :
    • une tâche par ticker
    • "Vérifier les chiffres"
    • "Construire et publier le rapport"

2. Répartir

Lancez un sous-agent par ticker, en parallèle et en arrière-plan. Le prompt de chacun est :

  • le texte complet de references/worker_brief.md,
  • avec {TICKER}, {WORK_DIR}, {SKILL_DIR} et {TODAY} remplis,
  • plus les angles spécifiques au ticker à vérifier. Pour un fonds de semi-conducteurs, par exemple : contrôles à l'exportation, dépenses d'investissement des hyperscalers, cycle mémoire.

Lorsque l'utilisateur ne nomme qu'un ou deux tickers et n'a pas demandé de sous-agents, vous pouvez effectuer la recherche vous-même en suivant le même brief.

3. Attendre

Lorsqu'un sous-agent termine, cochez sa tâche et postez une ligne : le ticker, son % de baisse et la date de son plus haut. Ne lisez pas les transcriptions des sous-agents.

4. Vérifier

Exécutez :

python3 $SKILL_DIR/scripts/verify.py --dir $WORK_DIR --tickers <T...>

S'il signale MISMATCH, MISSING ou NO SOURCE/TS, corrigez le problème avant de construire :

  • Erreurs de calcul ou de recopie : relancez compute_drawdown.py et corrigez le JSON à partir de <T>_metrics.json.
  • Recherche manquante : renvoyez le sous-agent avec SendMessage.

UNCITED et NO CROSS-CHECK sont des avertissements. Mentionnez-les dans votre réponse s'ils subsistent.

5. Construire

Exécutez :

python3 $SKILL_DIR/scripts/build_report.py --dir $WORK_DIR --tickers <T...> \
  --out $WORK_DIR/drawdown_report.html --title "<nom de 2 à 4 mots>" --eyebrow "<par ex. Analyse des baisses d'ETF>"

Choix du titre : choisissez un nom court et spécifique, comme "Baisses des ETF tech" ou "Replis des valeurs semi-conducteurs". Utilisez le même titre pour les exécutions répétées sur le même panier.

6. Publier

Publiez le HTML avec l'outil Artifact, en utilisant icon: "chart" et une description d'une phrase qui nomme les tickers et la date de référence.

  • Exécution répétée sur le même panier : si l'utilisateur souhaite conserver l'ancien lien, republiez vers l'URL de cet artifact.
  • Ne modifiez pas le HTML généré. Les modifications à l'échelle du rapport appartiennent à build_report.py ou assets/report.css.

7. Email (uniquement si l'utilisateur a fourni une adresse)

Sautez cette étape sauf si le message de l'utilisateur inclut une adresse e-mail, par exemple "…et envoie-le par email à [email protected]". S'il dit "envoie-le-moi par email" sans adresse, demandez-en une ; ne devinez jamais et ne réutilisez pas une adresse d'ailleurs.

Pas de connecteurs. N'utilisez pas Gmail, Outlook ou tout autre connecteur email ou automatisation de navigateur, et ne demandez ni ne gérez jamais un mot de passe email. L'envoi se fait du côté de l'utilisateur : vous préparez un message prêt à envoyer, l'utilisateur l'envoie.

  1. Construire l'email.
    python3 $SKILL_DIR/scripts/build_email.py --dir $WORK_DIR --tickers <T...> --to <adresse...> \
      --report $WORK_DIR/drawdown_report.html --artifact-url <lien publié> --title "<même titre>"
    
    Le code de sortie 2 signifie que l'adresse est invalide : demandez à l'utilisateur de la corriger. Le script écrit drawdown_report.eml (HTML + texte brut, rapport en pièce jointe, destinataires et objet remplis), ainsi que email_body.html, email_body.txt et email.json.
  2. Livrez-le. Envoyez drawdown_report.eml avec SendUserFile (affichage attach).
  3. Dites à l'utilisateur comment l'envoyer, en deux ou trois lignes :
    • Ouvrez le .eml dans Outlook (s'ouvre comme un brouillon) ou Apple Mail (Message → Envoyer à nouveau), vérifiez-le et appuyez sur Envoyer.
    • Ou, depuis un terminal sur son propre ordinateur : python3 send_email.py drawdown_report.eml --from <son adresse>. Le script affiche les destinataires, demande confirmation et invite à saisir un mot de passe d'application lui-même. Envoyez scripts/send_email.py aussi s'ils le demandent.
  4. Confidentialité du lien. L'artifact est privé pour l'utilisateur. Si le destinataire est quelqu'un d'autre, dites qu'ils devront se fier au rapport joint à moins que l'utilisateur ne partage la page.

8. Répondre

Gardez la réponse courte :

  1. Une phrase disant ce qu'est la page.
  2. Un tableau markdown trié par baisse, avec les colonnes : ticker, dernière clôture, plus haut sur 52 semaines (date), baisse.
  3. Deux ou trois puces avec les principales conclusions pour l'ensemble des tickers.
  4. Une courte note "Lacunes de données" couvrant les échecs d'outils qui ont affecté l'exécution.
  5. Si un email a été demandé : une ligne disant que le .eml est prêt à envoyer et comment.

Ne récapitulez pas les étapes.

Non-négociables

  1. Chaque chiffre provient d'un appel d'outil, avec sa source et son horodatage.
  2. "Pas de données" vaut mieux qu'une supposition.
  3. Tous les calculs sont effectués dans les scripts.
  4. Outils en lecture seule uniquement. N'utilisez jamais les outils d'ordre, d'alerte ou de watchlist. N'envoyez jamais d'email vous-même ; l'étape 7 ne fait que préparer un message que l'utilisateur envoie.
  5. Pas de recommandation d'achat ou de vente. Présentez les deux cas de manière équitable.

Skills associés