La API (no oficial) de Yahoo Finance | de Doug Guthrie | Hacia la ciencia de datos

Category: Buen Crédito
Author:
13 enero, 2021
La API (no oficial) de Yahoo Finance | de Doug Guthrie | Hacia la ciencia de datos

Una interfaz de Python para cantidades infinitas de datos

Antecedentes

Trabajo en la industria de servicios financieros como gerente de análisis de datos. Mi función es apoyar a mi organización en cualquier necesidad relacionada con los datos. Un proyecto en el que estamos trabajando es una aplicación interna que se basa en gran medida en datos financieros; mi trabajo consistía en encontrar una manera de proporcionar los datos relevantes.

Tener suerte

Si busca en Internet el tiempo suficiente, podrá encontrar soluciones que lo llevarán allí (o parcialmente). Jugué con IEX Cloud, Quandl y otros, que son excelentes servicios pero no son gratuitos. Entonces, como cualquier desarrollador que busca una solución, comencé a buscar StackOverflow. Con frecuencia encontré Yahoo Finance como una posible solución, a pesar de que la nota a continuación se encuentra en la parte superior de la página de resultados de búsqueda de yahoo-finance:

TENGA EN CUENTA: ESTA API HA SIDO DESCATALOGADA POR YAHOO. Yahoo! Finance es un servicio de Yahoo! que proporciona información financiera. Es el sitio web de investigación y noticias financieras más importante de los Estados Unidos.

Sin embargo, parecía que la gente todavía estaba utilizando el servicio, ya sea mediante raspado web o mediante URL que solo podía encontrar buscando a través de solicitudes XHR. Sabía que no quería una solución de raspado web, así que comencé a buscar en la pestaña de red en las herramientas de desarrollo de Chrome cualquier cosa que se pareciera a datos. Afortunadamente, me encontré con algunos.

El paquete: YahooQuery

El paquete proporciona tres clases diferentes que permiten una recuperación rápida y eficiente de los datos que puede ver a través del front-end. La clase principal, donde se pueden recuperar la mayoría de los datos, es la clase Ticker.

Corazón

Bastante fácil, ¿verdad? Simplemente pase un símbolo o una lista de símbolos y estará listo para recuperar la mayoría de los datos disponibles a través de Yahoo Finance. Sin embargo, antes de seguir adelante, es importante saber que hay argumentos de palabras clave adicionales que puede proporcionar para modificar cierto comportamiento:

  • asincrónico, predeterminado Falso, opcional: cuando se establece en Verdadero, las solicitudes realizadas a Yahoo Finance se realizarán de forma asincrónica. Solo es necesario cuando se utiliza más de un símbolo.
  • backoff_factor, predeterminado 0.3, opcional: un factor, en segundos, para aplicar entre intentos después del segundo intento. Por ejemplo, si el factor de retroceso es 0,1, sleep () dormirá durante [0,0 s, 0,2 s, 0,4 s,…] entre reintentos
  • país, predeterminado Estados Unidos, opcional: modifique el idioma, la región y el dominio cors que cada solicitud utiliza como parámetro de consulta. Esta funcionalidad no se ha probado a fondo, pero verá diferencias al utilizar el método de noticias. Los datos se devolverán para el idioma específico de ese país.
  • formateado, predeterminado Falso, opcional: cuando formateado = Verdadero, la mayoría de los datos numéricos de la API se devolverán como un diccionario:
  • max_workers, predeterminado 8, opcional: define el número de trabajadores que se utilizan para realizar solicitudes asincrónicas. Esto solo es relevante cuando asincrónico = verdadero
  • proxies, predeterminado Ninguno, opcional: realice cada solicitud con un proxy. Simplemente pase un diccionario, mapeando esquemas de URL a la URL del proxy. También puede configurar proxies configurando las variables de entorno HTTP_PROXY y HTTPS_PROXY.
  • reintentar, predeterminado 5, opcional: número de veces que se reintenta una solicitud fallida.
  • status_forcelist, predeterminado [429, 500, 502, 503, 504], opcional: un conjunto de códigos de estado HTTP enteros que debemos forzar un reintento.
  • tiempo de espera, predeterminado 5, opcional: deje de esperar una respuesta después de un número determinado de segundos.
  • user_agent, selección aleatoria, opcional: una cadena de agente de usuario del navegador que se envía en los encabezados con cada solicitud.
  • validar, predeterminado Falso, opcional: validar la existencia de símbolos durante la instanciación. Los símbolos no válidos se eliminarán, pero puede verlos a través de la propiedad invalid_symbols.
  • verificar, predeterminado Verdadero, opcional: ya sea un booleano, en cuyo caso controla si verificamos el certificado TLS del servidor, o una cadena, en cuyo caso debe ser una ruta a un paquete de CA para usar.
  • nombre de usuario y contraseña: si se suscribe a Yahoo Finance Premium, introduzca su nombre de usuario y contraseña. Iniciará sesión y ahora podrá acceder a propiedades / métodos premium. Todas las propiedades / métodos premium comienzan con p_. Desactive la autenticación de dos factores para que esto funcione.

La clase Ticker se puede dividir en algunas categorías diferentes: módulos, opciones, precios históricos y datos premium.

Módulos

Los módulos corresponden (normalmente) a una pestaña o datos dentro de pestañas individuales del front-end de Yahoo Finance. Por ejemplo, para recuperar datos de la pestaña ‘Resumen’, usaría la propiedad summary_detail en la clase Ticker.