Posso ajudar com uma lista de símbolos para ações (dos Estados Unidos e não dos Estados Unidos) e para ETFs.
O Yahoo fornece um Calendário de ganhos que lista todas as ações que anunciam os ganhos de um determinado dia. Isso inclui ações fora dos EUA.
Por exemplo, aqui está hoje: http://biz.yahoo.com/research/earncal/20120710.html
a última parte do URL é a data (no formato AAAAMMDD) para a qual você deseja o Calendário de ganhos. Você pode fazer um loop por vários dias e raspar os símbolos de todas as ações que relataram ganhos nesses dias.
Não há garantia de que o Yahoo tenha dados para todas as ações que relatam lucros, especialmente porque algumas ações não existem mais (falência, aquisição, etc.), mas este é provavelmente um ponto de partida decente.
Se você estiver familiarizado com o R
, pode usar o
pacote qmao para fazer isso. (Veja esta postagem ) se você tiver problemas para instalá-lo.
ec <- getEarningsCalendar(from="2011-01-01", to="2012-07-01") #this may take a while
s <- unique(ec$Symbol)
length(s)
#[1] 12223
head(s, 20) #look at the first 20 Symbols
# [1] "CVGW" "ANGO" "CAMP" "LNDC" "MOS" "NEOG" "SONC"
# [8] "TISI" "SHLM" "FDO" "FC" "JPST.PK" "RECN" "RELL"
#[15] "RT" "UNF" "WOR" "WSCI" "ZEP" "AEHR"
Isso não inclui quaisquer ETFs, futuros, opções, títulos, forex ou fundos mútuos.
Você pode obter uma lista de ETFs do yahoo aqui: http://finance.yahoo.com/etf/browser/mkt
Isso mostra apenas os primeiros 20. Você precisa do URL do link "Mostrar todos" na parte inferior da página . Você pode raspar a página para descobrir quantos ETFs existem e, em seguida, construir um URL.
L <- readLines("http://finance.yahoo.com/etf/browser/mkt")
# Sorry for the ugly regex
n <- gsub("^(\\w+)\\s?(.*)$", "\\1",
gsub("(.*)(Showing 1 - 20 of )(.*)", "\\3",
L[grep("Showing 1 - 20", L)]))
URL <- paste0("http://finance.yahoo.com/etf/browser/mkt?c=0&k=5&f=0&o=d&cs=1&ce=", n)
#http://finance.yahoo.com/etf/browser/mkt?c=0&k=5&f=0&o=d&cs=1&ce=1442
Agora, você pode extrair os Tickers da tabela dessa página
library(XML)
tbl <- readHTMLTable(URL, stringsAsFactors=FALSE)
dat <- tbl[[tail(grep("Ticker", tbl), 1)]][-1, ]
colnames(dat) <- dat[1, ]
dat <- dat[-1, ]
etfs <- dat$Ticker # All ETF tickers from yahoo
length(etfs)
#[1] 1442
head(etfs)
#[1] "DGAZ" "TAGS" "GASX" "KOLD" "DWTI" "RTSA"
Essa é toda a ajuda que posso oferecer, mas você poderia fazer algo semelhante para obter alguns dos futuros que eles oferecem rascunhando estas páginas (esses são apenas os futuros dos EUA)
http://finance.yahoo.com/indices?e=futures ,
http://finance.yahoo.com/futures?t=energy ,
http://finance.yahoo.com/futures?t=metals ,
http: //finance.yahoo.com/futures?t=grains ,
http://finance.yahoo.com/futures?t=livestock ,
http://finance.yahoo.com/futures?t=softs ,
http: // finance.yahoo.com/futures?t=indices ,
E, para índices dos EUA e de outros países, você pode raspar essas páginas
http://finance.yahoo.com/intlindices?e=americas ,
http://finance.yahoo.com/intlindices?e=asia ,
http://finance.yahoo.com/intlindices?e=europe ,
http: //finance.yahoo.com/intlindices?e=africa ,
http://finance.yahoo.com/indices?e=dow_jones ,
http://finance.yahoo.com/indices?e=new_york ,
http: // finance.yahoo.com/indices?e=nasdaq ,
http://finance.yahoo.com/indices?e=sp ,
http://finance.yahoo.com/indices?e=other ,
http: // finance. yahoo.com/indices?e=treasury ,
http://finance.yahoo.com/indices?e=commodities