244 votes

source des données historiques sur les stocks

Je suis en train de faire une simulation boursière (peut-être à terme croissance en prévision de l'IA), mais je vais avoir du mal à trouver des données à utiliser. Je suis à la recherche d'un (je l'espère gratuit) source de l'historique marché de la bourse de données.

Idéalement, ce serait une très fine (seconde ou la minute d'intervalle) de l'ensemble de données avec le prix et le volume de chaque symbole sur le NASDAQ et le NYSE (et peut être d'autres si je reçois des aventuriers). Personne ne sait de source pour ces info?

J'ai trouvé cette question, ce qui indique que Yahoo offre historique des données au format CSV, mais j'ai été incapable de trouver comment le faire dans un examen superficiel du site lié.

Je n'aime pas l'idée de télécharger les données fragmentaires dans les fichiers CSV... j'imagine que Yahoo serait de se fâcher et de m'arrêter après le premier quelques milliers de demandes.

J'ai aussi découvert une autre question qui m'a fait penser que j'avais touché le jackpot, mais malheureusement ce n'OpenTick site semble avoir fermé ses portes... dommage, car je pense qu'ils étaient exactement ce que je voulais.

Je voudrais aussi être en mesure d'utiliser les données il suffit d'ouvrir/fermer le prix et le volume de chaque symbole de tous les jours, mais je préfère toutes les données si je peux l'obtenir. Toutes les autres suggestions?

232voto

lukebuehler Points 1421

Permettez-moi d'ajouter mon 5c, c'est mon travail pour obtenir de bons et de nettoyer les données pour un hedge-fund, j'ai vu beaucoup de flux de données et de l'historique des données des fournisseurs. C'est principalement à propos de NOUS disposons de données.

Pour commencer, si vous avez un peu d'argent ne vous embêtez pas avec le téléchargement de données à partir de Yahoo, obtenir la fin de la journée les données directement à partir CSI de données, c'est là que Yahoo a son NEM de données ainsi autant que je sache. Ils ont une API dans laquelle vous pouvez extraire les données de n'importe quel format que vous voulez. Je pense que l'abonnement annuel pour les données est l'un des quelques 100$ bucks.

Le principal problème avec le téléchargement de données à partir d'un service gratuit, c'est que vous obtenez seulement les stocks qui existent encore, ce qui est appelé Biais du Survivant et peut vous donner des résultats erronés si vous regardez un grand nombre de stocks, car vous n'aurez qu'à inclure ceux qui a de si loin, et pas ceux qui ont été radiées de la cote.

Pour jouer avec une certaine intraday de données que j'avais regarder dans IQFeed, ils fournissent plusieurs Api pour extraire des données historiques, bien qu'ils soient principalement une tenue en temps réel des flux. Mais ici, il ya quelques options, certains courtiers même fournir un historique des téléchargements de données via leurs Api, il suffit donc de choisir votre poison.

MAIS généralement, l'ensemble de ces données n'est pas très propre, une fois que vous commencez vraiment à dos de test, vous verrez que certains stocks sont manquants ou apparaissent comme deux symboles différents, ou des fractionnements d'actions ne sont pas correctement prises en compte, etc. Et puis vous vous rendez compte que les historiques de données sur les dividendes est tout aussi bien et alors vous commencez à tourner en rond, l'application des correctifs de données à partir de 100 différentes sources de données et ainsi de suite. Donc, pour commencer avec une "réduction" de flux de données va le faire, mais dès que vous l'exécutez plus complet backtests vous pourriez avoir des problèmes en fonction de ce que vous faites. Si vous venez de regarder, disons, le S&P 500 actions ce ne sera pas tellement un problème et un "pas cher" intraday flux de le faire.

Ce que vous ne trouverez pas est gratuit intraday de données. Je veux dire que vous pouvez trouver des exemples, je suis sûr qu'il ya quelque part à 5 ans de MSFT tique de données flottant autour de lui, mais que vous n'obtiendrez pas très loin.

Alors si vous avez besoin de la vraie substance (niveau II carnet de commande, toutes les tiques, comme ils l'ont passé à tous les échanges), il n'y a vraiment qu'un seul "abordable" l'option qui existe et qui est Nanex. Ils seront en fait vous expédier un disque avec des téraoctets de données. Si je me souviens bien de son sujet de $3k-4K par année de données. Mais croyez-moi, une fois que vous comprenez combien il est difficile d'obtenir de bonnes données intraday, vous ne pensez pas que ce est beaucoup d'argent du tout.

De ne pas vous décourager, mais pour obtenir de bonnes données est dur, si dur dans le fait que de nombreux hedge-funds et les banques dépensent des centaines de milliers de dollars d'un mois pour obtenir les données qu'ils peuvent faire confiance. Encore une fois, vous pouvez commencer à quelque part, puis à partir de là, mais il est bon de voir un peu dans le contexte.

95voto

eckesicle Points 1093

Approche de CSV de Yahoo ci-dessus, vous pouvez également obtenir des données historiques ! Vous pouvez désosser 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 :

49voto

Eric H. Points 1401

Je sais que tu voulais "libre", mais il me faudrait sérieusement envisager d'obtenir les données à partir de csidata.com pour environ 300 $/an, si j'étais vous.

C'est ce que yahoo utilise pour l'alimentation de leurs données.

Il est livré avec un décent de l'API, et les données sont (autant que je puisse en dire) très propre.

Vous bénéficiez de 10 ans d'histoire lorsque vous vous abonnez, et puis tous les soirs mises à jour par la suite.

Ils prennent également en charge 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 de nettoyage de données, vous ne réalisez pas combien vous avez besoin de ce, jusqu'à ce que la première fois que votre ATS (Système de Trading automatique) pense un peu de bouillon est vraiment vraiment pas cher, seulement parce qu'il split 2:1 et vous n'avez pas remarqué.

17voto

Lirik Points 17868

Intro:
À partir de yahoo, vous pouvez obtenir de l'EOD (fin de journée) l'historique des prix, ou les prix en temps réel. L'EOD les prix sont incroyablement simples à télécharger. Voir mon blog pour plus d'explications sur la façon d'obtenir les données et de code C# exemples.

Je suis dans le processus de l'écriture en temps réel des flux de données "moteur" qui télécharge et stocke les cours en temps réel dans une base de données. Le moteur sera d'abord être en mesure de télécharger l'historique des prix à partir de Yahoo et Interactive Brokers et il sera en mesure de stocker les données dans une base de données de votre choix: MS SQL, MySQL, SQLite, etc. Il est open source, mais je vais poster plus d'informations sur mon blog quand je me rapproche de la libération (dans quelques jours).

Une autre option est d'eclipse trader... il vous permet d'enregistrer les données d'historique avec une granularité aussi bas que 1 minute et stocke les prix localement dans un fichier texte. Essentiellement, il télécharge les données en temps réel à partir de Yahoo avec 15 minutes de retard. Comme je voulais une solution plus robuste et je travaille sur un gros projet d'école pour laquelle nous avons besoin de données, j'ai décidé d'écrire mon propre flux de données du moteur (qui je l'ai mentionné ci-dessus).

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:
Sur la base de données côté, j'ai utiliser un OleDb connexion dans le fichier CSV pour remplir un DataSet puis-je mettre à jour ma base de données via l' DataSet, essentiellement, il rend possible pour correspondre à toutes les colonnes du fichier CSV retourné à partir de Yahoo directement à votre base de données (si votre base de données ne prend pas en charge le lot insère des données au format CSV, comme SQLite). Sinon, en insérant les données est un one-liner... juste lot insérer le CSV dans votre base de données.

Vous pouvez lire plus au sujet de la mise en forme de l'url ici: http://www.gummy-stuff.org/Yahoo-data.htm

16voto

matt b Points 73770

Un ensemble de données de chaque symbole sur le NASDAQ et le NYSE, une seconde ou une minute d'intervalle va être énorme.

Disons qu'il y a un total de 4000 sociétés cotées sur les deux échanges (c'est probablement sur le très faible puisqu'il y a plus de 3200 entreprises cotées sur le NASDAQ). Pour les données à un intervalle d'une seconde, en supposant qu'il 6.5 heures de trading dans une journée, qui vous donnent 23400 points de données par jour et par entreprise, ou sur 93,600,000 de données de points au total pour qu'un jour. En supposant que 200 jours de bourse en un an, c'est à peu près 18,720,000,000 points de données pour une année seulement.

Peut-être que vous voulez commencer avec un plus petit nombre premier?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X