He buscado sin cesar en Google un método para obtener una lista completa (y actualizada diariamente) de todos los símbolos de ticker de Yahoo disponibles a través de http://finance.yahoo.com.
Yahoo tiene información para las acciones, futuros, etc para una gran cantidad de bolsas de todo el mundo, y I'd como una lista combinada de todos los símbolos ticker disponibles a través de ellos. I'he intentado YQL pero tienen un "where symbol = (or in)" restricción de la cláusula por lo que no puedo seleccionar * de símbolos.
Así que, básicamente, obtener información detallada para un solo símbolo o varios símbolos a la vez es fácil, pero me parece que no puede encontrar la manera de obtener una lista de todos los tickers disponibles.
¿Puede alguien ayudarme, por favor?
yo tuve un problema similar. yahoo no lo ofrece, pero puedes conseguirlo buscando en las declaraciones document.write de la lista de nyse.com y encontrando el archivo .js donde casualmente almacenan la lista de empresas que empiezan por la letra dada como un literal de matriz js. también puedes conseguir bonitos archivos csv ordenados de nasdaq.com aquí: http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download (sustituye exchange=nasdaq por exchange=nyse para los símbolos nyse).
Tal vez pueda ayudarle con una lista de símbolos de ticker para acciones (estadounidenses y no estadounidenses) y para ETF.
Yahoo ofrece un calendario de ganancias que enumera todas las acciones que anuncian ganancias para un día determinado. Incluye valores no estadounidenses.
Por ejemplo, aquí está el de hoy: http://biz.yahoo.com/research/earncal/20120710.html
la última parte de la URL es la fecha (en formato AAAAMMDD) para la que desea el Calendario de resultados. Puede recorrer varios días y obtener los símbolos de todos los valores que hayan comunicado beneficios en esos días.
No hay garantía de que yahoo tenga datos para todas las acciones que reportan ganancias, sobre todo porque algunas acciones ya no existen (quiebra, adquisición, etc), pero probablemente sea un buen punto de partida.
Si estás familiarizado con R
, puedes utilizar el paquete
paquete qmao.
(Ver este post)
si tienes problemas para instalarlo.
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"
Esto no incluirá ningún ETF, futuros, opciones, bonos, divisas o fondos de inversión.
Usted puede obtener una lista de ETFs de yahoo aquí: http://finance.yahoo.com/etf/browser/mkt Eso sólo muestra los primeros 20. Usted necesita la URL de la "Mostrar todos" enlace en la parte inferior de esa página. Usted puede raspar la página para averiguar cuántos ETFs hay, a continuación, construir una 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
Ahora, puede extraer los Tickers de la tabla en esa 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"
Eso es todo lo que puedo ayudar, pero usted podría hacer algo similar a obtener algunos de los futuros que ofrecen raspando estas páginas (Estos son sólo los futuros de EE.UU.)
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,
Y, para los índices de EE.UU. y de fuera de EE.UU., podrías raspar estas 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
Una solución que tenía para esto era iterar sobre los sectores (que en ese momento se podía hacer... no lo he probado recientemente).
Usted termina siendo bloqueado con el tiempo cuando lo haces de esa manera, sin embargo, desde YQL se estrangula por día.
Utiliza la API CSV siempre que puedas para evitarlo.