5 votos

Usando ISIN para identificar acciones en Yahoo Finanzas

Estoy recolectando 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 identificadas 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 su símbolo de comilla para construir la URL, sin embargo, al ingresar el ISIN en su campo de búsqueda se obtiene 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 yahoofinance (o un proveedor igualmente rápido)
  • asignar el ISIN al símbolo de comilla relevante/li>
  • cualquier otro método para obtener datos de yahoofinance, por ejemplo, librerías 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("Se esperaba un valor", s, err.value) desde None json.decoder.JSONDecodeError: Se esperaba un valor: línea 1 columna 1 (carácter 0)`

0 votos

¿Qué obtengo al implementar tu función?

0voto

David Puntos 101

Solo use el símbolo (en los archivos CSV, esto está en la columna "Mnemónico") y adjunte un sufijo .F para Frankfurt Boerse.

Más información.

Nota: Dado que el scraping de la API es costoso (aunque las comillas se pueden recuperar en lotes grandes de hasta 500 símbolos), generalmente desea restringir las búsquedas a los símbolos con los que puede operar con su bróker, asegurándose así de que solo obtiene datos para los símbolos que realmente puede comerciar. (En mi scraper original descuidé eso y luego me di cuenta de que estaba obteniendo un montón de símbolos que no puedo comerciar.)

0voto

David Radcliffe Puntos 136

Trabajemos a través de un ejemplo.

El capital de Daimler tiene el isin DE0007100000

Al ir a https://bsym.bloomberg.com/, encontramos el símbolo del ticker 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, haría lo siguiente:

A) Crea 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) Analiza todos los símbolos de acciones comunes utilizable para Yahoo Finance (alternativamente, añade .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