source des données historiques sur les stocks [fermé]

239

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?

rmeador
la source
4
@rmeador, Yahoo ne vous fermera pas quel que soit le nombre de demandes que vous faites, mais Google vous fermera. J'ai pu télécharger environ 4 Go de prix historiques EOD de Yahoo en environ 5-6 heures sans me faire arrêter. Cela représente environ 7 000 actions avec tous leurs prix historiques EOD depuis qu'ils ont rejoint le marché. Voir ma réponse pour plus d'informations et un exemple de code source.
Kiril
J'ai l'impression que les données EOD ne sont pas assez informatives. Si vous voulez des cotations et des transactions tick-by-tick, je crois que polygon.io est le moins cher.
Quinton Pike

Réponses:

226

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 .

lukebuehler
la source
18
+1 pour avoir souligné les 3 niveaux de données (hist, intra, niveau II) et pour des commentaires perspicaces sur les réponses des autres (exhaustivité, propreté, taille de stockage, des ensembles de données ...)
Peter Host
2
CSI est génial mais, juste pour info, les stocks radiés sont désormais un service premium, qui n'est plus inclus dans les packages de base. Juste FYI.
Olie
1
CSI est super mais le prix est cher. Si vous utilisez Unfair Advantage, vous êtes lié à leur application. C'est ennuyeux de l'utiliser tous les jours pour mettre à jour votre historique. Si vous souhaitez télécharger depuis http ou ftp avec CSI, vous devez payer environ 200 € par mois. Désolé, mais c'est trop cher.
davidxxx
@davidh, CSI Unfair Advantage dispose d'une API ActiveX où vous pouvez exporter automatiquement toutes les données de votre abonnement. Il faut environ un jour pour écrire un outil d'exportation robuste ... Si vous connaissez une alternative moins chère avec la même qualité que CSI, n'hésitez pas à poster une alternative!
lukebuehler
Remarque sur QuantQuote: ils examinent / traitent votre commande dans les 48 heures après l'achat. Au cas où vous penseriez avoir un accès immédiat.
fionbio
94

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:

sn = TICKER
a = fromMonth-1
b = fromDay (two digits)
c = fromYear
d = toMonth-1
e = toDay (two digits)
f = toYear
g = d for day, m for month, y for yearly

La liste complète des paramètres:

a   Ask
a2  Average Daily Volume
a5  Ask Size
b   Bid
b2  Ask (Real-time)
b3  Bid (Real-time)
b4  Book Value
b6  Bid Size
c   Change & Percent Change
c1  Change
c3  Commission
c6  Change (Real-time)
c8  After Hours Change (Real-time)
d   Dividend/Share
d1  Last Trade Date
d2  Trade Date
e   Earnings/Share
e1  Error Indication (returned for symbol changed / invalid)
e7  EPS Estimate Current Year
e8  EPS Estimate Next Year
e9  EPS Estimate Next Quarter
f6  Float Shares
g   Day's Low
h   Day's High
j   52-week Low
k   52-week High
g1  Holdings Gain Percent
g3  Annualized Gain
g4  Holdings Gain
g5  Holdings Gain Percent (Real-time)
g6  Holdings Gain (Real-time)
i   More Info
i5  Order Book (Real-time)
j1  Market Capitalization
j3  Market Cap (Real-time)
j4  EBITDA
j5  Change From 52-week Low
j6  Percent Change From 52-week Low
k1  Last Trade (Real-time) With Time
k2  Change Percent (Real-time)
k3  Last Trade Size
k4  Change From 52-week High
k5  Percent Change From 52-week High
l   Last Trade (With Time)
l1  Last Trade (Price Only)
l2  High Limit
l3  Low Limit
m   Day's Range
m2  Day's Range (Real-time)
m3  50-day Moving Average
m4  200-day Moving Average
m5  Change From 200-day Moving Average
m6  Percent Change From 200-day Moving Average
m7  Change From 50-day Moving Average
m8  Percent Change From 50-day Moving Average
n   Name
n4  Notes
o   Open
p   Previous Close
p1  Price Paid
p2  Change in Percent
p5  Price/Sales
p6  Price/Book
q   Ex-Dividend Date
r   P/E Ratio
r1  Dividend Pay Date
r2  P/E Ratio (Real-time)
r5  PEG Ratio
r6  Price/EPS Estimate Current Year
r7  Price/EPS Estimate Next Year
s   Symbol
s1  Shares Owned
s7  Short Ratio
t1  Last Trade Time
t6  Trade Links
t7  Ticker Trend
t8  1 yr Target Price
v   Volume
v1  Holdings Value
v7  Holdings Value (Real-time)
w   52-week Range
w1  Day's Value Change
w4  Day's Value Change (Real-time)
x   Stock Exchange
y   Dividend Yield
Fredrik E
la source
Cette page possède une table de balises spéciales qui peuvent être utilisées dans l'URL.
user443854
9
Un gros problème avec l'obtention des données de Yahoo, ou de tout autre service en ligne, est que vous n'obtenez pas de titres radiés, vous rencontrerez donc rapidement le biais de survie. Mieux vaut suivre Eric H. ou mes conseils et aller directement au CSI.
lukebuehler
Cette page contenait un tableau de balises spéciales pouvant être utilisées dans l'URL ... "Yahoo soutient que votre utilisation et distribution de l'outil et du contenu situé sur ... constitue une violation des articles 6, 12 et 18 de les Conditions d'utilisation (entre autres dispositions), donne lieu à une concurrence déloyale et incite d'autres personnes à violer les Conditions d'utilisation ... En interférant avec ces relations contractuelles et commerciales, vous portez potentiellement atteinte à la capacité d'autres utilisateurs avantages des services fournis sur le site Yahoo Finance ". Coup de pouce sur Yahoo
Mustapha George
J'ai ajouté les commutateurs restants de mes notes, qui se trouvaient sur cette page Web. Leur présentation ici ne semble pas enfreindre les conditions d'utilisation trouvées ici: policies.yahoo.com/us/en/yahoo/terms/product-atos/apiforydn/… Yahoo doit avoir été contrarié par l'outil de données Excel qui était également disponible sur ce site.
Fredrik E
2
Ce flux de données n'est plus.
MichaelICE
47

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é.

Eric H.
la source
1
quelles langues sont prises en charge par leur API?
user443854
1
ils ont une API ActiveX que vous pouvez appeler avec du code c ++ ou C # ou quoi que ce soit dans les fenêtres pour accéder à vos données.
lukebuehler
1
Intéressant. En quoi la gestion des fractionnements et des dividendes diffère-t-elle de Yahoo?
Matthew Lock
1
@MatthewLock Je ne suis pas à 100% à ce sujet, mais je pense que Yahoo utilise un autre fournisseur de données «événements d'entreprise», puis utilise uniquement les données CSI brutes ajustées par les événements d'entreprise. Cet article un peu ancien donne un aperçu: amibroker.org/userkb/2007/09/23/yahoos-data-providers
lukebuehler
2
CSI est génial mais, juste pour info, les stocks radiés sont désormais un service premium, qui n'est plus inclus dans les packages de base. Juste FYI.
Olie
16

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?

mat b
la source
2
Je fonctionnais en supposant que la plupart des entreprises ne seraient pas échangées à chaque seconde, donc le nombre de points de données serait considérablement inférieur. c'est peut-être une mauvaise hypothèse. quand même, je
prédis de
Un couple de mois de données boursières pour environ 10 symboles est venu sur 3 DVD. Les données étaient également du texte compressé.
Alan
1
@rmeador c'est vrai, mais certaines actions ont également un volume quotidien beaucoup plus élevé qu'il n'y a de secondes dans une journée, ce qui signifie qu'elles s'échangent plus d'une fois par seconde - et tous les échanges ne sont pas garantis au même prix. Vous devez donc décider si vous êtes intéressé par le prix à un intervalle ou au niveau du commerce
mat le
2
Si vous voulez le tout, par exemple, des cotations de niveau II de tous les échanges, etc., quelques TB pour un an dans un format compressé suuuuper (environ 5 Go par jour de bourse). Si vous ne stockez que des données infimes, c'est très peu, environ 10 Go pour 10 ans de tous les stocks ...
lukebuehler
16

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:

public void Start()
{
    string url = "http://finance.yahoo.com/d/quotes.csv?s=MSFT+GOOG&f=snl1d1t1ohgdr";
    //Get page showing the table with the chosen indices
    HttpWebRequest request = null;
    IDatabase database =
        DatabaseFactory.CreateDatabase(
        DatabaseFactory.DatabaseType.SQLite);

    //csv content
    try
    {
        while (true)
        {
            using (Stream file = File.Create("quotes.csv"))
            {
                request = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
                request.Timeout = 30000;
                using (var response = (HttpWebResponse)request.GetResponse())
                using (Stream input = response.GetResponseStream())
                {
                    CopyStream(input, file);
                }
            }
            Console.WriteLine("------------------------------------------------");
            database.InsertData(Directory.GetCurrentDirectory() + "/quotes.csv");

            File.Delete("quotes.csv");
            Thread.Sleep(10000); // 10 seconds
        }
    }
    catch (Exception exc)
    {
        Console.WriteLine(exc.ToString());
        Console.ReadKey();
    }
}

Base de données:
du côté de la base de données, j'utilise une OleDbconnexion au fichier CSV pour remplir un DataSet, puis je mets à jour ma base de données réelle via le DataSet, 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

Kiril
la source
épique je souhaite avoir trouvé cela plus tôt.
ojblass
Cela fournit-il réellement des données en temps réel comme vous l'avez suggéré? Depuis la page, il a ce paramètre "k1", mais la dernière fois que j'ai vérifié, il a encore un peu de retard.
Antony
@Antony la plupart du temps, il y a un certain retard, cela dépend donc de votre tolérance aux retards. Yahoo dit qu'ils fournissent des données en temps réel, mais ce n'est certainement pas pour tous les tickers. Les tickers qui ne sont pas en temps réel sont retardés jusqu'à 15 minutes. Même si vous obtenez un serveur co-localisé sur l'échange, il y aura TOUJOURS "un certain retard" . Alors, quel genre de retard êtes-vous prêt à tolérer?
Kiril
Ce n'est pas fiable. Dites-moi, pourquoi cela ne fonctionne-t-il pas en ce moment par exemple: real-chart.finance.yahoo.com/… utilisé à partir de finance.yahoo.com/q/…
mmm
9

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.

Navi
la source
Belle source. Ils ont changé le système de demande, donc maintenant toutes les demandes sont traitées avec JS (par exemple nasdaq.com/symbol/aapl/historical ). Existe-t-il un moyen de l'automatiser?
Anton Tarasenko
Oui, il est possible de l'automatiser. Vous devez utiliser un renifleur tel que Telerik et voir comment les données sont obtenues (via un POST). Tant que vous envoyez correctement les variables de publication, vous devez obtenir les données.
Nick_F
1
Est-ce toujours disponible? Contient-il des données intrajournalières?
Lee
8

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 ....

user788171
la source
3
kibot n'a que 3 symboles gratuits. le reste doit payer! il fait juste de la publicité
rebondissantHippo
Les données quotidiennes gratuites de quantquote ne sont pas documentées: il n'y a aucun en-tête de colonne dans les fichiers csv et aucun document.
user443854
il y a de la documentation, le format est fondamentalement le même que leurs jeux de données de résolution minute.
user788171
quantquote.com a beaucoup d'erreurs dans les données
Ivelin
Ils offrent des données minutieusement gratuites pour IBM depuis 1998. C'était assez bon pour moi. Je n'avais besoin que d'un seul symbole pour tester la compression: kibot.com/buy.aspx
Sergei Rodionov
7

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.

Alan
la source
6

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.

boe100
la source
1
Toujours satisfait de KiBot @ boe100?
JaredBroad
@ boe100 Ont-ils des prix ajustés et non ajustés? Ont-ils des bêtas et des deltas?
user443854
Des données ajustées et non ajustées sont disponibles. Il est possible de mettre à jour vos données à l'aide d'une API HTTP ou de télécharger quotidiennement de nouvelles archives depuis le serveur FTP. Aucun bêta ni deltas n'est calculé.
boe100
@ boe100 pourriez-vous partager vos données?
Tomasz Waszczyk
2
@Tomasz haha, votre commentaire a fait ma journée: D
Corneliu Maftuleac
6

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".

Noam
la source
C'est idéal pour ceux qui cherchent simplement à jouer avec un ensemble suffisamment grand de données boursières historiques.
Ciaran Gallagher
1
Webpage down ...
Brethlosze
4

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.

jimconstable
la source
au début, je pensais que ce lien semblait prometteur, mais je n'arrive pas à trouver comment spécifier les données historiques ... il semble que tout soit en temps réel. Suis-je en train de manquer quelque chose?
rmeador
vous avez raison. J'ai ajouté un autre lien de quelqu'un avec un logiciel qui fait les trucs historiques donc je sais que c'est possible. Jetez peut-être un coup d'œil aux appels de son logiciel.
jimconstable
4

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):

import string
import urllib2
from bs4 import BeautifulSoup

global f

def download_page(url):
    aurl = urllib2.urlopen(url)
    soup = BeautifulSoup(aurl.read())

    print url

    for row in soup('table')[1]('tr'):
        tds = row('td')
        if (len(tds) > 0):
            f.write(tds[1].string + '\n')


f = open('stock_names.txt', 'w')

url_part1 = 'http://en.wikipedia.org/wiki/Companies_listed_on_the_New_York_Stock_Exchange_'
url = url_part1 + '(0-9)'
download_page(url)

for letter in string.uppercase[:26]:
    url_part2 = letter
    url = url_part1 + '(' + letter + ')'

    download_page(url)

f.close()

Pour télécharger chaque ticker, j'ai utilisé un autre script assez similaire:

import string
import urllib2
from bs4 import BeautifulSoup


global f

url_part1 = 'http://ichart.finance.yahoo.com/table.csv?s='
url_part2 = '&d=0&e=28&f=2010&g=d&a=3&b=12&c=1996&ignore=.csv'

print "Starting"

f = open('stock_names.txt', 'r')
file_content = f.readlines()
count = 1;
print "About %d tickers will be downloaded" % len(file_content)

for ticker in file_content:
    ticker = ticker.strip()
    url = url_part1 + ticker + url_part2
    
    try:
        # This will cause exception on a 404
        response = urllib2.urlopen(url)

        print "Downloading ticker %s (%d out of %d)" % (ticker, count, len(file_content))

        count = count + 1
        history_file = open('C:\\Users\\Nitay\\Desktop\\Historical Data\\' + ticker + '.csv', 'w')
        history_file.write(response.read())
        history_file.close()

    except Exception, e:
        pass

f.close()

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

Nitay
la source
Il n'est pas nécessaire de placer une déclaration globale à l'intérieur de l'espace de noms global, bonne réponse quand même.
Luke Taylor
1
Service down ...
Brethlosze
3

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/

Michael Thamm
la source
1
:-) pour le rendre plus réel, vous devez créer un mouvement brownien fractionnaire et même ce n'est pas tout à fait réel, pour les fausses données de marché les plus réalistes, vous devez également avoir une dimension temporelle fractale ... des aiguilles pour le dire devient assez compliqué. Mieux vaut simplement acheter des données réelles du marché ...
lukebuehler
Cela n'aide pas non plus que le mouvement des stocks ne soit pas lognormal :)
Paul Milovanov
3

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.

Dez Udezue
la source
2

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

le chaos
la source
+1 contre les modules Perl, ils rendent l'obtention des données super facile
Matthew Lock
1

Un de mes anciens projets allait utiliser des données téléchargeables gratuitement depuis EODData .

Grenouille hirsute
la source