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

En la parte 2 seguimos aprendiendo a importar datos desde Yahoo Finance en Google Sheets. Vemos ahora cómo importar datos financieros detallados de una empresa.

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

En la parte 1 de esta serie sobre cómo usar los datos de Yahoo Finance en Google Sheets he explicado cómo se pueden importar los datos en JSON usando la función externa IMPORTJSONAPI. En el artículo vimos cómo importar los datos básicos del resumen de la acción, en concreto los datos de dividendo tanto en valor absoluto como en porcentaje.

La realidad es que tenemos a nuestra disposición para importar y manejar todos aquellos datos que aparecen en la web de Yahoo Finance, como son los resultados financieros, balances y cadenas de opciones, por lo que podemos disponer de cualquier dato que necesitemos en nuestra hoja de seguimiento de cartera o de análisis de empresas.

Importando datos financieros

Para importar los datos financieros tenemos que hacer algunos ajustes a nuestro método. En primer lugar, no podemos importar los datos de varias acciones al mismo tiempo, por lo que tendremos que ir de una en una sacando los datos. En segundo lugar hay que usar una URL de este tipo:

https://query1.finance.yahoo.com/v10/finance/quoteSummary/AAPL?modules=

Como veis tenemos que decir la acción de la que queremos sacar los datos (APPL) y tenemos que especificar el módulo o módulos separados con comas de los que queremos los datos, pues aquí si que podemos obtener los datos de más de un módulo al mismo tiempo, aunque eso nos complicará luego la gestión de los mismos directamente en la hoja de cálculo.

Los módulos disponibles son:

    [
       'assetProfile',
       'summaryProfile',
       'summaryDetail',
       'esgScores',
       'price',
       'incomeStatementHistory',
       'incomeStatementHistoryQuarterly',
       'balanceSheetHistory',
       'balanceSheetHistoryQuarterly',
       'cashflowStatementHistory',
       'cashflowStatementHistoryQuarterly',
       'defaultKeyStatistics',
       'financialData',
       'calendarEvents',
       'secFilings',
       'recommendationTrend',
       'upgradeDowngradeHistory',
       'institutionOwnership',
       'fundOwnership',
       'majorDirectHolders',
       'majorHoldersBreakdown',
       'insiderTransactions',
       'insiderHolders',
       'netSharePurchaseActivity',
       'earnings',
       'earningsHistory',
       'earningsTrend',
       'industryTrend',
       'indexTrend',
       'sectorTrend'
    ]

De este modo para obtener datos como el FCF, la deuda total y el EBITDA, usaría la siguiente fórmula en Google Sheets:

=IMPORTJSONAPI("https://query1.finance.yahoo.com/v10/finance/quoteSummary/AAPL?modules=financialData";"$..financialData";"freeCashflow.fmt,totalDebt.longFmt,ebitda.raw")

Cuando la uséis se verá los tres tipos de datos que nos da la API: formateados (.fmt), formateados largos  y en crudo (.raw). Depende de si queréis aplicar el formato de número de vuestra hoja, u operar con esos datos, pues el resultado será muy diferente.

Datos con fechas

En el caso de que quisiéramos obtener un dato con fecha, podemos directamente con el dato formateado en la forma año-mes-día. Si quisiéramos obtener la fecha para aplicarle un formato o hacer operaciones con ella, deberíamos tomar el dato en crudo (.raw) y aplicarle la fórmula que comentaba en el anterior artículo para convertirla del formato UNIX al formato que entiende Google Sheets.

=A1/86400+DATE(1970;1;1)

En este caso vamos a obtener directamente la fecha del próximo dividendo y la fecha en la que cotizará la acción ex-dividend. Como son dos datos, y los queremos obtener en formato crudo y convertir, tenemos que usar un fórmula matricial para que se aplique a todos ellos, y luego podemos aplicar el formato que más nos guste.

=ArrayFormula(IMPORTJSONAPI("https://query1.finance.yahoo.com/v10/finance/quoteSummary/KO?modules=calendarEvents";"$..calendarEvents";"dividendDate.raw,exDividendDate.raw")/86400+date(1970;1;1))

Simplemente resaltar que en este dato en concreto he detectado que en algunas ocasiones obtenemos fechas pasadas, como es el caso de APPL que, siendo hoy 15 de junio, da como fecha la del último dividendo del 13 de mayo, y no la del próximo. Pero estos datos son los mismos que se muestran en la web.

Obtener la hoja de balance y resultados

También podemos importar datos más complejos, como la hoja de balance o el income statement. Esto es muy útil para nuestras hojas de valoración de empresas y disponemos de los datos anuales o trimestrales.

Por ejemplo, la siguiente fórmula nos dará los datos según la imagen que se ve a continuación.

=TRANSPOSE(IMPORTJSONAPI("https://query1.finance.yahoo.com/v10/finance/quoteSummary/KO?modules=balanceSheetHistory";"$..balanceSheetStatements.*";"endDate.fmt,totalAssets.fmt,shortTermInvestments.fmt,longTermInvestments.fmt"))

Dejo a la curiosidad del lector el recrear la hoja completa de balance, o investigar cómo se podría obtener la hoja de resultados.