Hoy os voy a hablar de contabilidad y un programa para gestionar todas nuestras cuentas de gastos e ingresos.
Más que contabilidad, el formato para apuntar todo esto en un archivo de texto y que luego podamos leerlo adecuadamente.
Aunque pueda parecer aburrido, y seguramente si no te gusta, va a ser un tostón, es importante que conozcas todo el proceso de llevar una contabilidad de tu casa.
Pero aunque no te guste y sea un tostón, necesitas algún tipo de información para tener un control de las finanzas y por lo tanto tomar buenas decisiones al respecto.
Han salido empresas como fintonic.com que te hacen todo este proceso sencillo ya que se conectan a tus cuentas bancarias y de los datos que leen te muestran información visualmente bonita y te ofrecen productos relacionados con tus gastos que a ellos les interesan.
Esta es una opción totalmente válida, pero si has llegado a este blog sabes que aquí hago las cosas de manera diferente y hoy te quiero presentar a Ledger.

¿Qué es Ledger?
Del inglés se podría traducir como libro de cuentas, y Ledger también es un programa por consola de comandos y al mismo tiempo un archivo de texto donde se definen entradas contables que el programa por consola interpreta. Con esto puedes organizar todos tus datos financieros.
Ledger se publicó en 2003, y está escrito por John Wiegley y publicado bajo la licencia BSD. También ha inspirado otros formatos y traducido a otros idiomas.
Dicho de otra manera, ledger define un archivo de texto que tiene entradas de contabilidad que se puede leer un programa por línea de comandos.
A partir de las especificaciones de ledger, han surgido otros programas que utilizan este archivo de texto y por lo tanto son compatibles entre sí.
¿Por qué usar Ledger?
La ventaja principal de usar ledger respecto a otros sistemas, es que en un archivo de texto puedes tener toda la contabilidad personal, profesional, de inversiones o lo que quieras, con lo que eso supone de espacio, copia de seguridad, compatibilidad, y hasta edición por el famoso bloc de notas de windows.
Además una vez sepamos crear este archivo de texto, ya que el programa ledger por línea de comandos no añade ni elimina entradas, podemos trabajar con el programa que más nos interese y automatizar muchos procesos.
Para mí el fundamento principal de escoger Ledger y empezar a trabajar con el, es poder automatizar la descarga de datos del banco, y del broker y añadirlos a ledger creando para esto un flujo de trabajo en el que tenga que interactuar lo mínimo posible.
Sabiendo lo que gastas y lo que ingresas y en donde lo gastas, ledger te generará informes que podrás utilizar para poder llegar a fin de mes o lo que creas más conveniente.
Cómo crear nuestro primer archivo ledger
Mantener un diario de las transacciones económicas es un engorro, ya que pagamos con la tarjeta, en metálico, hacemos transferencias y distintas operaciones.
Llevar un registro de esto es complicado, por lo que la inmensa mayoría de las personas solo saben de manera general lo que ingresan y lo que gastan al final del mes, sin entrar en los distintos apartados de gastos.
Así que vamos a tratar de tener un buen diario de contabilidad. Con este diario podremos saber nuestros patrones de gastos, ya que si no tenemos buena información, por muy bueno que sea el programa, nadie nos podrá ayudar.
Una gran idea sería coger los excel que te da el banco y poder importarlo a un mismo sistema para tu poder tratar los datos. Esto que a priori parecería sencillo, luego no lo es tanto ya que las excel de los bancos cada uno tiene una estructura diferente y es complicado encontrar un programa que aune todas las opciones.
En este sentido nos viene al rescate Ledger, que básicamente es una manera de definir un asiento contable en un archivo de texto para que distintos programas puedan entenderlo y trabajar sobre esos datos. Estos asientos contables van a ser muy sencillos y facilmente manipulables por cualquier editor de texto ya que ledger no proporciona una interfaz de usuario.
Pero antes de meternos en como crear un fichero para ledger, vamos a ver qué es un asiento contable.
La definición oficial es que un asiento contable es el conjunto de anotaciones o apuntes contables que se hacen en el Libro diario de contabilidad, que se realizan con la finalidad de registrar un hecho económico que provoca una modificación cuantitativa o cualitativa en la composición del patrimonio y por tanto un movimiento en las cuentas.
Esto para una empresa es básico, porque da información de como está financieramente la empresa.
En contabilidad cada asiento se compone al menos de dos anotaciones: una el debe y otra el haber.
Estas dos posiciones hacen movimientos inversos, y afectan al activo o al pasivo, y esto es así, porque para que podamos comprar algo, el dinero tiene que haber entrado de algún lugar, es decir cada asiento afecta a dos cuentas y cada movimiento tiene su contrapartida.
Lo bueno que tiene ledger es que si no encuentra cierta información, como puede ser una cuenta bancaria, la creará, y si aparece un producto nuevo lo creará y determinará sus características de visualización.
Entrada básica en Ledger
Ledger se basa en el sistema de partida doble que se usa en contabilidad. Este sistema registra cada operación dos veces, una en el debe y otra en el haber, con el fin de establecer una conexión entre diversos elementos patrimoniales.
La anotación que involucra las dos partidas (debe y haber) se denomina asiento contable. Esto se parece a una balanza en equilibrio, ya que dentro de un asiento contable, la suma del debe y haber siempre tienen que ser iguales.
Esto significa que ledger especifica una transacción con una cuenta deudora (de donde proviene el dinero) y una cuenta de crédito (a donde va el dinero).
Todas las transacciones se almacenan en un archivo de texto y el comando de ledger se usa para leerlas.
Una transacción de ejemplo es esta:
2019-09-30 Starbucks
Gastos:Comida 3,5€
Pasivos:Mastercard -3,5€
También puedes escribirla de la siguiente manera que ledger la entiende igual:
2019-09-30 Starbucks
Gastos:Comida 3,5€
Pasivos:Mastercard
Esta transacción describe que pagué 3,5€ en Starbucks con mi mastercard. El saldo total de la transacción es 0, que es la base de la contabilidad de doble entrada, ya que el dinero no aparece mágicamente, sino que viene de algún lado y va hacia otro.
El formato ledger es tremendamente flexible y las herramientas que tiene de informes son muy potentes.
Como ejemplo te dejo una transacción complicada que involucra una venta de acciones:
2019-06-18 * Venta de acción
Activos:Corretaje AAPL -2.00 {EUR 100.00} @ EUR 130.00
Activos:Cuenta Corriente:USD USD 199 @ EUR 1.30
Gastos:Comisión transacción EUR 1.30
Ingresos:Ganancias de Capital EUR -60.00
Aquí vemos como se vendieron 2 acciones AAPL (Apple Inc.) por 100 USD cada una con una tasa de conversión de 1,3 EUR/USD. Las acciones se compraron previamente a un precio de 100 EUR ahora se venden por un valor de 130 EUR, lo que implica una ganancia de capital de 60 EUR. Además se cobró una comisión que se deduce de la cantidad pagada a la cuenta corrienten en USD.
Así que ledger te permite mucha versatilidad a la hora de definir los asientos contables, pero para preservar un poco de sentido a todas tus cuentas, una recomendación es llevar una estructura básica en el sistema de contabilidad.
En el nivel más alto tienes cinco tipos de cuentas:
- Gastos (Expenses): donde va el dinero,
- Ingresos (Income): de donde viene el dinero,
- Activos (Assets): donde se encuentra el dinero,
- Pasivos (liabilities): dinero que debes. También entra dentro de esta categoría las deudas y las obligaciones.
- Capital (Equity): el valor real de tu propiedad.
Aquí tienes otra posible clasificación de gastos e ingresos.
Algunos enlaces interesantes para aprender más sobre ledger:
Hledger y la diferencia con ledger
Las diferencias entre hledger y ledger son mínimas ya que los formatos de archivos son muy similares. Algunas formas sintácticas se pueden interpretar de maneras ligeramente diferentes, por ejemplo los comentarios o los equilibrios del balance.
Puedes perfectamente tener un archivo de diario que funcione tanto en ledger o hledger, sabiendo las diferencias a evitar, y también puedes tener un archivo común y otro separado para cada formato.
En general hay pocas diferencias y la ventaja de hledger sobre ledger es el formato web para los informes que son muy interesantes a la hora de ver los datos.
Diferencias entre ledger y beancount
Beancount básicamente es una implementación de ledger con algunas restricciones y definiendo cosas que ledger no define.
Así que tenemos un solo archivo de texto como entrada, eliminando créditos y débitos, permitiendo al usuario eludir las cantidades de una publicación, y algún detalle más.
Este formato tenía la intención inicial de implementar una sintaxis compatible, pero al final no fue posible porque se agregaron algunas características como la declaración de saldo (balance assertions) y la declaración explícita de cuentas abiertas.
Ventajas de beacount frente a ledger:
- Contabilidad de acciones: este es un gran problema para ledger, ya que beacount lo deja bien definido en la documentación a diferencia de ledger que lo tienes que definir tu.
- Análisis de inversiones: otro gran problema de ledger. Estaría bien calcular el retonro de inversión y un millón de cosas más, pero con ledger es tedioso. Además estaría bien etiquetar cuentas y escribir consultas basadas en etiquetas para obtener ciertos resultados, cosa que con ledger no es trivial.
- Plugins: añadir funcionalidades extra no es tarea sencilla en ledger, mientras que en beacount están definidos y puedes hacer todo lo que se te ocurra con tu sistema de contabilidad con plugins. Esto también te permite hacer scripts en torno a los datos de contabilidad de manera simple y sencilla.
- Operaciones bursátiles: ajustar los redondeos a valores que se utilizan en la vida real, y no dejar números fraccionarios como hace ledger.
- Python: utilizar python para extender beacount me parece un acierto y una ventaja frente a ledger.
- Parseador: para comprobar que todas los apuntes contables están correctos, beacount tiene un paseador que verifica que todo está correcto y con la ventaja de que no es propietario.
Algunas desventajas que puedes encontrar con Beacount:
- Fechas de vigencia (fechas efectivas): al contabilizar beacount los gastos con estas fechas puedes querer apuntar el pago de cosas por adelantado y el análisis de gasto no tiene sentido con los pagos adelantados.
- Cuentas virtuales: con beacount no es fácil manejar cuentas virtuales, como por ejemplo para tener una para pago de impuestos.
Puedes ver la explicación de las diferencias entre Beancount y ledger aquí.
Fava la madre del cordero
Un aspecto a destacar de estos formatos es la presentación de datos, porque aunque lo tengas en un archivo de texto, no entenderás nada si no ves los datos de manera adecuada.
Fava es una interfaz web para el sistema de contabilidad de doble entrada de Beacount, enfocado en características y usabilidad.
Podría parecer otra interfaz gráfica, pero va más allá, y muestra los datos de manera ordenada y con gráficas muy descriptivas. Esto mejora por mucho la información que se proporciona por las otras herramientas.
Conclusiones
Investigar cada uno de las distintas herramientas me ha llevado más tiempo del que hubiera deseado, pero me ha dejado una imagen bastante clara de las opciones que tengo.
A partir de ahora me queda empezar a trabajar sobre beancount, que va a ser el formato elegido por su versatilidad a la hora de calcular la contabilidad de acciones, y sobre por el entorno gráfico fava.
Este artículo me sirve como introducción a los formatos de texto de gestión de finanzas, y espero que a ti te haya servido como a mi.
Recuerda que si te ha gustado lo que has leído puedes apoyar este proyecto a través de tus compras en Amazon, si, si, has leído bien, apoyar el proyecto. Con las compras que hagas de amazon me estarás ayudando a seguir haciendo este tipo de artículos.
Solo tienes que ir aquí y pegar la URL del producto de amazon que quieres comprar.
Tan simple como eso.
Y tan fácil.
Se feliz, y disfruta este día como si fuera una gran aventura.
Deja una respuesta