J'essaie de faire un simulateur de bourse (peut-être éventuellement devenir une IA prédictive), mais j'ai du mal à trouver des données à utiliser. Je recherche une source (espérons-le gratuite) de données historiques sur le marché boursier.
Idéalement, ce serait un ensemble de données à grain très fin (seconde ou minute) avec le prix et le volume de chaque symbole sur NASDAQ et NYSE (et peut-être d'autres si je deviens aventureux). Quelqu'un connaît-il une source pour de telles informations?
J'ai trouvé cette question qui indique que Yahoo propose des données historiques au format CSV, mais je n'ai pas pu trouver comment l'obtenir dans un examen rapide du site lié.
Je n'aime pas non plus l'idée de télécharger les données au coup par coup dans des fichiers CSV ... J'imagine que Yahoo se fâcherait et me fermerait après les quelques milliers de premières demandes.
J'ai également découvert une autre question qui m'a fait penser que j'avais touché le jackpot, mais malheureusement ce site OpenTick semble avoir fermé ses portes ... dommage, car je pense qu'ils étaient exactement ce que je voulais.
Je pourrais également utiliser des données qui ouvrent / ferment le prix et le volume de chaque symbole tous les jours, mais je préférerais toutes les données si je peux les obtenir. D'autres suggestions?
Réponses:
Permettez-moi d'ajouter mes 2 ¢, c'est mon travail d'obtenir des données bonnes et propres pour un fonds spéculatif, j'ai vu pas mal de flux de données et de fournisseurs de données historiques. Il s'agit principalement des données sur les actions américaines.
Pour commencer, si vous avez de l'argent, ne vous embêtez pas à télécharger des données de Yahoo, obtenez les données de fin de journée directement à partir des données CSI , c'est là que Yahoo obtient leurs données EOD ainsi que l'AFAIK. Ils ont une API où vous pouvez extraire les données dans le format de votre choix. Je pense que l'abonnement annuel pour les données est de quelques dollars 100 $.
Le principal problème avec le téléchargement de données à partir d'un service gratuit est que vous n'obtenez que des stocks qui existent encore, c'est ce qu'on appelle le biais de survie et peut vous donner de mauvais résultats si vous regardez de nombreux stocks, car vous n'incluerez que ceux qui l'ont fait loin et pas ceux qui ont été radiés.
Pour jouer avec certaines données intrajournalières que j'examinerais dans IQFeed , elles fournissent plusieurs API pour extraire des données historiques, bien qu'elles soient principalement une tenue pour les flux en temps réel. Mais ici, il existe plusieurs options, certains courtiers fournissent même des téléchargements de données historiques via leurs API, alors choisissez simplement votre poison.
MAIS généralement toutes ces données ne sont pas très propres, une fois que vous aurez vraiment recommencé les tests, vous verrez que certains stocks manquent ou apparaissent sous la forme de deux symboles différents, ou que les répartitions des stocks ne sont pas correctement prises en compte, etc. Et puis vous vous rendez compte que l'historique les données sur les dividendes sont également nécessaires et vous commencez donc à tourner en rond, à assembler les données à partir de 100 sources de données différentes, etc. Donc, pour commencer, un flux de données "à prix réduit" suffira, mais dès que vous exécutez des backtests plus complets, vous pouvez rencontrer des problèmes en fonction de ce que vous faites. Si vous regardez, disons, les actions du S&P 500, ce ne sera pas tellement un problème et un flux intrajournalier "bon marché" fera l'affaire.
Ce que vous ne trouverez pas, ce sont des données intrajournalières gratuites. Je veux dire que vous pourriez trouver des exemples, je suis sûr qu'il y a quelque part 5 ans de données de tick MSFT flottant, mais cela ne vous mènera pas très loin.
Ensuite, si vous avez besoin du vrai matériel (carnet de commandes de niveau II, tous les ticks comme ils se sont produits dans tous les échanges), une option "abordable", mais excellente est Nanex . Ils vous enverront en fait un lecteur avec des téraoctets de données. Si je me souviens bien, c'est environ 3k-4K $ par an de données. Mais croyez-moi, une fois que vous comprenez à quel point il est difficile d'obtenir de bonnes données intrajournalières, vous ne penserez pas que cela représente beaucoup d'argent.
Il n'est pas difficile de vous décourager, mais d'obtenir de bonnes données, si difficile en fait que de nombreux hedge funds et banques dépensent des centaines de milliers de dollars par mois pour obtenir des données fiables. Encore une fois, vous pouvez commencer quelque part et ensuite partir de là, mais il est bon de le voir un peu en contexte.
Edit: La réponse ci-dessus est de ma propre expérience. Cet article de Caltech sur les flux de données disponibles donnera plus d'informations, et recommande particulièrement QuantQuote .
la source
CETTE RÉPONSE N'EST PLUS PRÉCISE, CAR L'ALIMENTATION YAHOO A CESSÉ D'EXISTER
En utilisant l'approche CSV de Yahoo ci-dessus, vous pouvez également obtenir des données historiques! Vous pouvez rétroconcevoir l'exemple suivant:
http://ichart.finance.yahoo.com/table.csv?s=YHOO&d=0&e=28&f=2010&g=d&a=3&b=12&c=1996&ignore=.csv
Essentiellement:
La liste complète des paramètres:
la source
Je sais que vous vouliez "gratuit", mais j'envisagerais sérieusement d'obtenir les données de csidata.com pour environ 300 $ / an, si j'étais vous.
C'est ce que Yahoo utilise pour fournir ses données.
Il est livré avec une API décente, et les données sont (pour autant que je sache) très propres.
Vous obtenez 10 ans d'histoire lorsque vous vous abonnez, puis des mises à jour nocturnes par la suite.
Ils s'occupent également de toutes sortes de choses désagréables comme les scissions et les dividendes pour vous. Si vous n'avez pas encore découvert la joie du nettoyage des données, vous ne réaliserez pas à quel point vous en avez besoin, jusqu'à la première fois que votre ATS (Automated Trading System) pense que certains stocks sont vraiment très bon marché, uniquement parce qu'ils se sont séparés 2 : 1 et vous ne l'avez pas remarqué.
la source
Un ensemble de données de chaque symbole sur le NASDAQ et NYSE sur une seconde ou une minute va être énorme .
Disons qu'il y a un total de 4000 sociétés cotées sur les deux bourses (c'est probablement du côté très bas puisqu'il y a plus de 3200 sociétés cotées au NASDAQ). Pour les données à un deuxième intervalle, en supposant qu'il y ait 6,5 heures de négociation par jour, cela vous donnerait 23400 points de données par jour et par entreprise, soit environ 93600000 points de données au total pour cette journée. En supposant 200 jours de bourse en un an, cela représente environ 18 720 000 000 points de données pour une seule année.
Peut-être voulez-vous commencer par un ensemble plus petit en premier?
la source
Intro:
De Yahoo vous pouvez obtenir des prix historiques EOD (fin de journée) ou des prix en temps réel. Les prix EOD sont incroyablement simples à télécharger. Voir mon blog pour des explications sur la façon d'obtenir les données et pour des exemples de code C #.
Je suis en train d'écrire un "moteur" de flux de données en temps réel qui télécharge et stocke les prix en temps réel dans une base de données. Le moteur pourra initialement télécharger les prix historiques de Yahoo et Interactive Brokers et il pourra stocker les données dans une base de données de votre choix: MS SQL, MySQL, SQLite, etc. C'est open source, mais je posterai plus informations sur mon blog lorsque je me rapproche de le publier (dans quelques jours).
Une autre option est eclipse trader ... il vous permet d'enregistrer les données historiques avec une granularité aussi faible que 1 minute et stocke les prix localement dans un fichier texte. Il télécharge essentiellement les données en temps réel de Yahoo avec un délai de 15 minutes. Comme je voulais une solution plus robuste et que je travaille sur un grand projet d'école pour lequel nous avons besoin de données, j'ai décidé d'écrire mon propre moteur de flux de données (que j'ai mentionné plus haut).
Exemple de code:
voici un exemple de code C # qui montre comment télécharger des données en temps réel:
Base de données:
du côté de la base de données, j'utilise une
OleDb
connexion au fichier CSV pour remplir unDataSet
, puis je mets à jour ma base de données réelle via leDataSet
, cela permet essentiellement de faire correspondre toutes les colonnes du fichier CSV renvoyées par Yahoo directement à votre base de données ( si votre base de données ne prend pas en charge les insertions par lots de données CSV, comme SQLite). Sinon, l'insertion des données est une ligne ... insérez simplement le CSV par lots dans votre base de données.Vous pouvez en savoir plus sur le formatage de l'url ici: http://www.gummy-stuff.org/Yahoo-data.htm
la source
NASDAQ offre 10 ans de données historiques d'EOD pour chaque symbole
http://www.nasdaq.com/aspx/historical_quotes.aspx?symbol=AAPL&selected=AAPL
Vous pouvez automatiser le processus de téléchargement de ces données.
la source
Pour les données sans biais de survie, la seule source fiable que j'ai trouvée est QuantQuote ( http://quantquote.com )
Les données sont fournies en résolution d'une minute, d'une seconde ou d'une tick, et sont liées à leurs données historiques sur les actions .
Il y avait une suggestion pour les kibots ci-dessus. Je ferais une recherche rapide sur Google avant d'acheter chez eux, vous trouverez de nombreux articles comme celui-ci avec des avertissements sur les problèmes de qualité des données des kibots. Il est également révélateur que leur soi-disant sp500 sans biais de survie ne comporte que 570 symboles pendant 14 ans. C'est à peu près impossible, sp500 change de 1-2 symboles par mois ....
la source
Malheureusement, les données historiques de ticker qui sont gratuites sont difficiles à trouver. Maintenant que l'opentick est mort, je ne connais aucun autre fournisseur.
Dans une vie antérieure, j'ai travaillé pour un hedgefund qui avait un système de trading automatisé, et nous avons utilisé abondamment les données historiques.
Nous avons utilisé TickData pour notre source. Leurs prix étaient raisonnables et les données avaient une résolution inférieure à la seconde.
la source
Nous avons acheté 12 ans de données intrajournalières sur Kibot.com et sommes assez satisfaits de la qualité.
En ce qui concerne les exigences de stockage: 12 ans de données d'une minute pour toutes les actions américaines (plus de 8 000 symboles) représentent environ 100 Go.
Avec les données tick-by-tick, la situation est peu différente. Si vous enregistrez uniquement le temps et les ventes, cela représenterait environ 30 Go de données par mois pour toutes les actions américaines. Si vous souhaitez stocker les modifications d'enchère / demande ainsi que les transactions, vous pouvez vous attendre à environ 150 Go par mois.
J'espère que ça aide. Veuillez me faire savoir s'il y a autre chose que je peux vous aider.
la source
Permettez-moi d'ajouter une source que je viens de découvrir, trouvée ici .
Il contient de nombreuses données historiques sur les stocks au format csv et a été recueilli par Andy Pavlo, qui, selon sa page d'accueil, est "professeur adjoint au département d'informatique de l'université Carnegie Mellon".
la source
Mathematica offre désormais un accès aux cours des actions actuels et historiques, voir http://reference.wolfram.com/mathematica/ref/FinancialData.html , si vous en avez une copie.
la source
day
Vous pouvez utiliser Yahoo pour obtenir des données quotidiennes (un ensemble de données beaucoup plus gérable) mais vous devez structurer les URL. Voir ce lien . Vous ne faites pas beaucoup de petites demandes, vous faites moins de grandes demandes. Beaucoup de logiciels gratuits l'utilisent donc ils ne devraient pas vous arrêter.
EDIT: Ce type le fait, vous pouvez peut-être jeter un œil aux appels que son logiciel fait.
la source
Yahoo est l'option la plus simple pour obtenir des données gratuites préliminaires. Le lien décrit dans la réponse d'eckesicle pourrait être facilement utilisé dans un code python, mais vous avez d'abord besoin de tous les tickers. J'utiliserais le NYSE pour cet exemple, mais cela peut également être utilisé pour différents échanges.
J'ai utilisé cette page wiki pour télécharger tous les tickers de l'entreprise avec le script suivant (je ne suis pas un pythoniste très talentueux, désolé si ce code n'est pas très efficace):
Pour télécharger chaque ticker, j'ai utilisé un autre script assez similaire:
Notez que l'inconvénient majeur de cette méthode est que différentes données sont disponibles pour différentes entreprises - Les entreprises qui ne disposent pas de données aux dates demandées (nouvellement répertoriées) vous obtiendront une page 404.
Gardez également à l'esprit que cette méthode n'est bonne que pour les données préliminaires - Si vous voulez vraiment tester votre algorithme, vous devez payer un peu et utiliser un fournisseur de données de confiance comme CSIData ou autres
la source
Pourquoi ne pas modéliser une fausse bourse avec Brownian Motion?
Beaucoup de ressources pour le faire. Facile à mettre en œuvre.
http://introcs.cs.princeton.edu/java/98simulation/
la source
J'utilise eodData.com. Son prix est assez décent. Pour 30 dollars par mois, vous obtenez 30 jours de barres de 1,5 et 60 minutes pour tous les échanges américains et 1 an de données EOD pour la plupart des autres.
la source
J'explorerais finance.google.com (pour les devis) - ou finance.yahoo.com.
Ces deux pages renverront des pages html pour la plupart des échanges à travers le monde, y compris historiques. Ensuite, il suffit d'analyser le code HTML pour extraire ce dont vous avez besoin.
Je l'ai fait dans le passé, avec beaucoup de succès. Alternativement, si cela ne vous dérange pas d'utiliser Perl - il existe plusieurs modules sur CPAN qui ont fait ce travail pour vous - c'est-à-dire extraire des devis de Google / Yahoo.
Pour en savoir plus, voir Historique des devis
la source
Un de mes anciens projets allait utiliser des données téléchargeables gratuitement depuis EODData .
la source
Jetez un œil à l'API Mergent Historical Securities Data - http://www.mergent.com/servius
la source