Utilizando Google Docs para seguimiento en tiempo real de una cartera de Bonos, Acciones, Fondos, ETF, y creación de un histórico.

Os propongo una forma de actualizar una cartera, usando Google Docs. Ya os advierto de que no soy un profesional de la cosa, y de que mi única pretensión al publicar esto es de poner en común algunas de las experiencias que he tenido haciendo este proyecto.

Probablemente haya muchas formas de hacer lo mismo. SI se os ocurren ideas u otras soluciones mejores, adelante, por el beneficio de toda la comunidad.

Vamos a seguir estos pasos:

1 – Qué cartera seguir?
2 – Con qué útiles: Google Docs (Google Sheets)
3 – Fórmulas y cuadros
4 – Resultado final

1 – Qué cartera seguir

Vamos a coger un ejemplo que se componga de Bonos, Acciones, Fondos y ETF.

Bonos:

ES0211839180 AUDASA 5,75 16/05/22
US382550BF73 GOOD YEAR 5,00 31/05/26
ES00000128E2 DEUDA PUBLICA ESPAÑA 3,45 30/07/66
FR0013154028 GOBIERNO FRANCIA 1,75 25/05/66
ES0211839230 AUDASA 3,15 27/03/28
XS1085735899 GOBIERNO PORTUGAL 5,125 15/10/24
ES00000127A2 DEUDA PUBLICA ESPAÑA 1,95 30/07/30
US037833CD08 APPLE 3,85 04/08/46
US00206RBH49 AT&T INC 4,35 15/12/42
USU42804AQ45 HERTZ 7,625 01/06/22
US64110LAN64 NETFLIX 4,375 15/11/26
US023135BM78 AMAZON 4,25 22/08/57
XS1113247784 GOLDMAN SACHS 2,70 12/11/21

Acciones:

US0378331005 Acc Apple
US5949181045 Acc Microsoft
ES0173516115 Acc Repsol
ES0178430E18 Acc Telefonica

Fondos y ETF:

ES0152769032 ING Fondo S&P 500
IE00B5BMR087 ISHARES CORE S&P UCITS ETF

Como veis, una mezcla de valores españoles e internacionales.

Para cada tipo de valor, usaremos un sistema diferente.

2 – Utiles: Google Docs (Google Sheets)

He escogido Google Sheets frente a Excel por varios motivos:

  • Está bien provisto de fórmulas para obtener datos exteriores. (Google finance)
  • Es más simple que Excel, y aunque esto parezca un contrasentido, esta sencillez, hace que busques la forma idónea de obtener un resultado, en lugar de poder hacerlo de 40 maneras diferentes (Excel)
  • Está en línea, accesible desde cualquier ordenador, incluido el teléfono.
  • Aunque limitados, los gráficos son sencillos de parametrar y bonitos visualmente (Excepto algunos colores chillones, que se pueden cambiar).
  • Algunas funciones increíblemente Útiles que no tiene Excel (filter(); importhtml();…), aunque se puedan emular con Excel.

 

3 – Formulas de obtención.

Como he dicho, serán distintas para cada tipo de valor.

Bonos: Es difícil encontrar la cotización en directo de los bonos, al contrario de las acciones o los fondos.

Después de muchas pruebas, me inclino por el sitio de la bolsa de Frankfurt, y es de ahí de donde voy a extraer los valores.

Voy a coger el primer bono de Amazon como ejemplo, AMAZON 4,25 22/08/57, con ISIN  = US023135BM78

Entro en la página de la bolsa de Frankfurt:

Bolsa de Frankfurt

y busco el ISIN del bono de Amazon (US023135BM78), y obtengo su página:

Amazon 4,25

Se trata de recuperar el valor del bono, que está en varios sitios de la página.

Voy a buscar el que se encuentra en la tabla de abajo a la izquierda (Price information). Para ello voy a usar la formula de Google «importhtml». (Ya os advierto de que voy a usar todo el tiempo la notación inglesa de Google, porque me resulta mucho más cómodo a la hora de buscar información.)

Esta función tiene el formato siguiente:

importhtml

Vamos pues a recuperar el URL del bono de Amazon de la Bolsa de Frankfurt:

«http://en.boerse-frankfurt.de/bonds/Amazoncom_IncDL-Notes_201717-57-Bond-2057-US023135BM78»

y lo usaremos en la fórmula, junto con el parámetro «table», y un número de orden que (por tanteo sucesivo), va a ser el 5. La fórmula será entonces:

=importhtml(«http://en.boerse-frankfurt.de/bonds/Amazoncom_IncDL-Notes_201717-57-Bond-2057-US023135BM78″;»table»;5)

Al ponerla en el cuadro de Google, yo he utilizado la casilla A33, obtenemos:

cuadro_01

Es decir, el resultado de la tabla que buscamos, sin formatear.

Me interesa la línea «Last Price», «96,7500 USD», para lo cual, usaré la función «split».split

Al poner la fórmula de «importhtml» en A33, obtengo el valor deseado en B34.

Me referiré pues a esta casilla al aplicar «split», y la fórmula que introduzco en E32 (por ejemplo), será split(B34;» «), pues deseo obtener solo el valor numérico, sin el sufijo USD.

cuadro_02

Y obtengo como resultado final: 96,75 en la casilla E32, valor que ya podemos explotar.

cuadro_03

Hago lo mismo con todos los bonos que encuentro en la Bolsa de Frankfurt, os pongo algunos ejemplos:

Deuda Publica España

Gobierno Francia

Gobierno Portugal

Netflix

Fijaros que algunas veces, el valor que se obtiene de la tabla no está correctamente formateado, por lo cual hay que aplicarle una fórmula que lo corrija.

Así, en el caso de la Deuda Española, obtenemos 1.005.900, cuando queremos obtener 100,59.

La fórmula que aplico es:

=value(substitute(A80;».»;»»))/10000

En la que veis que primero reemplazo los puntos por espacios vacíos (substitute), luego convierto el texto resultante en valor numérico (value), y por último divido por 10.000 para obtener el valor correcto de 100,59. Lo mismo haré en los otros casos, si es necesario.

Quedan los bonos de Audasa, que no aparecen en la Bolsa de Frankfurt.

Voy a buscarlos en la página de la BMREF, www.bmerf.es, accedo a cada una de las páginas de estos dos valores de Audasa, y aplico el mismo procedimiento, con «importhtml», es decir, la fórmula será ahora:

=importhtml(«http://www.bmerf.es/esp/aspx/comun/FichaEmision.aspx?i=ES0211839180″;»table»;5)

El 5 coincide con el caso anterior, pero es pura coincidencia.

Al aplicar la fórmula en las casilla de mi tablero G193 y L193, obtengo:

audasa

Los valores que me interesan son los de las casillas H198 y M198, y esta vez no necesitan corrección alguna.

Los recupero pues directamente en las casillas E192 y E193.

Tengo pues, toda la colección de valores, que se van actualizando en tiempo real, a medida que lo hace la Bolsa de Frankfurt y la BMREF.

La lista actualizada es:

Lista bonos

 

Para las acciones, va a ser más fácil, ya que cuento con la fórmula directa de Google, «googlefinance», cuya sintaxis es:

Googlefinance

Utilizando el valor del Ticker de cada acción como entrada, obtengo:

acciones

acciones_01

O sea, que como veis, usando Google Docs, se facilita en gran manera la obtención de estos valores.

Para el ETF de iShares, lo obtengo también con la función directa de «googlefinance»:

acciones_02

acciones_03

Para el fondo ING, la función «googlefinance» no funciona, y he tenido que buscarlo en otra parte.

El análisis de estas fórmulas es otro asunto, o sea que no entraré en detalles, solo os las dejo para aplicarlas:

Morningstar:

=INDEX ( split ( importXml («http://www.morningstar.es/es/funds/snapshot/snapshot.aspx?id=F0GBR04JO2»; «(//td[@class=’line text’])[1]» ) ; » » ) ; 1 ; 2 )

En la que F0GBR04JO2 es el identificador del fondo de ING en Morningstar.

 

Bloomberg:

=IMPORTXML(«https://www.bloomberg.com/quote/INGRVG:SM»;»//span[@class=’priceText__1853e8a5′]»)/10000

En este caso, uso el Ticker directamente como entrada.

Que fondos:

=SPLIT(MID(importXml(CONCATENATE(«https://www.quefondos.com/es/fondos/ficha/index.html?isin=ES0152769032″);»(//span[@class=’floatright’])[6]»);1;50);»EUR»)

Aquí entro con el ISIN del fondo en cuestión.

Fijaros que las cotizaciones de Morningstar y de Bloomberg coinciden y la de Quefondos no. He observado que el valor de Quefondos se actualiza con mucho retraso.

Pero la buena noticia es que tengo dos sitios válidos.

Como usar uno u otro si alguno delos dos falla?

Pues «iferror» uno, dame el otro.

iferror

=iferror(iferror(F178;HF178);G178)

Asi, si falla Morningstar, cojo Bloomberg, y si falla también, Quefondos.

4 – Resultado final

Al final, tengo mi lista completa de valores actualizados:

valores

Pero aun sería mejor si pudiera obtener un histórico de estos valores, de forma a ver la evolución, o a graficarlos.

Para ello, usaremos la excelente herramienta gratuita de mixedanalytics.com, que encontrareis aqui:

https://mixedanalytics.com/blog/archive-data-add-on-google-sheets/

Con este add-on, podemos añadir cada periodo que definamos (una hora, un dia, una semana, un mes) una nueva columna, de forma que obtenemos lo siguiente:

Sync1

Seleccionamos la columna origen, que en mi caso es la E (E2:E30), y la reproducimos en la F (F2:F30),

sync2

Seleccionamos que esta operación se efectúe una vez al día, de 1 a 2 de la mañana. Se creará una nueva columna, a la derecha de todas las demás, de forma que obtenemos lo siguiente:

histórico

A partir de esta tabla, ya podemos hacer un gráfico o un estudio sobre la evolución de los valores.

Espero que os haya servido. todo comentario es bienvenido, se trata de compartir idea y de mejorar la cosa. Muchas gracias.