Table des matières
L’API (non officielle) de Yahoo Finance – Doug Guthrie
Une interface Python pour des quantités infinies de données
Contexte
Je travaille dans le secteur des services financiers en tant que gestionnaire d’analyse de données. Mon rôle est de soutenir mon organisation dans tout besoin lié aux données. Un projet sur lequel nous travaillons est une application interne qui s’appuie fortement sur des données financières; mon travail consistait à trouver un moyen de fournir les données pertinentes.
Avoir de la chance
Si vous effectuez une recherche sur Internet assez longtemps, vous pourrez trouver des solutions qui vous y mèneront (ou partiellement). J’ai joué avec Nuage IEX, Quandl, et d’autres, qui sont d’excellents services mais qui ne sont tout simplement pas gratuits. Ainsi, comme tout développeur à la recherche d’une solution, j’ai commencé à rechercher StackOverflow. J’ai souvent rencontré Yahoo finance comme une solution possible, même si la note ci-dessous se trouve en haut de la page de résultats de recherche pour Yahoo finance:
VEUILLEZ NOTER: CETTE API A ÉTÉ DISCONTINUÉE PAR YAHOO. Yahoo! La finance est un service de Yahoo! qui fournit des informations financières. Il s’agit du premier site d’information financière et de recherche aux États-Unis.
Il semblait que les gens utilisaient toujours le service, que ce soit par grattage Web ou via des URL que vous ne pouviez trouver qu’en recherchant dans les demandes XHR. Je savais que je ne voulais pas d’une solution de grattage Web. J’ai donc commencé à parcourir l’onglet réseau dans les outils de développement de Chrome pour tout ce qui ressemblait à des données. Heureusement, je suis tombé sur certains.
pip install yahooquery
Le package propose trois classes différentes qui permettent une récupération efficace et rapide des données que vous pouvez visualiser via le front-end. La classe principale, où la plupart des données peuvent être récupérées, est le Ticker
classe.
Téléscripteur
Assez facile, non? Passez simplement un symbole ou une liste de symboles et vous êtes prêt à récupérer la plupart des données disponibles via Yahoo Finance. Avant de poursuivre, il est important de savoir qu’il existe des arguments de mots clés supplémentaires que vous pouvez fournir pour modifier certains comportements:
-
asynchronous
: Passerasynchronous=True
et les demandes faites avec plusieurs symboles seront faites de manière asynchrone. La valeur par défaut estFalse
-
max_workers
: Passermax_workers=
et modifier le nombre de travailleurs disponibles pour effectuer des demandes asynchrones. Ceci n’est utilisé que lorsqueasynchronous=True
est également adopté. La valeur par défaut est 8. -
proxies
: Passerproxies={http: ..., https: ...}
d’utiliser un proxy lors de la demande. -
formatted
: Passerformatted=True
recevoir plus des données numériques au format suivant:earnings: {"raw": 22236000000, "fmt": "22.24B", "longFmt": "22,236,000,000"}
. La valeur par défaut estFalse
. -
username
etpassword
: Si vous vous abonnez à Yahoo Finance Premium, passez votreusername
etpassword
. Vous serez connecté et pourrez désormais accéder à des propriétés / méthodes premium. Toutes les propriétés / méthodes premium commencent parp_
. Désactivez l’authentification à deux facteurs pour que cela fonctionne.
La classe Ticker peut être divisée en quelques catégories différentes: modules, options, historique des prix et données premium.
Modules
Les modules correspondent (généralement) à un onglet ou à des données dans des onglets individuels du frontal de Yahoo Finance. Par exemple, pour récupérer des données à partir de l’onglet «Résumé», vous utiliseriez le summary_detail
propriété sur le Ticker
classe.
Ou pour trouver des données dans l’onglet « Statistiques », vous utiliseriez les propriétés valuation_measures
et key_stats
.
Les options
Toutes les dates d’expiration des options peuvent être récupérées avec une simple ligne:
faang = Ticker('fb aapl amzn nflx goog', asynchronous=True)
options = faang.option_chain
La variable options
sera un pandas DataFrame. Le DataFrame contiendra un MultiIndex composé du symbole, de la date d’expiration et du type d’option (put ou call).
Tarification historique
Celui-ci est assez simple: récupérez les données OHLC historiques pour un symbole ou une liste de symboles:
faang = Ticker('fb aapl amzn nflx goog', asynchronous=True)
history = faang.history()
Le code ci-dessus renverra les données YTD quotidiennes. Cependant, des arguments supplémentaires peuvent être fournis à la méthode:
yahooquery.ticker.history(self, period='ytd', interval='1d', start=None, end=None)Historical pricing dataPulls historical pricing data for a given symbol(s)Parameters
----------
period: str, default ytd, optional
Length of timeinterval: str, default 1d, optional
Time between data pointsstart: str or datetime.datetime, default None, optional
Specify a starting point to pull data from. Can be expressed as a string with the format YYYY-MM-DD or as a datetime object end: str of datetime.datetime, default None, optional
Specify a ending point to pull data from. Can be expressed as a string with the format YYYY-MM-DD or as a datetime object.Returns
-------
pandas.DataFrame
historical pricing data
Données Premium
La fonctionnalité est également disponible pour récupérer les données des abonnés Yahoo Finance Premium. Le package utilise du sélénium, et chromedriver spécifiquement, pour vous connecter à Yahoo Finance. Une fois connecté, l’utilisateur pourra utiliser des méthodes et des propriétés premium pour récupérer des données.