5 votos

Utilizando ISIN para identificar acciones en Yahoo Finance

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

pero el problema es que están identificados de forma única por su ISIN, ya que en mi ubicación, Alemania, es bastante común. Cuando solicitas los datos de Yahoo Finance se necesita su símbolo de cotización para construir la URL, sin embargo, al ingresar el ISIN en su campo de búsqueda obtienes la salida correcta sin ningún problema.

En este momento 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 Yahoo Finance (u otro proveedor igualmente rápido)
  • mapear el ISIN al símbolo de cotización relevante
  • cualquier otro método para obtener datos de Yahoo Finance, por ejemplo, bibliotecas de código abierto
  • otras fuentes de información de trading 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

´ raise JSONDecodeError("Esperando un valor", s, err.value) from None json.decoder.JSONDecodeError: Esperando un valor: línea 1 columna 1 (carácter 0)´

0 votos

¿Qué obtengo al implementar tu función?

0voto

David Puntos 101

Solo utiliza el símbolo (en los archivos CSV, esto está en la columna "Mnemonic") y agrega un sufijo .F para Frankfurt Boerse.

Más información.

Nota: Dado que el scraping de la API es costoso (aunque las cotizaciones se pueden recuperar en grandes lotes de hasta 500 símbolos), típicamente querrás restringir las búsquedas a los símbolos con los que puedes operar con tu corredor, asegurándote así de solo recopilar datos para los símbolos que realmente puedes intercambiar. (En mi scraper original descuidé eso y luego me di cuenta de que estaba recopilando muchos símbolos que no puedo intercambiar.)

0voto

David Radcliffe Puntos 136

Trabajemos a través de un ejemplo.

El capital de Daimler tiene ISIN DE0007100000

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

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

0voto

EEP Puntos 193

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

A) Crear un marco de datos a partir del archivo 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, agregar .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