Suivez les discussions sur : Twitter Facebook RSS   Inscrivez-vous gratuitement à la newsletter : Newsletters   Utilisez la recherche :
PlanèteMembres  |  Mission

Forums de la communauté des investisseurs heureux

Discussions courtoises et réfléchies sur l’investissement patrimonial pour s’enrichir, générer une rente et atteindre l’indépendance financière

Invitation Vous n'êtes pas identifié : inscrivez-vous pour échanger et participer aux discussions de notre communauté !

#51 19/09/2019 23h22

Membre
Réputation :   1  

Bonjour,

Comme indiqué dans mon message de présentation, si je débute en Python, j’ai une certaine expérience dans le développement pour le trading avec notamment la création de Dlls pour MetaStock et AmiBroker…

J’avais envisagé de m’y remettre et ressorti à cet effet mes outils, et parallèlement j’avais envie de regarder Python plus en détail pour me remettre un peu à l’IA (autour de jeux et de stratégies), étant au courant des possibilités de ce langage.

C’est alors que je suis tombé sur ce fil de messages qui m’a donné envie de regrouper mes envies et c’est ainsi que je suis actuellement en train de suivre les vidéos de sentdex (qui ont été recommandées par FranckChalmers) pour me mettre à niveau le plus rapidement possible… J’ai également commencé, en parallèle, des formations MongoDB, histoire de découvrir plus en détail les capacités de ces bases NoSQL qui me sembleraient pouvoir être intéressantes dans le contexte qui nous intéresse !

Une fois opérationnel, je souhaiterais constituer "une" base contenant à la fois des données techniques et fondamentales sur plusieurs places de marché afin de pouvoir construire et back-tester des stratégies avec money management intégré.

Si vous voyez d’autres ressources que celles qui ont déjà été mentionnées ici, je suis preneur de tout ce que vous voudrez bien partager (même des trucs que vous n’avez pas gardé parce que pas concluant ou autre) histoire de progresser le plus vite possible.

Merci et à bientôt

Hors ligne Hors ligne

 

#52 22/09/2019 15h01

Membre
Réputation :   78  

Bonjour,

Existe-t-il un moyen, via Python, de télécharger l’historique des cotations intraday des actions ?

J’ai trouvé le site Euronext sur 5 jours mais le téléchargement doit être manuel…

Hors ligne Hors ligne

 

#53 24/09/2019 18h25

Membre
Réputation :   1  

D’après ce que j’ai vu (sur des vidéos) il y a moyen de récupérer les données Intraday sur Yahoo Finance (et donc en Python) ! Ne l’ayant pas encore fait, je ne connais pas la qualité des données (mais je la suppose bonne vu la source et le nombre de plateformes qui s’y alimentent !).

Cela dit, en règle générale, ce qui est faisable manuellement peut s’automatiser (plus ou moins facilement)… Il devrait donc y avoir moyen d’écrire un script Python pour télécharger celles d’Euronext ! wink

Hors ligne Hors ligne

 

#54 24/09/2019 21h19

Membre
Réputation :   78  

D’après ce que j’ai vu (sur des vidéos) il y a moyen de récupérer les données Intraday sur Yahoo Finance (et donc en Python) ! Ne l’ayant pas encore fait, je ne connais pas la qualité des données (mais je la suppose bonne vu la source et le nombre de plateformes qui s’y alimentent !).

Il y a effectivement des forums/messages assez récents expliquant/témoignant de la possibilité d’utiliser les données provenant de Yahoo Finance et Google Finance. Malheureusement il y a des témoignages encore plus récents indiquant que ces entreprises ont cessé la diffusion gratuite de ces données. J’avais déjà essayé de mon côté avant de poster ici.

Cela dit, en règle générale, ce qui est faisable manuellement peut s’automatiser (plus ou moins facilement)… Il devrait donc y avoir moyen d’écrire un script Python pour télécharger celles d’Euronext ! wink

Le lien de téléchargement du site Euronext se trouve sur un genre de carré dynamique qui n’apparaît pas (ou que je ne trouve pas) dans le code source. J’ai essayé (sans succès) de passer par le module "request" que je n’ai jamais réussi à dompter…
Pour le moment, je me contente d’un petit programme qui ouvre les pages web automatiquement (60 pages, pour CAC40+Next20) et je n’ai plus qu’à cliquer sur téléchargement… ça me prend environ 12 minutes…

Hors ligne Hors ligne

 

#55 25/09/2019 10h01

Membre
Réputation :   15  

Bonjour,

Je ne l’ai pas encore testée mais j’ai découvert hier qu’IEX proposait une API pour récupérer les cours en temps réel sur plusieurs exchanges et avec plusieurs niveaux de pricing, le moins cher étant gratuit et les autres prix étant très raisonnables, à voir. Si quelqu’un se penche dessus, qu’il n’hésite pas à nous faire un retour wink

Sinon les cours disponibles publiquement que ce soit sur Euronext ou les courtiers sont toujours en différé de 15/20 minutes, il faut être connecté pour avoir les cours en temps réel.

Dernière modification par FrankChalmers (25/09/2019 12h57)

Hors ligne Hors ligne

 

#56 25/09/2019 15h35

Membre
Réputation :   78  

Bonjour,

J’ai essayé IEX mais il semble qu’il n’y ait « que » les actions américaines.

Je vais essayer Alpha Vantage et vous tiendrai au courant ;-)

Hors ligne Hors ligne

 

[+1]    #57 25/09/2019 17h12

Membre
Réputation :   1  

Caceray a écrit :

Il y a effectivement des forums/messages assez récents expliquant/témoignant de la possibilité d’utiliser les données provenant de Yahoo Finance et Google Finance. Malheureusement il y a des témoignages encore plus récents indiquant que ces entreprises ont cessé la diffusion gratuite de ces données. J’avais déjà essayé de mon côté avant de poster ici.

import yfinance as yf

adp = yf.Ticker("ADP.PA")
hist = adp.history(period="1d", interval="1m")

print(hist)

Trouvé et testé en quelques minutes et manifestement ça a l’air de fonctionner, car j’ai les mêmes données que sur le graphique de la journée… wink
Donc Yahoo fonctionne ! Pour Google, je ne sais pas, il faudrait faire un test avec pandas-datareader, mais je n’ai pas le temps pour ça, là maintenant. Mais ça fera partie de mes prochains tests avec l’affichage des données via matplotlib, dès que j’aurai progressé un peu… smile

Hors ligne Hors ligne

 

#58 25/09/2019 23h09

Membre
Réputation :   78  

Trouvé et testé en quelques minutes et manifestement ça a l’air de fonctionner, car j’ai les mêmes données que sur le graphique de la journée… wink
Donc Yahoo fonctionne ! Pour Google, je ne sais pas, il faudrait faire un test avec pandas-datareader, mais je n’ai pas le temps pour ça, là maintenant. Mais ça fera partie de mes prochains tests avec l’affichage des données via matplotlib, dès que j’aurai progressé un peu… smile

ça marche du feu de dieu ! Un grand merci pour ce module ! En revanche il semble que ce soit un développeur qui l’a mis en ligne. Espérons que Yahoo ne suspende pas la diffusion. Encore merci !

Hors ligne Hors ligne

 

#59 28/09/2019 21h41

Membre
Réputation :   1  

@FrankChalmers

J’ai vu (en 1ère page) que vous versionnez les fichiers CSV qui vous servent à importer vos données dans votre logiciel.

- Cela signifie que vous générez toujours un fichier du même nom pour chaque action/indice ?
- Une fois le fichier importé quel est l’intérêt de le conserver via git ?
- Est-ce uniquement en tant que backup (et dans ce cas là un dump périodique de la base ne serait-il pas suffisant ?) ou avez-vous besoin de les réutiliser parfois ?
- Les commits dans git sont-ils fait automatiquement par script Python une fois les fichiers importés ?

Toutes ces questions car je commence à préparer la création de ma base de données et que je cherche à ne pas m’engager sur un chemin en cul de sac ou à en rater un que vous auriez déjà balisé… D’avance merci wink

Hors ligne Hors ligne

 

[+1]    #60 29/09/2019 22h43

Membre
Réputation :   15  

MasterNag a écrit :

- Cela signifie que vous générez toujours un fichier du même nom pour chaque action/indice ?
- Les commits dans git sont-ils fait automatiquement par script Python une fois les fichiers importés ?

Tout dépend de votre but : le mien était de pouvoir tester, debugger et valider simplement mes parsers, donc le plus simple était de générer un CSV par jour (avec la date dans le nom du fichier) et de programmer les parsers pour écrire dans les bons fichiers (CSV, JSON et même XML selon les sources). Dans la même veine, les commits sont manuels : je balaye rapidement les diffs lors du commit pour repérer les erreurs éventuelles, et corriger le cas échéant (ce que je fais aussi lorsque je commit du code, ça permet souvent de repérer les dernières coquilles).

Ainsi en cas de mise à jour du parser, que ce soit à case d’une modification dans le format d’entrée (un XML qui devient du JSON, du HTML ou un PDF qui change, etc) ou d’une lib utilisée qui aurait été mise à jour, je peux effacer mes csv et les regénérer à partir des fichiers gardés en cache : si git diff me montre des différences, c’est que j’ai introduit une régression quelque part. Vue la complexité de certains parsers, il est toujours utile d’avoir ce filet de sécurité.

Un exemple qui me vient en tête est la différente entre "10 000.00" (europe) et "10,000.00" (usa), j’ai aussi croisé du "10.000,00" et du "10 000,00" donc pour parser ça dans tous les cas sans erreur, il faut un peu d’heuristiques… et des tests unitaires. J’ai également des contraintes au niveau de la base de données pour qu’un nombre invalide soit détecté en dernier ressort, et elles se sont déjà déclenchées par le passé sur du code que je pensais correct… on n’est jamais trop prudent !

MasterNag a écrit :

- Une fois le fichier importé quel est l’intérêt de le conserver via git ?
- Est-ce uniquement en tant que backup (et dans ce cas là un dump périodique de la base ne serait-il pas suffisant ?) ou avez-vous besoin de les réutiliser parfois ?

Il m’arrive de réimporter toute la base de données de zéro ou partiellement à partir des fichiers parsés, car je ne suis pas toujours sur le même ordinateur. J’ai bien un dump pour les sauvegardes, mais cela ne concerne qu’une seule table (celles des dividendes, dont l’import est assez complexe en raison des changements d’isin/raisons sociales).

Voilà pour ma méthode, à vous de trouver celle qui vous convient wink Cela peut paraître trop précautionneux, mais il vaut mieux s’assurer que les données qu’on manipule et sur lesquelles on base nos prédictions soient correctes.

Hors ligne Hors ligne

 

#61 18/10/2019 13h59

Membre
Réputation :   7  

Je viens de découvrir un cours en Ligne sur Codecademy qui s’intitule Analyze Financial Data with Python

Beginners welcome, ça commence par une introduction au langage, je pense qu’il est quand même préférable d’avoir quelques bases pour profiter pleinement de la partie "Financial Data", mais je n’ai pas vraiment de recul puisque je viens tout juste de commencer ce cours.

Il y a aussi Visualize Data with Python qui me semble être un bon complément.


« On ne résout pas un problème avec les modes de pensée qui l’ont engendré. »

Hors ligne Hors ligne

 

#62 24/12/2019 18h41

Membre
Réputation :   52  

MasterNag a écrit :

Caceray a écrit :

Il y a effectivement des forums/messages assez récents expliquant/témoignant de la possibilité d’utiliser les données provenant de Yahoo Finance et Google Finance. Malheureusement il y a des témoignages encore plus récents indiquant que ces entreprises ont cessé la diffusion gratuite de ces données. J’avais déjà essayé de mon côté avant de poster ici.

import yfinance as yf

adp = yf.Ticker("ADP.PA")
hist = adp.history(period="1d", interval="1m")

print(hist)

Trouvé et testé en quelques minutes et manifestement ça a l’air de fonctionner, car j’ai les mêmes données que sur le graphique de la journée… wink
Donc Yahoo fonctionne ! Pour Google, je ne sais pas, il faudrait faire un test avec pandas-datareader, mais je n’ai pas le temps pour ça, là maintenant. Mais ça fera partie de mes prochains tests avec l’affichage des données via matplotlib, dès que j’aurai progressé un peu… smile

Pour information smile

Je viens de me rendre compte que l’historique justement n’a pas l’air si correcte que ça. Mais c’est de plus en plus proche de la réalité lorsqu’au se rapproche du jour en cours :

- Bleu > téléchargé depuis cette adresse : ORANGE (ORA.PA) Stock Historical Prices & Data - Yahoo Finance
- Orange > téléchargé avec yfinance

J’ai écrit un mail au développeur.

Hors ligne Hors ligne

 

#63 26/12/2019 10h47

Membre
Top 50 Réputation
Réputation :   535  

Bonjour !

Petit message, juste pour confirmer que les sources de données "gratuites" comme Yahoo ou Google manquent parfois de fiabilité.

Dans le passé, j’avais utilisé, puis abandonné Yahoo-finance, à cause de différences constatées avec mes courtiers, ou de certains titres non disponibles.

Pour Google-finance, j’ai élaboré un suivi approximatif d’un porte-feuille avec Google-spreadsheet. Un des soucis, c’est le changement aléatoire des mnémoniques. Parfois, un titre ne fonctionne pas. Exemple aujourd’hui avec Jacquet Metal Service (EPA:JCQ) et Danone (EPA:BN), qui ne fonctionnent plus. Cela peut être temporaire ou définitif (j’ai eu le cas dans le passé avec le CAC-40 dont le mnémo a changé plusieurs fois).

De plus, je n’ai pas pu trouver quel cours de clôture est utilisé : Cours de la dernière transaction ? Cours moyen entre cours d’achat et cours de vente ?  Cours déterminé à partir du carnet d’ordres ?  Dans le cas des petites valorisations au fixing, s’il n’y a pas eu de transaction, le "cours de clôture (précédent)" peut être celui de l’antépénultième.

Accessoirement, j’ai appris que Google était cliente de SIX-Financial, un des plus gros fournisseurs de données financières de la planète. Et, pour éviter la concurrence, SIX a imposé plusieurs contraintes de republications à Google. Ce qui peut expliquer les déboires rencontrés.

Bref, je suis toujours à la recherche d’une source de données fiable…


M07

Hors ligne Hors ligne

 

#64 26/12/2019 12h55

Membre
Réputation :   15  

M07 a écrit :

Bref, je suis toujours à la recherche d’une source de données fiable…

Une source de données gratuite fiable, je n’en ai pas trouvé en dehors de scraper soi même les données. Ce qui implique de gérer les divisions, regroupements, dividendes si on veut être exhaustif… There is no such thing as a free lunch.

Hors ligne Hors ligne

 

#65 03/01/2020 12h30

Membre
Réputation :   52  

Bonjour,

Concernant mon message #62, j’ai cherché les problèmes sur github et je suis tombé sur ça : Errors in yfinance prices for dates before May 9th 2019 · Issue #151 · ranaroussi/yfinance · GitHub
Le dernier message règle mon problème wink

Hors ligne Hors ligne

 

#66 06/02/2020 19h47

Membre
Réputation :   5  

Bonsoir,

Où en êtes vous dans votre projet ? Est-il disponible sur Github pour pouvoir participer ?

Bonne soirée !

Hors ligne Hors ligne

 

#67 07/02/2020 11h35

Membre
Réputation :   78  

Mercure a écrit :

MasterNag a écrit :

Caceray a écrit :

Il y a effectivement des forums/messages assez récents expliquant/témoignant de la possibilité d’utiliser les données provenant de Yahoo Finance et Google Finance. Malheureusement il y a des témoignages encore plus récents indiquant que ces entreprises ont cessé la diffusion gratuite de ces données. J’avais déjà essayé de mon côté avant de poster ici.

import yfinance as yf

adp = yf.Ticker("ADP.PA")
hist = adp.history(period="1d", interval="1m")

print(hist)

Trouvé et testé en quelques minutes et manifestement ça a l’air de fonctionner, car j’ai les mêmes données que sur le graphique de la journée… wink
Donc Yahoo fonctionne ! Pour Google, je ne sais pas, il faudrait faire un test avec pandas-datareader, mais je n’ai pas le temps pour ça, là maintenant. Mais ça fera partie de mes prochains tests avec l’affichage des données via matplotlib, dès que j’aurai progressé un peu… smile

Pour information smile

Je viens de me rendre compte que l’historique justement n’a pas l’air si correcte que ça. Mais c’est de plus en plus proche de la réalité lorsqu’au se rapproche du jour en cours :
https://www.devenir-rentier.fr/uploads/15671_orapa.png
- Bleu > téléchargé depuis cette adresse : ORANGE (ORA.PA) Stock Historical Prices & Data - Yahoo Finance
- Orange > téléchargé avec yfinance

J’ai écrit un mail au développeur.

Bonjour,

Je n’avais pas remarqué cette erreur car je m’en sers exclusivement pour les cotations journalières ; pour une raison que j’ignore, le bug "disparaît" en utilisant la fonction yfinance.download() :


ps : ci-dessous le code

import finance as yf
import matplotlib.pyplot as plt

df = yf.download(’ORA.PA’,period=’max’)

plt.plot(df.Close)
plt.title(’Orange’)
plt.grid()
plt.show()

Dernière modification par Caceray (07/02/2020 11h37)

Hors ligne Hors ligne

 

#68 07/02/2020 14h07

Membre
Top 50 Réputation
Réputation :   535  

Bonjour !

C’est bien de vouloir récupérer des historiques de cours.
Mais j’ai une question :
- De quel cours cause-t-on ?

En effet, la détermination d’un cours n’est pas évidente. Utilisera-t-on le cours de la dernière transaction ? Ou le Milieu entre l’offre et la demande ? Et dans ce dernier cas, y aura-t-il pondération sur les quantités ?

Je vous donne un exemple. Il y a peu, je surveillais en temps réel l’évolution d’une action préférentielle (qui sont supposées moins bouger que les actions ordinaires). Juste avant la clôture, elle avait fait un bond de presque 8 % ; puis, 5 min après la clôture, le cours a été réajusté sur un gain journalier de 3,4 %
Après recherche et analyse, j’ai trouvé que le cours durant les heures de Bourse était basé sur les transactions, alors que le cours de clôture utilisait le milieu entre le premier ordre d’achat et celui de vente du carnet d’ordres. Or il y avait un ordre d’achat à 3,44 de 10 actions pour un ordre de vente à 3,70 pour 2 actions (spread de 7,56 %). Ni les quantités, ni les ordres suivants du carnet d’ordres n’ont été utilisés pour le calcul. (la dernière transaction avant clôture avait été à 3,71)

De la même manière, dans un historique, on pourrait vouloir utiliser :
- le cours d’ouverture (calculé comment ?)
- le cours de clôture (calculé comment ?)
- le cours de dernière transaction
- le plus haut journalier
- le plus bas journalier
- le Mid journalier
- le Mid du carnet d’ordres à la clôture
- autre méthode ?

Et je vous passe sur le choix des informations conservées en historique dans la durée ; sur les changements de modes de calcul, ou sur les données conservées ; sur les retraitements pour compression des historiques ; sur les bugs et les erreurs ; sur les changements de fournisseurs de données.

Bref, depuis longtemps j’ai remarqué des différences sur le cours de clôture, selon le courtier. Alors, je reste dubitatif sur une gestion personnelle de ce genre d’information.

Dernière modification par M07 (07/02/2020 14h13)


M07

Hors ligne Hors ligne

 

#69 17/02/2020 11h58

Membre
Réputation :   16  

Bonjour,

Le MarketData c’est un métier … comme indiqué ci dessus

Je suis en train de tester IEX Cloud | Financial Data Infrastructure avec une API stable et un pricing interessant.

OP

Hors ligne Hors ligne

 

#70 17/02/2020 14h15

Membre
Réputation :   78  

Bonjour,

Le MarketData c’est un métier … comme indiqué ci dessus

Je suis en train de tester IEX Cloud | Financial Data Infrastructure avec une API stable et un pricing interessant.

OP

Bonjour,

Pour quelle(s) raison(s) utilisez vous cette plate-forme ? Je suis moi même intéressé par la récupération de données en temps réel (yfinance les donne avec un délai de 15 minutes).

Malheureusement, ce site internet ne propose pas de télécharger les informations relatives à l’order book…

Avez-vous commencé des tests en temps réel ?

Dernière modification par Caceray (17/02/2020 14h15)

Hors ligne Hors ligne

 

#71 23/10/2020 01h59

Membre
Réputation :   3  

Hello les Pythonistas.

Si ça peut aider, j’ai fait une review des sources de données que j’ai pu trouver aujourd’hui sur ce fil (5/5) Extraire dans un fichier les données fondamentales des actions ? certaines sont dev first et prometteuses (propose un accès gratuit et aussi un accès payant utilisé par des professionnels).

Zhole a écrit :

Le MarketData c’est un métier … comme indiqué ci dessus

M07 a écrit :

De la même manière, dans un historique, on pourrait vouloir utiliser :
- le cours d’ouverture (calculé comment ?)
- le cours de clôture (calculé comment ?)
- le cours de dernière transaction
- le plus haut journalier
- le plus bas journalier
- le Mid journalier
- le Mid du carnet d’ordres à la clôture
- autre méthode ?

Pour le trading on utilise les cours temps réel pour le risque et le backtesting, Bloomberg fournit les prix suivants (dénomination anglaise):
- open
- close
- high
- low
- mid
- last

Le cours de référence utilisé en banque d’investissement est le last.
L’open et le close sont fournis par les échanges. Si je me souvient bien c’est juste la mi-distance (pondérée?) entre achat et vente dans le carnet d’ordre à l’ouverture et la clôture.


La chance, c'est quand la préparation rencontre l'opportunité.

Hors ligne Hors ligne

 

#72 04/04/2021 10h01

Membre
Réputation :   6  

Bonjour à tous,

J’ai moi aussi écrit un code Python (début 2020) de visualisation graphique du bilan d’une société.
Celui ci est alimenté à l’aide d’API gratuites de finance et de web-scrapping de divers sites web de finance.
Celui-ci est complètement automatique, le seule donnée à renseigner est le ticker Yahoo que l’on souhaite visualiser.
Ensuite tout ce qui m’intéresse est téléchargé automatiquement : Historique du cours, div, split, bilan BS, description …

Voici un exemple de graphique produit :


Jusqu’à maintenant, je n’ai pas partagé ce code car je me pose plusieurs questions :
- Est il légal de faire du web-scrapping massif des sites web de finance ?
- Quel est le risque de se faire blacklisté par ces serveurs web?


Ma stratégie d'investissement : Acheter bas et vendre haut.

Hors ligne Hors ligne

 

Discussions similaires à "programmeurs python parmi les investisseurs heureux ?"

Pied de page des forums

Parrains Faites-vous parrainer
Apprendre le bonheur