Usando datos de Yahoo Finance en Google Sheets (parte 3)

En esta tercera parte de los artículos de uso de Yahoo Finance y Google Sheets exploramos las posibilidades que ofrece Yahoo Finance para tener seguimiento de varias posiciones en opciones.

Usando datos de Yahoo Finance en Google Sheets (parte 3)

Como continuación de los artículos sobre el uso de la función IMPORTJSON para capturar datos de Yahoo Finance en Google Sheets, vamos a repasar cómo podemos obtener datos de las cadenas de opciones de una acción.

Tener estos datos a mano es muy útil para aquellos que, como yo, tienen una operativa más o menos frecuente en opciones. De este modo podemos incorporar el valor de la opción en nuestras hojas de seguimiento, para poder decidir cuándo cerrar la opción, sin necesidad de estar conectados al broker.

Aunque la API permite obtener toda la cadena de opciones completa de un ticker, no voy a profundizar en esto, pues tal cual vuelca los datos haría falta código para poder emparejar los vencimientos, los strikes y las cadenas de opciones (tanto calls como puts) y darle formato. Aún así pondré alguna imagen para que se vea qué es lo que podemos obtener.

La URL que tenemos que usar en este caso es la siguiente

https://query1.finance.yahoo.com/v7/finance/options/

Si a esta URL le añadimos simplemente el ticker de la acción, obtendremos los datos básicos (nombre, mercado, ..) y de precio (precio, máximo y mínimo de 52 semanas, dividendo, ...) más toda la cadena de opciones. La estructura de datos es la siguiente. Como se ve, aparecen las fechas de vencimiento, los strikes y los precios de las opciones por separado y por ello necesitamos código para sacar la cadena de opciones completa.

Sacar los datos de una opción

En  el caso de que queramos sacar los datos de una opción concreta, tenemos que añadir la cadena específica que define esa opción al final de la URL mencionada. El formato que usa Yahoo Finance es Ticker+Fecha+Tipo+Strike. Un ejemplo es el siguiente, de una put de CVS, vencimiento el 17 de septiembre de 2021 y strike 75

CVS210917P00075000

Que separado en sus componentes es:
CVS + 210917 + P + 00075000

Para construir esta cadena yo estoy usando la siguiente fórmula en Google Sheets. En A5 está el ticker, en M5 la fecha, y en J5 el strike.

=if(G5="PUT";A5&text(M5,"YY")&text(M5;"MM")&DAY(M5)&"P"&substitute(text(J5;"00000.000");".";"");"A5&text(M5;"YY")&text(M5;"MM")&DAY(M5)&"C"&substitute(text(J5;"00000.000");".";"")

De esta forma podemos construir la URL que necesitemos. Al pasarla a la API de Yahoo, obtendremos ya sólo los datos de una opción, con lo que necesitamos dentro de 'quote'. La fecha de expiración y el strike lo conocemos por lo que podemos obviar esta parte.

Ya dentro de IMPORTJSON podemos obtener el dato del último precio de la opción, usando la siguiente fórmula.

=IMPORTJSONAPI("https://query1.finance.yahoo.com/v7/finance/options/CVS210917P00075000);"$..*.quote";"regularMarketPrice")

Hay que tener en cuenta que estos datos se actualizan normalmente cada 15 minutos (hay una propiedad que se llama sourceInterval en el que se puede sacar la cifra exacta.  A esto se le suma el retraso en la entrega de precio de las cotizaciones, que es de otros 20 minutos (su propiedad es exchangeDataDelayedBy). Por tanto hay que ser cuidadosos en el caso de que se quieran datos de tiempo real para hacer trading con las opciones.

Si habéis llegado aquí directamente, os recomiendo los otros artículos de la serie:

  • Parte 1 - datos básicos e IMPORTJSON
  • Parte 2 - extraemos datos de opciones
  • Parte 4 - creamos funciones propias para obtener los datos específicos que queremos