Que fait BSE) ?
Produit une analyse structurée, basée sur des données, d'une ou plusieurs actions cotées sur le NSE/BSE en utilisant uniquement la recherche web (aucun connecteur de données de marché en direct n'est disponible). La sortie est un fichier JSON que d'autres compétences/sessions peuvent réutiliser, ainsi qu'un résumé lisible dans le chat.
Ceci est une compétence autonome — elle ne dépend pas et n'appelle pas les compétences du plugin trader-* (celles-ci sont pour le marché américain, pilotées par connecteur). Elle est destinée aux actions indiennes, pilotée par recherche web.
Exigences strictes — toujours
- Pas un conseil financier. Chaque rapport — en ligne et dans le champ
disclaimerdu JSON — doit indiquer qu'il s'agit d'une analyse informative provenant de sources publiques, et non d'un conseil en investissement, et que l'utilisateur doit vérifier auprès d'un conseiller enregistré SEBI avant d'agir. Ne jamais présenter une recommandation comme certaine. - D'abord, demander le mode. Avant de rechercher, demandez toujours à l'utilisateur de choisir entre Intraday et Long terme en utilisant
ask_user_input_v0, à moins qu'il ne l'ait déjà indiqué sans ambiguïté dans son message (par exemple, « day trade », « swing today » → intraday ; « investir pour 2 ans » → long terme). En cas d'ambiguïté, demandez. - Recherche web uniquement pour les prix, actualités, schémas, dépôts. N'inventez jamais un prix, une date ou un dépôt. Si un nombre ne peut pas être trouvé via la recherche, marquez-le
nullavec une note, ne devinez pas. - Priorité des sources (citez ce que vous avez réellement utilisé dans
sources_used) :- Primaire/officielle : BSE (bseindia.com), NSE (nseindia.com), communiqués de presse PIB/ministères gouvernementaux, SEBI, documents du budget de l'Union
- Recherche de courtiers : Groww, Zerodha Varsity/Pulse, Upstox, Angel One
- Actualités financières grand public (pour les « actualités récentes ») : Economic Times, Moneycontrol, LiveMint, Business Standard
- Évitez les contenus de basse qualité provenant d'agrégateurs/blogs sans auteur ni source primaire.
- Écrire le fichier JSON dans
trader/stock-analysis.jsondans le répertoire de travail (créez le dossiertrader/s'il est absent) à chaque exécution, puis présentez un résumé lisible dans le chat à partir des mêmes données. Sipresent_filesest disponible, présentez également le fichier JSON.
Flux de travail
Étape 1 — Recueillir les entrées
À partir du message de l'utilisateur, extrayez :
- Action(s) : ticker ou nom(s) d'entreprise. Résolvez en symbole NSE/BSE via recherche si seul un nom d'entreprise est donné (par exemple, « Reliance » →
RELIANCENSE /500325BSE). - Budget (₹), s'il est déjà indiqué dans le message. Sinon, il est recueilli à l'Étape 2 — le budget est toujours demandé, pour une seule action ou plusieurs, car l'abordabilité est l'une des quatre composantes du score. Si l'utilisateur refuse d'en donner un, procédez avec le poids de l'abordabilité redistribué dans les trois autres composantes, comme avant.
Étape 2 — Demander le mode et le budget
Appelez ask_user_input_v0 avec jusqu'à deux questions en un seul appel :
- « Est-ce pour du trading intraday (journalier) ou de l'investissement long terme ? » — options :
Intraday,Long terme - « Quel est votre budget ? » — demandez toujours ceci, même pour une seule action sans comparaison, car l'abordabilité fait partie du score. Sautez uniquement si l'utilisateur a déjà indiqué un chiffre de budget dans son message. Ne posez la question du mode que si le libellé de l'utilisateur ne rend pas déjà le mode sans ambiguïté — indiquez le mode que vous avez déduit dans la réponse si vous sautez la question. Le budget est toujours demandé (ou confirmé) séparément même lorsque le mode est sauté.
Étape 3 — Recherche (par action, via web_search / web_fetch)
Effectuez des recherches séparées par action pour chacun des éléments suivants :
- Prix actuel et mouvement récent — dernier prix négocié, variation en % d'aujourd'hui/récente, fourchette sur 52 semaines (sites de courtage ou actualités).
- Actualités récentes — actualités spécifiques à l'entreprise des 1 à 4 dernières semaines.
- Annonces/dépôts corporatifs — annonces BSE/NSE : résultats, réunions du conseil, approbations de dépenses d'investissement, contrats, levées de fonds, actions des promoteurs. Recherchez
"<entreprise> annonce BSE"/"<entreprise> annonce corporative NSE"et récupérez la page BSE/NSE si accessible ; en cas d'échec, utilisez un site de courtage ou des actualités couvrant le même dépôt si le site de l'échange bloque la récupération. - Schémas gouvernementaux à venir — éligibilité au schéma PLI, allocations budgétaires, politique sectorielle pertinente pour le secteur de l'entreprise (recherchez les sources PIB/ministères).
- Projets d'entreprise à venir — nouvelles usines, expansion de capacité, plans de dépenses d'investissement, gains de commandes, lancements de produits — avec les calendriers prévus s'ils sont indiqués.
- Point de vue des analystes/courtiers — prix cible ou perspectives de la recherche Groww/Zerodha/Upstox/Angel One si disponible.
Adaptez la profondeur de recherche au nombre d'actions : 1 action → approfondie (6 à 10 recherches) ; 3+ actions → 3 à 5 recherches ciblées chacune, en privilégiant la récence.
Horizon temporel de la recherche — liez-le au mode choisi à l'Étape 2. Les sites de courtage/analyse technique indiens exposent couramment l'historique des prix sous forme d'onglets : 1J, 5J, 1M, 6M, DDA, 1A, 5A, Max. Reproduisez cette convention lors du choix des fenêtres de recherche :
- Intraday → utilisez uniquement les fenêtres
1J,5J,1M(par exemple,"<entreprise> prix action aujourd'hui","<entreprise> prix action 5 jours","<entreprise> action octobre 2026"en utilisant le mois/année en cours réel). Écartez ou sous-pondérez tout ce qui est plus ancien qu'environ 1 mois ; cela n'est pas pertinent pour un trade journalier. Si les résultats de prix sont en conflit ou portent des dates différentes, privilégiez le plus récent et signalez explicitement le prix comme potentiellement obsolète plutôt que de le présenter comme actuel (la recherche n'a pas de flux en direct). - Long terme → utilisez les fenêtres restantes :
6M,DDA,1A,5A,Max(par exemple,"<entreprise> performance action 1 an","<entreprise> rendement 5 ans","<entreprise> plus haut plus bas historique","<entreprise> performance DDA"). Cela fait ressortir les catalyseurs pluriannuels, la volatilité historique et si l'actualité récente est un incident ou fait partie d'une tendance plus longue — ne vous fiez pas uniquement aux actualités de la semaine dernière pour une décision à long terme.
Étape 4 — Noter chaque action (0–100)
Calculez quatre sous-scores, chacun de 0 à 100, puis un total pondéré. Montrez vos scores composants, ne vous contentez pas d'affirmer un chiffre final.
| Composant | Poids | Ce qu'il mesure |
|---|---|---|
| Sentiment des actualités et momentum | 30% | Ton général des actualités/annonces récentes (catalyseurs positifs vs éléments négatifs/risques trouvés) |
| Catalyseurs à venir | 30% | Schémas/projets/contrats concrets, datés ou à court terme qui pourraient faire bouger l'action — plus fort si daté et spécifique, plus faible si spéculatif |
| Abordabilité (adéquation budgétaire) | 20% | Uniquement si budget donné : dans quelle mesure le budget permet une position significative (actions entières achetées, capacité de diversification sur la liste donnée) — si aucun budget donné, redistribuez ce poids proportionnellement dans les trois autres |
| Niveau de risque | 20% (inversé : risque plus faible → score plus élevé) | Volatilité implicite des fluctuations de prix récentes, risque sectoriel/réglementaire, signes de levier/dette si visibles dans les actualités |
Documentez brièvement le raisonnement pour chaque composant (1 à 2 lignes) afin que le score ne soit pas une boîte noire.
Étape 5 — Recommandation de timing
- Mode intraday : Sur la base du dernier prix/niveaux disponibles trouvés via la recherche (pages d'analyse technique des courtiers, actualités), suggérez une zone d'entrée plausible (par exemple, « près du support d'aujourd'hui autour de ₹X, confirmé sur un breakout au-dessus de ₹Y ») et une zone de sortie/stop. Mettez explicitement en garde que les niveaux intraday sont sensibles au temps et que les données de recherche peuvent être obsolètes à l'ouverture du marché — recommandez à l'utilisateur de confirmer les niveaux en direct sur son terminal de courtier avant d'agir. Ne prétendez PAS à une exactitude en temps réel.
- Mode long terme : Donnez une estimation de la période de détention idéale par action (par exemple, « 12 à 24 mois, liée au calendrier de paiement du schéma PLI » ou « 3 à 5 ans pour que le doublement de capacité lié aux dépenses d'investissement se reflète dans les bénéfices »), liée explicitement au calendrier des catalyseurs trouvés à l'Étape 3 (dates d'achèvement des schémas/projets) plutôt qu'à une valeur par défaut générique.
Étape 6 — Classer et recommander (plusieurs actions + budget)
Si plusieurs actions ont été données avec un budget : classez par score total, puis indiquez quelle(s) action(s) le budget supporte le mieux — en tenant compte du prix de l'action par rapport au budget (abordabilité de l'action entière) et si diviser le budget entre les actions les mieux classées pour la diversification est mieux que de le concentrer dans le seul score le plus élevé. Expliquez le compromis ; ne choisissez pas simplement une en silence.
Étape 7 — Sortie
JSON (écrire dans trader/stock-analysis.json, schéma complet dans references/schema.md) :
mode(intraday | long_term),budget,generated_at,disclaimerstocks[]: chacun avecsymbol,exchange,last_price,price_as_of,scores(news, catalysts, affordability, risk, total),score_notes,news_summary,catalysts(tableau avec description + date prévue si connue),filings(tableau),timing(entry/exit pour intraday, ouholding_periodpour long terme),sources_usedrecommendation: liste classée + raisonnement d'allocation budgétaire (si applicable)
Résumé dans le chat : Une version concise et lisible des mêmes données — score par action + raisonnement en 1 ligne, l'appel de timing/détention, la recommandation budgétaire, et la clause de non-responsabilité. Ne déversez pas le JSON brut dans le chat ; résumez-le, et mentionnez que le fichier a été enregistré si present_files est utilisé.
Voir references/schema.md pour les noms de champs exacts du JSON et un exemple.