Automatización de la gestión financiera (I): problema y solución

gestió

“Automatización de la gestión financiera”… vaya tela… no, espera, que seguro que es más interesante de lo que el título puede destilar.

¿Conoces o te gustaría conocer qué diferencia existe entre tus ingresos y tus gastos? ¿Sabes o te gustaría saber en qué te dejas la pasta? ¿Encuentras o enconrarías relevante observar la evolución de lo que destinas a tu plan de pensiones o a mantener tu vetusto vehículo? …

Si has respuesto que sí al presente de indicativo o al condicional simple de las preguntas anteriores, quédate; si no es así… esta serie de posts que iniciamos hoy te parecerán una rayada de friquis.

Puesta en situación

Hace años decidí controlar mis entradas y salidas pecuniarias para estabelcer un presupuesto mensual y determinar mi capacidad de ahorro con el objetivo de adquirir una vivienda (sí, hubo un tiempo, remoto, en que podías permitirte el lujo de vivir de alquiler y, además, ahorrar).

Pasados los años sigo controlando dichas entradas y salidas (aunque ya no presupuesto), y el método de contgrol ha variando sustancialmente.

Inicialmente apuntaba en una libreta todos mis gastos, y luego los llevaba a una hoja de cálculo, junto con mis ingresos. Una automatización de la gestión financiera muy rudimentaria.

Llegó un punto en que me negué a seguir llevando una contabilización pormenorizada de gastos (1€ del café, 12€ de un menú, 3€ de una revista, …) porque consumía un tiempo excesivo y requería de una disciplima muy fuerte pero, sobretodo, porque me casé, y no podía forzar a mi mujer a hacer de friqui con los gastos.

Decidí basarme únicamente en los extractos bancarios mensuales e intentar pagar todo aquello que pudiésemos con tarjeta para que quedase constancia del gasto en sí (una extracción en efectivo del cajero suele cubrir una gran variedad de gastos y no sabes en qué se han ido).

Situación Actual

Proceso

Hasta la fecha, en mi automatización de la gestión financiera, realizo una carga de movimientos bancarios de distintas cuentas de forma mensual, una vez finalizado el mes. Todos esos movimientos van a parar a una hoja de cálculo en Google Drive. El proceso que sigo es el siguiente:

  1. Para cada cuenta bancaria, acceso a la web de la entidad bancaria y me descargo (en formato xls) el extracto de los movimientos del mes cerrado a mi ordenador.
  2. Accedo a Google Drive y abro la hoja de movimientos bancarios.
  3. Para cada extracto descargado:
    1. Abro el archivo en Libre Office
    2. Elimino las columnas de las que prescindo, ordeno las columnas según el orden en que las voy a volcar a la hoja de cálculo y doy el formato adecuado a dichas columnas.
    3. Copio todas las filas del extracto y las pego en mi hoja de cálculo de *Google Drive…
  4. Clasifico uno por uno los movimientos recientemente incorporados, dándoles una categoría y una subcategoría.
  5. Asigno el origen de todos los movimientos (la cuenta de procedencia).
  6. Asigno, mediante fórmula aplicada a la fecha del movimiento, el mes y año de cada movimiento en 2 columnas ex profeso.
  7. Desde la ‘pivot table’ de la hoja de movimientos reasigno el rango de filas de las sobre las que tiene que basar la ‘pivot table’ sus métricas (que suelen métricas acumuladas del año en curso).
  8. Analizo los datos, obteniendo conclusiones o acciones de corrección.

Ni qué decir tiene que el trabajo duro es la clasificación en categorías y subcategorías (sí, también copiar uy pegar movimientos), pues en la mayoría de ocasiones requiere leer la descripción del movimiento para saber de qué se trata y asignar ese movimiento a su “cajón” pertinente.

Problemas e impedimentos

Algunas de las “cosillas” que queiro corregir o mejorar en mi automatización de la gestión financiera son:

  • No quiero que mi información bancaria esté en manos de *Google (ya sebéis que todo nuestro contenido es “escaneado” por Google)
  • Dedico mucho tiempo a preparar y clasificar los movimientos bancarios.
  • Cometo errores de duplicación, de clasificación, etc.
  • La hoja de datos tarda mucho en cargarse y en aplicar filtros.
  • Cada vez qiue incorporo nuevos datos tengo que modificar el alcance de la ‘pivot table’.
  • Me resulta un peñazo tener que cocinar datos mediante nuevas columnas y gráficos.
  • No puedo generar consultas con la libertad que desearía (hacer uso de SQL).
  • No puedo navegar convenientemente sobre los datos que estoy analizando y refinar mis “preguntas”.

Situación Futura

Objetivos y necesidades

¿Qué me gustaría conseguir en esta nueva fase de automatización de la gestión financiera?:

  • Reducir el tiempo dedicado a clasificar movimientos.
  • Ganar flexibilidad a la hora de realizar y representar el análisis de datos.
  • Poner fuera del alcance de Google mis información financiera.
  • Acelaerar los tiempos en que obtengo respuesta del análisis de datos.
  • Solución lo más multiplataforma posible.
  • Acceso desde distintos dispositivos a los mismos datos.
  • Evitar aplicaciones que obtengan acceso a mis cuentas bancarias.

Alternativas de solución

Adquisición de una aplicación

Una opción era adquirir una aplicación COTS (Commercial off-the-shelf), que me permitiese cargar datos directamente, de las que hay muchas como:

  • Fintonic: una de las opciones más extendidas y gratuita. Accede dirctamente a tus cuentas ergo, sendo gratuita, ya puedes imaginarte que el precio son tus datos económicos…
  • MoneyWiz: presente en todas las plataformas (Android, iOS, macOS y Windows, excepto Linux), permite incorporar extractos bancarios en su versión gratuita (la de pago permite conectarse al banco) y aprende de las categorizaciones que haces manualmente, pero en la versión gratuíta los datos reside en un único dispositivo, no pudiendo acceder desde otro.

Hay gran cantidad de apps, pero descarté esta vía porque:

  • De una forma u otra acabas pagando (con tus datos o con euros, en muchos casos mediante suscripciones -detesto este modelo de pago de aplicaciones-).
  • Estoy habituado a manejarme con una simple hoja de cálculo; una aplicacón es, quizás, excesivo.
  • Escoger la más adecuada (porque acabas comprándola o suscribiéndote) requiere invertir tiempo.
  • No necesito trabajar desde móvil o tableta; soy de ordenador, así que debeía ser algo usable desde Linux y macOS (y Windows si se tercia algún día).
  • Algunas almancenan los datos localmente en el dispositivo, con lo que no puedes consultarlos desde otro.

Montarme mi propia solución

Tras aparcar la elección de una herramienta COTS, me planteé sobre qué puntales debía sostenerse una solución propia que no requiriese tirar líneas de código y se apoyase en herramientas genéricas ya existentes:

  • Un repositorio de datos independiente y accesible desde mis ordenadores.
  • Un mecanismo de clasificación de movimientos (según mi propio criterio) y carga en la base de datos.
  • Un sistema para hacer introspección de datos y generar informes con ellos.

Me decidí por lo siguiente:

  • Base de datos MariaDB (sin coste) instalada en mi NAS Synology, desde un paquete de Synology.
  • Pentaho data integrationKettle– (sin coste) instalado en el Mac.
  • Metabase (sin coste) instalado en el Mac.

Esta solución me permite trabajar con mis equipos macOS, Linux y Windows*.

Nota: tanto Metabase como PDI requieren que tengas Java instalado.

Proceso

Sigo realizando una descarga de movimientos bancarios de distintas cuentas de forma mensual, una vez finalizado el mes. Ahora todos esos movimientos van a parar a la base de datos. El proceso que sigo es el siguiente:

  1. Para cada cuenta bancaria, acceso a la web de la entidad bancaria y me descargo (en formato xls) el extracto de los movimientos del mes cerrado a mi ordenador.
  2. Abro Kettle.
  3. Lanzo un proceso que procesa los movimientos bancarios de todas las entidades, los clasifica y los deja en la base de datos.
  4. Clasifico manualmente aquellos movimientos que el proceso anterior no supo clasificar.
  5. Analizo los datos con Metabase, obteniendo conclusiones o acciones de corrección.

Es imprtante hacer constar que el proceso usa un “dicionario” para clasificar.

Debido a que a veces en este “dicionario” faltan “palabras”, me veo forzado a hacer las adaptaciones necesarias en el diccionario de clasificación. Este diccionario va ampliándose conforme voy realizando nuevas cargas, de manera que debería haber un punto en que los movimientos que el automatismo no es capaz de clasificar tendiese a cero.

Con este automatismo he pasado de dedicar aproximadamente una hora a clasificar movimientos a unos 15 minutos, y espero poder reducir ese tiempo a 10 como máximo, principalmente motivado por las compras en Amazon, que pueden ser de muy diversa naturaleza, pero el cargo a la tarjeta no aclara de qué se trata).

Próximos pasos

En futuros artículos sobre automatización de la gestión financiera os explicaré con detalle (y os haré llegar para que los descargueis) los procesos implementados, los problemas que ha habido que afontar y cómo se han solucionado, y seguro se resolverán algunas dudas que quizás abhora os asalten; de esta forma también vosotros podáis montaros una gestión financiera casera a coste 0.

La serie completa de “Automatización de la gestión financiera”

  1. Problema y solución (este artículo)
  2. Esquema de la solución
  3. Normalización de extractos bancarios
  4. Categorización de Movimientos
  5. Carga
  6. Análisis de datos