5 votos

Utilizando el ISIN para identificar acciones en Yahoo Finance

Estoy recopilando datos de stock para análisis privado. Encontré una lista muy extensa de valores en https://www.xetra.com/xetra-de/instrumente/alle-handelbaren-instrumente/boersefrankfurt

pero el problema es que están identificados de manera única por su ISIN, ya que en mi ubicación, Alemania, es bastante común. Sin embargo, al solicitar los datos de yahoo finance se necesita el símbolo del ticker para construir la URL, aunque al ingresar el ISIN en su campo de búsqueda obtienes la salida correcta sin problemas.

Actualmente estoy utilizando la url para solicitar el sitio por html y analizarlo para obtener la información.

Estoy buscando sugerencias para:

  • construir una URL con un ISIN para yahoofinance (o un proveedor igualmente rápido)
  • mapear el ISIN al símbolo del ticker relevante
  • cualquier otro método para obtener datos de yahoofinance, por ejemplo, librerías de código abierto
  • otras fuentes de información de operaciones en vivo, especialmente precios actuales

Gracias

6voto

Usar su punto final de búsqueda parece funcionar bien.

def get_symbol_for_isin(isin):
    url = 'https://query1.finance.yahoo.com/v1/finance/search'

    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36',
    }

    params = dict(
        q=isin,
        quotesCount=1,
        newsCount=0,
        listsCount=0,
        quotesQueryId='tss_match_phrase_query'
    )

    resp = requests.get(url=url, headers=headers, params=params)
    data = resp.json()
    if 'quotes' in data and len(data['quotes']) > 0:
        return data['quotes'][0]['symbol']
    else:
        return None
```

0 votos

´ Se produjo un error de JSONDecodeError("Esperando un valor", s, err.value) desde Ninguno json.decoder.JSONDecodeError: Esperando un valor: línea 1 columna 1 (carácter 0)´

0 votos

¿Qué obtengo cuando implemento tu función?

0voto

David Puntos 101

Solo usa el símbolo (en los archivos CSV, este se encuentra en la columna "Mnemonic") y adjunta un sufijo .F para la Bolsa de Frankfurt.

Más información.

Nota: Dado que hacer scraping de la API es costoso (aunque las comillas se pueden recuperar en lotes grandes de hasta 500 símbolos), típicamente quieres restringir las búsquedas a los símbolos con los que puedes operar con tu broker, asegurándote así de solo obtener datos para los símbolos que realmente puedes intercambiar. (En mi scraper original descuidé eso y luego me di cuenta de que estaba obteniendo un montón de símbolos que no podía intercambiar.)

0voto

David Radcliffe Puntos 136

Vamos a trabajar a través de un ejemplo.

La equidad de Daimler tiene ISIN DE0007100000

Al ir a https://bsym.bloomberg.com/, encontramos el símbolo bursátil alemán DAI. (también hay una API, creo que es gratuita)

Podemos encontrar en Yahoo Finance https://finance.yahoo.com/quote/DAI.DE

0voto

EEP Puntos 193

En Python, asumiendo que estás interesado en acciones comunes, haría lo siguiente:

A) Crear un marco de datos a partir del CSV:

xetra_df = pd.read_csv("t7-xfra-BF-allTradableInstruments.csv", sep=";", skiprows=2, low_memory=False)

B) Analizar todos los símbolos de acciones comunes utilizables para Yahoo Finance (alternativamente, añadir .F en lugar de .DE):

xetra_symbols = [str(x) + '.DE' for x in list(xetra_df.loc[xetra_df['Instrument Type'] == 'CS']['Mnemonic'])]

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