1 votos

¿Puedo descargar los datos de apertura/cierre/máxima/mínima de hoy de todas las acciones (en bloque)?

EDITAR: En cuanto a la designación [duplicada]: He comprobado cuidadosamente todos los sitios que figuran en el Acciones e índices bursátiles sección de ¿Qué fuentes de datos están disponibles en línea? . No he podido encontrar lo que busco (tal y como se describe en el post de abajo) en ninguno de ellos. Si lo que busco está ahí, y de alguna manera me lo perdí, por favor proporcione un enlace específico.


Me gustaría obtener una tabla de la forma

 symbol | open  | close | high  | low
 A      | 90.32 | 89.81 | 90.58 | 89.46
 AA     | 12.51 | 12.17 | 12.61 | 11.93
 AAAU   | 17.20 | 17.35 | 17.35 | 17.09

 ZYME   | 37.77 | 36.16 | 38.00 | 36.50
 ZYNE   | 5.41  | 5.21  | 5.48  | 5.13
 ZYXI   | 20.40 | 21.26 | 22.25 | 20.10

...donde las columnas numéricas son los precios de apertura, cierre, máximo y mínimo de hoy, y las filas abarcan todos los ~9000 símbolos negociados en AMEX, NYSE y NASDAQ.

He encontrado muchas formas de consultar programáticamente los datos para el individuo, pero con este enfoque, la generación de dicha tabla requeriría al menos ~9000 consultas (suponiendo que pueda obtener los cuatro valores de interés en una sola consulta).


EDITAR: A juzgar por las respuestas que he recibido hasta ahora, el último párrafo anterior no fue lo suficientemente explícito. Así que permítanme ser aún más claro: No me interesan las soluciones que implican iterar sobre ~9000 símbolos bursátiles, y consultar algún sitio para los datos de cada símbolo.


¿Existe alguna fuente de bajo coste (preferiblemente gratuita) que me permita descargar esos datos (para hoy) en bloque, como un único archivo?

Imagino que los datos de hoy (si están disponibles en algún momento antes de la medianoche) pueden no estar disponibles de forma gratuita. En ese caso, ¿qué pasa con los datos de ayer?

He estudiado el hilo ¿Dónde se puede descargar la lista de todas las acciones ordinarias que cotizan en NYSE, NASDAQ y AMEX? He probado varios de los sitios mencionados en él, pero, con una excepción, todas las respuestas parecen limitarse a proporcionar una lista de todos los símbolos negociados, que no es lo que busco.

La única excepción a la que he aludido son los archivos que se pueden descargar de https://old.nasdaq.com/screening/company-list.aspx que al menos parece incluir el precio de cierre de ayer. Esto sigue siendo menos de lo que estoy buscando.

Debo añadir que no tengo ningún problema con las secuencias de comandos ni con la manipulación de datos. En otras palabras, siempre que pueda descargar los datos de alguna forma, estoy seguro de que podré analizarlos y reformatearlos si es necesario para conseguir el formato descrito anteriormente.

EDITAR: Originalmente, mi pregunta pedía una fuente libre, pero, después de leer ¿Qué fuentes de datos están disponibles en línea? Sospecho que no voy a encontrar los datos que busco de forma gratuita.

2voto

Amod Gokhale Puntos 26

Yo probaría la biblioteca Pandas DataReader en Python (que debe instalarse por separado de Pandas): esta biblioteca permite la alimentación directa de datos desde Google, Yahoo Finance o Morningstar fo equity data:

Instalación pip install pandas_datareader

Código (Acabo de escribir esto, es un código muy corto: en tu caso, no necesitas series temporales, sino una sección transversal, así que puedes simplemente añadir todos los nombres de las acciones en un array y ajustar el código en consecuencia, para obtener todos los datos a la vez).

enter image description here

1voto

rlangner Puntos 11

Puedes utilizar una biblioteca de Python como PandasDatareader para descargar los datos. El principal problema aquí es que necesitas la lista de tickers para las acciones que quieres descargar, y escribir 9000 tickers a mano no es lo mejor. Podrías aprovechar el hecho de que la wikipedia te ofrece la lista de tickers de los principales índices. Aquí está el código para crear una lista de todos los tickers del S&P500:

import bs4 as bs
import pickle
import requests
import datetime as dt
import os
import pandas as pd
import pandas_datareader.data as web

def save_sp_500_tickers():
    resp = requests.get("https://en.wikipedia.org/wiki/List_of_S%26P_500_companies")
    soup = bs.BeautifulSoup(resp.text) #it creates the html file in text
    table = soup.find("table", {"class":"wikitable sortable"}) 
    tickers = []
    #we are gonna pick the data from wikipedia table defined above
    for row in table.findAll("tr")[1:]:  
        ticker = row.findAll("td")[0].text
        ticker = ticker[:-1]
        tickers.append(ticker)
    with open("sp500tickers.pickle", "wb") as f:  
        pickle.dump(tickers, f)

    print(tickers)

    return tickers
save_sp_500_tickers()

A continuación, puede iterar por esta lista guardando todos los datos en una carpeta:

start = dt.datetime(2016,01,01)
end = dt.datetime.now()

if not os.path.exists('Stock_data'):
    os.makedirs('Stock_data')
for ticker in tickers:
        df = web.DataReader(ticker, 'yahoo', start, end)
        df.to_csv('Stock_data/{}.csv'.format(ticker))

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X