Estou tentando criar um simulador do mercado de ações (talvez eventualmente se torne uma IA de previsão), mas estou tendo problemas para encontrar dados para usar. Estou procurando uma fonte (espero que gratuita) de dados históricos do mercado de ações.
Idealmente, seria um conjunto de dados muito refinado (intervalo de segundo ou minuto) com preço e volume de cada símbolo na NASDAQ e NYSE (e talvez outros se eu for aventureiro). Alguém sabe de uma fonte para essa informação?
Encontrei essa pergunta que indica que o Yahoo oferece dados históricos em formato CSV, mas não consegui descobrir como obtê-los em um exame superficial do site vinculado.
Também não gosto da idéia de baixar os dados aos poucos em arquivos CSV ... Imagino que o Yahoo fique chateado e me desligue após os primeiros milhares de pedidos.
Também descobri outra pergunta que me fez pensar em ganhar o jackpot, mas infelizmente o site OpenTick parece ter fechado suas portas ... muito ruim, pois acho que eram exatamente o que eu queria.
Eu também seria capaz de usar dados que são apenas abrir / fechar preço e volume de todos os símbolos todos os dias, mas eu preferiria todos os dados, se puder obtê-los. Alguma outra sugestão?
Respostas:
Deixe-me acrescentar meus 2 ¢, é meu trabalho obter dados bons e limpos para um fundo de hedge; já vi muitos feeds de dados e provedores de dados históricos. Isto é principalmente sobre dados de ações dos EUA.
Para começar, se você tiver algum dinheiro, não se preocupe com o download de dados do Yahoo, obtenha os dados do final do dia diretamente dos dados do CSI ; é aqui que o Yahoo obtém os dados de EOD e também o AFAIK. Eles possuem uma API na qual você pode extrair os dados para o formato que desejar. Acho que a assinatura anual de dados custa alguns US $ 100.
O principal problema com o download de dados de um serviço gratuito é que você só obtém ações que ainda existem, isso é chamado de Viés de Sobrevivência e pode fornecer resultados errados se você observar muitas ações, porque você incluirá apenas as que fizeram isso longe e não os que foram retirados da lista.
Para brincar com alguns dados intradiários que eu examinaria no IQFeed , eles fornecem várias APIs para extrair dados históricos, embora sejam principalmente uma roupa para feeds em tempo real. Mas aqui existem algumas opções, alguns corretores até fornecem downloads de dados históricos por meio de suas APIs, então escolha seu veneno.
MAS, geralmente, todos esses dados não são muito limpos. Quando você realmente começar a testar novamente, verá que algumas ações estão faltando ou aparecem como dois símbolos diferentes, ou que as divisões de ações não são contabilizadas adequadamente etc. E então você percebe que o histórico os dados de dividendos também são necessários e você começa a correr em círculos, juntando dados de 100 fontes de dados diferentes e assim por diante. Portanto, para começar com um "desconto", o feed de dados funcionará, mas assim que você executar backtests mais abrangentes, poderá ter problemas, dependendo do que fizer. Se você apenas olhar, digamos, as ações da S&P 500, isso não será um problema e será um feed intradiário "barato".
O que você não encontrará são dados intradiários gratuitos. Quero dizer, você pode encontrar alguns exemplos, tenho certeza de que existem 5 anos de dados de ticks MSFT flutuando, mas isso não o levará muito longe.
Então, se você precisar do material real ( carteira de pedidos de nível II, todos os ticks como ocorreram em todas as trocas), uma opção "acessível", mas excelente, é a Nanex . Eles realmente enviarão uma unidade com terabytes de dados. Se bem me lembro, são cerca de US $ 3k-4K por ano de dados. Mas confie em mim, depois de entender como é difícil obter bons dados intradiários, você não achará que isso é muito dinheiro.
Não é para desencorajá-lo, mas para obter bons dados é difícil, tão difícil que muitos fundos de hedge e bancos gastam centenas de milhares de dólares por mês para obter dados em que possam confiar. Novamente, você pode começar em algum lugar e depois partir de lá, mas é bom ver isso um pouco no contexto.
Edit: A resposta acima é da minha própria experiência. Este artigo da Caltech sobre feeds de dados disponíveis fornecerá mais informações e recomenda especialmente o QuantQuote .
fonte
ESTA RESPOSTA NÃO ESTÁ MAIS PRECISA, COMO A ALIMENTAÇÃO YAHOO CEDOU EXISTIR
Usando a abordagem CSV do Yahoo acima, você também pode obter dados históricos! Você pode fazer a engenharia reversa do seguinte exemplo:
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
Essencialmente:
A lista completa de parâmetros:
fonte
Sei que você queria "grátis", mas consideraria seriamente obter os dados do csidata.com por cerca de US $ 300 / ano, se fosse você.
É o que o Yahoo usa para fornecer seus dados.
Ele vem com uma API decente e os dados são (até onde eu sei) muito limpos.
Você ganha 10 anos de história ao se inscrever e depois atualiza todas as noites.
Eles também cuidam de todo tipo de coisas desagradáveis, como divisões e dividendos para você. Se você ainda não descobriu a alegria da limpeza de dados, não perceberá o quanto precisa disso, até a primeira vez em que seu ATS (Sistema Automatizado de Negociação) achar que algumas ações são realmente muito baratas, apenas porque dividiu 2 : 1 e você não percebeu.
fonte
Um conjunto de dados de todos os símbolos da NASDAQ e da NYSE em um intervalo de segundo ou minuto será massivo .
Digamos que haja um total de 4.000 empresas listadas em ambas as bolsas (provavelmente no lado mais baixo, pois existem mais de 3200 empresas listadas na NASDAQ). Para dados em um segundo intervalo, supondo que existam 6,5 horas de negociação em um dia, isso daria 23400 pontos de dados por dia por empresa, ou cerca de 93.600.000 pontos de dados no total naquele dia. Supondo 200 dias de negociação em um ano, são cerca de 18.720.000.000 pontos de dados por apenas um ano.
Talvez você queira começar com um conjunto menor primeiro?
fonte
Introdução: No
yahoo, você pode obter preços históricos do EOD (final do dia) ou preços em tempo real. Os preços do EOD são incrivelmente simples de baixar. Veja meu blog para obter explicações sobre como obter os dados e exemplos de código C #.
Estou escrevendo um "mecanismo" de feed de dados em tempo real que baixa e armazena os preços em tempo real em um banco de dados. Inicialmente, o mecanismo poderá baixar preços históricos do Yahoo e Interactive Brokers e armazenar os dados em um banco de dados de sua escolha: MS SQL, MySQL, SQLite etc. É de código aberto, mas vou postar mais informações no meu blog quando eu chegar perto de liberá-lo (dentro de alguns dias).
Outra opção é o eclipse trader ... permite gravar os dados históricos com granularidade em apenas 1 minuto e armazena os preços localmente em um arquivo de texto. Ele basicamente baixa os dados em tempo real do Yahoo com um atraso de 15 minutos. Como eu queria uma solução mais robusta e estou trabalhando em um grande projeto escolar para o qual precisamos de dados, decidi escrever meu próprio mecanismo de feed de dados (que mencionei acima).
Código de exemplo:
Aqui está um código C # de exemplo que demonstra como baixar dados em tempo real:
Banco de dados:
no lado do banco de dados, eu uso uma
OleDb
conexão com o arquivo CSV para preencher umDataSet
e, em seguida, atualizo meu banco de dados real viaDataSet
, basicamente possibilita a correspondência de todas as colunas do arquivo CSV retornado do Yahoo diretamente para o banco de dados ( se seu banco de dados não suportar inserções em lote de dados CSV, como SQLite). Caso contrário, a inserção dos dados é de uma linha ... basta inserir em lote o CSV no seu banco de dados.Você pode ler mais sobre a formatação do URL aqui: http://www.gummy-stuff.org/Yahoo-data.htm
fonte
NASDAQ oferece 10 anos de dados históricos de EOD para cada símbolo
http://www.nasdaq.com/aspx/historical_quotes.aspx?symbol=AAPL&selected=AAPL
Você pode automatizar o processo de download desses dados.
fonte
Para dados livres de viés de sobrevivência, a única fonte confiável que encontrei é o QuantQuote ( http://quantquote.com )
Os dados são fornecidos em minutos, segundos ou resolução de tick, vinculados aos dados históricos de estoque .
Houve uma sugestão para o kibot acima. Eu faria uma pesquisa rápida no Google antes de comprá-los. Você encontrará muitos posts como este com avisos sobre problemas de qualidade de dados do kibot. Também é revelador que o sp500 free supostamente viés de sobrevivência possui apenas 570 símbolos por 14 anos. Isso é praticamente impossível, o sp500 muda de um a dois símbolos por mês ....
fonte
Infelizmente, é difícil obter dados históricos de tickers gratuitos. Agora que o opentick está morto, não conheço outro fornecedor.
Em uma vida anterior, trabalhei para um hedgefund que possuía um sistema de negociação automatizado e usamos profusamente dados históricos.
Usamos TickData para nossa fonte. Seus preços eram razoáveis, e os dados tinham resolução abaixo de segundo.
fonte
Adquirimos 12 anos de dados intradiários da Kibot.com e estamos bastante satisfeitos com a qualidade.
Quanto aos requisitos de armazenamento: 12 anos de dados de 1 minuto para todas as ações dos EUA (mais de 8000 símbolos) são de cerca de 100 GB.
Com os dados de tick-by-tick, a situação é um pouco diferente. Se você registrar apenas tempo e vendas, seriam cerca de 30 GB de dados por mês para todas as ações dos EUA. Se você deseja armazenar alterações de lance / solicitação juntamente com transações, pode esperar cerca de 150 GB por mês.
Eu espero que isso ajude. Informe-me se houver mais alguma coisa com a qual possa ajudá-lo.
fonte
Deixe-me adicionar uma fonte que acabei de descobrir, encontrada aqui .
Ele possui muitos dados históricos de ações no formato csv e foi coletado por Andy Pavlo, que, de acordo com sua página inicial, é um "professor assistente no departamento de ciência da computação da Carnegie Mellon University".
fonte
Atualmente, o Mathematica também oferece acesso aos preços das ações atuais e históricos, consulte http://reference.wolfram.com/mathematica/ref/FinancialData.html , se você tiver uma cópia dela.
fonte
day
Você pode usar o yahoo para obter dados diários (um conjunto de dados muito mais gerenciável), mas é necessário estruturar os URLs. Veja este link . Você não está fazendo muitos pedidos pequenos, está fazendo um número menor de pedidos grandes. Muitos softwares livres usam isso para que não o desliguem.
EDIT: Esse cara faz, talvez você possa dar uma olhada nas chamadas que o software faz.
fonte
O Yahoo é a opção mais simples para obter dados gratuitos preliminares. O link descrito na resposta da eckesicle pode ser facilmente usado em um código python, mas você primeiro precisa de todos os tickers. Eu usaria a NYSE para este exemplo, mas isso também pode ser usado para diferentes trocas.
Usei esta página wiki para baixar todos os tickers da empresa com o seguinte script (não sou um Pythonist muito talentoso, desculpe se esse código não é muito eficiente):
Para baixar cada ticker, usei outro script bastante semelhante:
Observe que a principal desvantagem desse método é que dados diferentes estão disponíveis para empresas diferentes - as empresas que não possuem dados nas datas solicitadas (listadas recentemente) obterão uma página 404.
Lembre-se também de que esse método é bom apenas para dados preliminares. Se você realmente deseja testar seu algoritmo, deve pagar um pouco e usar um fornecedor de dados confiável como CSIData ou outros.
fonte
Por que não modelar uma bolsa falsa com a Brownian Motion?
Muitos recursos para fazê-lo. Fácil de implementar.
http://introcs.cs.princeton.edu/java/98simulation/
fonte
Eu uso o eodData.com. É bastante decentemente razoáveis. Por 30 dólares por mês, você recebe 30 dias de barras de 1,5 e 60 minutos para todas as trocas nos EUA e 1 ano de dados EOD para a maioria dos outros.
fonte
Eu rastrearia finance.google.com (para as cotações) - ou finance.yahoo.com.
Ambos retornarão páginas html para a maioria das trocas ao redor do mundo, incluindo histórico. Então, é apenas uma questão de analisar o HTML para extrair o que você precisa.
Eu fiz isso no passado, com grande sucesso. Como alternativa, se você não se importa em usar o Perl - existem vários módulos no CPAN que fizeram esse trabalho para você - ou seja, extrair citações do Google / Yahoo.
Para saber mais, consulte Histórico de cotações
fonte
Um antigo projeto meu usaria dados para download gratuito do EODData .
fonte
Dê uma olhada na API de dados históricos de títulos de fusão - http://www.mergent.com/servius
fonte