EXCEL : Lire les données boursières Yahoo Finance à l’aide d’une requête web et de Power Query

L’analyse boursière ou la valorisation de portefeuilles-titres cotés nécessite d’obtenir les cours de bourse. Yahoo Finance diffuse gratuitement de nombreuses informations et actualités sur les indices boursiers, les taux, les cours de matières premières, de devises, d’actions, d’OPCVM, de trackers, de dérivés… Ces données sont librement téléchargeables sous forme de fichier texte ou interrogeables à l’aide de requêtes web grâce à Power Query (Excel). C’est cette deuxième solution qui est exposée ci-après.

Power Query Remplacer

Une requête web interroge une base de données stockée sur internet. Cette requête est rédigée sous la forme d’une URL (pour Uniform Resource Locator) qui comprend l’adresse du site internet qui héberge les données ainsi que les paramètres de la requête.

Définition du texte de la requête Yahoo Finance (exemple avec l’action STELLANTIS) :

https://query1.finance.yahoo.com/v7/finance/download/STLA.PA?period1=1639859181&period2=1671395181&interval=1d&events=history&includeAdjustedClose=true

Les paramètres de la requête :

  • Le code de la valeur : ici STLA.PA = STELLANTIS. Pour obtenir le code valeur, il suffit de rechercher la valeur en clair sur Yahoo Finance.
  • Les dates : period1= suivi de la date de début et period2= suivi de la date de fin ; exemple : period1=1639859181&period2=167139518
  • Fréquence : quotidienne = 1d, hebdomadaire = 1wk ou mensuelle = 1mo
  • Evénement : events=history (pour cours historiques)

Les dates (period1 et period2) sont exprimées au format timestamp UNIX (se reporter à cet article pour toutes les explications sur ce format de date).

Il est possible de variabiliser la requête. Ceci permet de changer les paramètres de la requête dynamiquement en fonction des besoins. Exemple de requête dynamique préparée avec Excel :

=”https://query1.finance.yahoo.com/v7/finance/download/”&B5&”?period1=”&(B3-DATE(1970;1;1))*86400&”&period2=”&(B4-DATE(1970;1;1))*86400&”&interval=1d&events=history&includeAdjustedClose=true”

Cette même formule en situation dans un classeur Excel (téléchargeable en bas d’article) :

Requête Yahoo variable

Ce classeur Excel fonctionne de manière similaire à celui exposé dans cet article : Télécharger les cotations boursières avec Yahoo Finance à l’aide de liens hypertextes dynamiques.

Une fois la valeur sélectionnée et les dates renseignées, le texte de la requête se met à jour automatiquement.

Pour obtenir les données correspondant à la requête Yahoo Finance (query en anglais) : se rendre dans le Menu Données (d’Excel) / A partir du web… :

Menu Données Web

Entrer le texte de la requête puis cliquer sur le bouton Ok :

Menu Données Web Query YF

Importation des données (module Power Query) :

Menu Données Web Query Import YF

Cliquer sur le bouton “Transformer les données”.

Les données s’affichent dans le module Power Query.

La décimale des cours utilisée par Yahoo Finance est le point. Pour remplacer le point par une virgule (format en vigueur en France), se rendre dans le menu Transformer, sélectionner les colonnes Open (ouverture), High (+ haut), Low (+ bas), Close (cours de clôture) et Adj Close (cous ajusté), puis dans le menu Transformer, choisir l’option Remplacer les valeurs :

Power Query Remplacer

Remplacer le point par la virgule :

PQ Remplacer

Puis changer le type de données Texte pour Nombre décimal :

PQ Nombre décimal

Les données sont maintenant dans le bon format.

L’ensemble des manipulations opérées dans Power Query (remplacement de caractères…) sont tracées en langage M. La requête (langage M) prend la forme suivante :

PQ Requête M

Texte intégral de la requête en langage M :

let
    Source = Csv.Document(Web.Contents("https://query1.finance.yahoo.com/v7/finance/download/STLA.PA?period1=1609459200&period2=1671753600&interval=1d&events=history&includeAdjustedClose=true"),[Delimiter=",", Columns=7, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"En-têtes promus" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Valeur remplacée" = Table.ReplaceValue(#"En-têtes promus",".",",",Replacer.ReplaceText,{"Open", "High", "Low", "Close", "Adj Close"}),
    #"Type modifié" = Table.TransformColumnTypes(#"Valeur remplacée",{{"Date", type date}, {"Open", type number}, {"High", type number}, {"Low", type number}, {"Close", type number}, {"Adj Close", type number}, {"Volume", Int64.Type}})
in
    #"Type modifié"

La requête est introduite par Let suivi de Source précise la source de données (ici un contenu Web : Web.Contents ; mais la source peut être de nature très variée : fichier texte, base de données Access.. et même fichier PDF). Ensuite, les différentes manipulations de données se déroulent dans l’ordre d’apparition : entête de champs de données (PromoteHeaders), remplacements de caractères (ReplaceValue), changement de type de données (TransformColumnTypes).

Une fois les traitements de données opérés, charger les données dans Excel :

PQ Charger

Les données sont chargées dans Excel (en mode tableau) :

PQ Résultat tableau

Ces données sont prêtes à être utilisées, par exemple pour en tirer un graphique :

Graphique STELLANTIS

Excel dispose par ailleurs de graphiques boursiers :

Excel graphique boursier

___

Approfondir le sujet : tous les articles sur la bourse

Share Button
EXCEL - YF Requête Web Dynamique
EXCEL - YF Requête Web Dynamique
EXCEL-YF-requete-web-dynamique.xlsx
10 KiB
287 téléchargements
Détails...
The following two tabs change content below.
Après seize années passées en cabinet d’expertise-comptable et de commissariat aux comptes (où j’ai exercé comme expert-comptable et chef de mission audit), j’ai pris le poste de directeur comptable d’un groupe de distribution automobile en novembre 2014. Au cours de ma carrière, j’ai acquis une expérience significative en audit et en exploitation des systèmes d’information (analyse de données, automatisation des tâches, programmation informatique) au service de la production des comptes annuels et consolidés. C’est cette expérience personnelle et ma passion pour l’informatique que je partage sur ce blog. Mon CV / Réalisations personnelles et projets informatiques / Ma collection / Me contacter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.