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
| Chemin | Objectif |
|---|---|
scripts/compute_drawdown.py | CSV quotidien → plus haut et plus bas sur 52 semaines, % de baisse, rendements, clôtures hebdomadaires |
scripts/verify.py | Re-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.py | JSON de travail + verified.json → une page HTML autonome (utilise assets/report.css) |
scripts/build_email.py | Mê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.py | Pour 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.json | La watchlist par défaut utilisée lorsque l'utilisateur ne nomme aucun ticker (modifiable par l'utilisateur) |
references/worker_brief.md | Le brief que chaque sous-agent suit (remplir les espaces réservés {…}) |
references/schema.md | Le 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
- 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.jsonet utilisez sondefault_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'
iddedefaults.json(SPX, DJI) ou un label court commeCOMPcomme 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).
- Aucun ticker nommé ("lance mon analyse d'actions", "comment se situe le marché par rapport aux plus hauts ?") : lisez
- Créez un dossier de travail :
WORK_DIR=$PWD/drawdown-<YYYY-MM-DD>. - 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.pyet 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.pyouassets/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.
- Construire l'email.
Le code de sortie 2 signifie que l'adresse est invalide : demandez à l'utilisateur de la corriger. Le script écritpython3 $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>"drawdown_report.eml(HTML + texte brut, rapport en pièce jointe, destinataires et objet remplis), ainsi queemail_body.html,email_body.txtetemail.json. - Livrez-le. Envoyez
drawdown_report.emlavec SendUserFile (affichageattach). - Dites à l'utilisateur comment l'envoyer, en deux ou trois lignes :
- Ouvrez le
.emldans 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. Envoyezscripts/send_email.pyaussi s'ils le demandent.
- Ouvrez le
- 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 :
- Une phrase disant ce qu'est la page.
- Un tableau markdown trié par baisse, avec les colonnes : ticker, dernière clôture, plus haut sur 52 semaines (date), baisse.
- Deux ou trois puces avec les principales conclusions pour l'ensemble des tickers.
- Une courte note "Lacunes de données" couvrant les échecs d'outils qui ont affecté l'exécution.
- Si un email a été demandé : une ligne disant que le
.emlest prêt à envoyer et comment.
Ne récapitulez pas les étapes.
Non-négociables
- Chaque chiffre provient d'un appel d'outil, avec sa source et son horodatage.
- "Pas de données" vaut mieux qu'une supposition.
- Tous les calculs sont effectués dans les scripts.
- 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.
- Pas de recommandation d'achat ou de vente. Présentez les deux cas de manière équitable.