Exhibición de la Comunidad: Configuraciones de Beancount en el Mundo Real
Configuraciones de Beancount en el Mundo Real
Introducción
Beancount es un sistema de contabilidad en texto plano versátil, y sus usuarios lo han adaptado para satisfacer una amplia gama de necesidades del mundo real. En esta exhibición de la comunidad, presentamos ejemplos anónimos de cómo diferentes personas estructuran y utilizan sus flujos de trabajo de contabilidad de Beancount, desde autónomos y propietarios de pequeñas empresas hasta entusiastas de las finanzas personales. Estos ejemplos destacan prácticas creativas como el etiquetado de transacciones con metadatos, la automatización de actualizaciones de libros contables con scripts personalizados, el manejo de múltiples divisas, la presupuestación y la previsión, y la ampliación de Beancount con plugins o integraciones (como la interfaz web Fava). El objetivo es inspirar e informar a contadores, desarrolladores y usuarios con conocimientos financieros sobre lo que es posible con el sistema flexible de Beancount.
Ejemplo de interfaz de Fava: Muchos usuarios de Beancount confían en Fava, un panel web de código abierto, para visualizar sus finanzas. Fava puede convertir un libro mayor de Beancount en informes y gráficos interactivos. Por ejemplo, la captura de pantalla anterior muestra un Estado de Resultados en un mapa de árbol que desglosa los ingresos y gastos por categoría, ofreciendo una visión general rápida de dónde proviene y hacia dónde va el dinero. Los usuarios pueden filtrar esta vista por tiempo, cuenta o etiquetas para profundizar en proyectos o períodos específicos. Estas visualizaciones ayudan a que los datos en texto plano sean más accesibles, lo que permite a los usuarios detectar tendencias y anomalías de un vistazo.
Cada configuración de Beancount es única, pero surgen temas comunes. A continuación, analizamos tres escenarios: un autónomo, un propietario de una pequeña empresa y un usuario avanzado de finanzas personales, para ver cómo organizan sus cuentas y aprovechan las funciones de Beancount. Se han eliminado o generalizado todos los datos personales, centrándonos únicamente en las técnicas y configuraciones.
Autónomo: Etiquetado de Proyectos y Seguimiento de Facturas
Nuestro primer ejemplo es un consultor autónomo que utiliza Beancount como la columna vertebral de sus finanzas empresariales. El libro mayor de este autónomo está organizado para rastrear los ingresos y gastos por proyecto y para administrar las facturas de múltiples clientes. Han configurado cuentas dedicadas para Cuentas por Cobrar (A/R) bajo Activos para cada cliente, lo que ayuda a segregar quién debe qué. Cuando completan un proyecto y facturan a un cliente, registran una transacción debitando la cuenta de A/R del cliente y acreditando una cuenta de ingresos. Por ejemplo, una nueva factura podría registrarse como:
2025-08-01 * "Proyecto X Completado" ^INV-0001
Assets:AccountsReceivable:ClientA 5,000 USD
Income:Consulting -5,000 USD
Aquí, la notación ^INV-0001 es un enlace (una característica de metadatos integrada en Beancount) utilizada para etiquetar esta transacción con el número de factura. Cuando el cliente paga parte o la totalidad de esa factura, la transacción de pago incluye el mismo enlace ^INV-0001, que une las dos entradas. Este enlace facilita la asignación de pagos a facturas específicas y la visualización de los saldos pendientes. Como explicó un miembro de la comunidad, puede usar tales etiquetas o enlaces para marcar pagos parciales, por ejemplo, un pago de $20 contra una factura de $30, tanto en la entrada de la factura como en la entrada del pago. Al consultar el libro mayor para ese enlace de factura, el autónomo puede ver instantáneamente cuánto de la factura se ha pagado y qué permanece abierto.
Además de los enlaces, el autónomo utiliza mucho etiquetas para la categorización. Las etiquetas en Beancount son etiquetas con el prefijo # que pueden marcar transacciones para su posterior filtrado. Este usuario etiqueta cada gasto que es facturable a un cliente con el código del proyecto, como #ProjectX, y etiqueta los gastos reembolsables con #Reimbursable. Por ejemplo, si compran billetes de avión para un proyecto de cliente, la entrada de gastos podría incluir #ProjectX #Reimbursable. Esta práctica permite generar informes por proyecto o cliente filtrando por etiquetas. Después de un proyecto, el autónomo puede ejecutar una consulta para enumerar todos los gastos #Reimbursable para ese proyecto y asegurarse de facturar al cliente por cada uno. Un usuario de Beancount notó que etiquetar los gastos de viajes de trabajo ayudó a detectar cualquiera que no fuera reembolsado; idealmente, los gastos de un viaje de trabajo se compensan a $0 cuando se reciben todos los reembolsos del cliente. Esto destaca cómo el etiquetado, combinado con las capacidades de consulta de Beancount, proporciona una capa adicional de supervisión para los autónomos que administran gastos facturables.
Para gestionar el estado de los pagos pendientes, nuestro autónomo utiliza una convención especial para cuentas por cobrar pendientes. Aplican la etiqueta #UNRESOLVED a cualquier transacción de factura que aún no se haya pagado por completo. Beancount (y Fava) no imponen esta etiqueta, pero es un patrón establecido por la comunidad para marcar las transacciones que esperan liquidación. Por ejemplo, hasta que el Cliente A pague los $5,000 completos, la transacción de la factura anterior incluiría #UNRESOLVED. Al filtrar por esa etiqueta, el autónomo puede enumerar todas las facturas abiertas en cualquier momento. Una vez que se recibe y aplica el pago (se ingresa la transacción A/R correspondiente), eliminan o ignoran la etiqueta #UNRESOLVED, y la cuenta por cobrar para ese cliente se equilibrará a cero. Este sistema asegura que ninguna factura "se caiga por las grietas". Es esencialmente un informe de antigüedad realizado en texto plano: si una A/R permanece distinta de cero y etiquetada como no resuelta, necesita atención.
Debido a que los autónomos a menudo tratan con múltiples métodos de pago y, a veces, con múltiples divisas, la configuración de Beancount se adapta a eso sin problemas. En nuestro ejemplo, el consultor podría facturar a algunos clientes en USD y a otros en EUR. El manejo de múltiples divisas es sencillo en Beancount: cualquier cuenta puede contener múltiples commodities (las divisas se tratan como commodities). El autónomo puede mantener subcuentas separadas para cada divisa (por ejemplo, Assets:AccountsReceivable:ClientA:EUR vs ...:USD), o simplemente registrar transacciones en la divisa apropiada en la misma cuenta. Beancount rastreará los saldos por divisa automáticamente. Un usuario enfatizó lo agradable que es que "Beancount pueda rastrear cantidades en cualquier divisa, ya sea USD o un símbolo de cotización", todo en un libro mayor. Nuestro autónomo se aprovecha de esto registrando los tipos de cambio con directivas price cada vez que necesita convertir divisas para la presentación de informes. Pueden generar un informe de ingresos convertido a su divisa local una vez que hayan ingresado los tipos de cambio periódicos o los precios de mercado.
Finalmente, este autónomo integra su libro mayor de Beancount con herramientas prácticas para optimizar su flujo de trabajo. Por ejemplo, adjuntan copias en PDF de cada factura al libro mayor utilizando metadatos de documento. Una entrada de pago de factura típica podría verse así:
2025-08-30 * "ClientA" "Pago por INV-0001" ^INV-0001
Assets:Bank:Checking 5,000 USD
Assets:AccountsReceivable:ClientA -5,000 USD
document: "Invoices/ClientA/INV-0001.pdf"
La directiva o metadatos document de Beancount permite asociar archivos con entradas, y Fava mostrará un hipervínculo para estos archivos adjuntos. Esto significa que el autónomo (o su contador) puede hacer clic directamente desde el informe del libro mayor para ver el PDF de la factura original, lo que garantiza un fácil acceso a la documentación de respaldo. El autónomo también utiliza los informes de Fava para monitorear su negocio: al filtrar el Estado de Resultados o el Balance por cliente, puede ver la rentabilidad por cliente y verificar que todos los proyectos estén pagados. En resumen, el sistema Beancount de este autónomo demuestra un uso intensivo de etiquetas y enlaces para administrar la contabilidad basada en proyectos. Convierte un libro mayor de texto plano en una robusta herramienta de contabilidad freelance, con una clara visibilidad de los gastos del proyecto, los ingresos en múltiples divisas y los estados de las facturas.
Prácticas clave en la configuración de Freelancer: Usar etiquetas para agrupar transacciones por proyecto o propósito, vincular facturas y pagos con identificadores únicos, marcar las cuentas por cobrar pendientes con una etiqueta #UNRESOLVED, adjuntar documentos de factura a las entradas del libro mayor como referencia y aprovechar el soporte de múltiples divisas de Beancount para facturar a clientes internacionales sin problemas. Todo esto se logra con entradas de texto plano más algunas herramientas auxiliares, lo que demuestra el poder de los metadatos en Beancount.
Pequeña Empresa: Automatización y Contabilidad en Múltiples Divisas
A continuación, observamos al propietario de una pequeña empresa, específicamente un fundador de una startup, que adoptó Beancount para llevar los libros de la empresa. Las pequeñas empresas tienen necesidades similares a las de los autónomos (facturas, gastos, múltiples divisas) pero a menudo a mayor escala y con un mayor énfasis en la automatización, la consistencia y la colaboración. En este caso, el fundador era técnicamente inteligente y construyó un flujo de trabajo de Beancount altamente automatizado para minimizar la contabilidad manual. Después de evaluar el software de contabilidad tradicional como QuickBooks, optaron por el enfoque de texto plano de Beancount para mantener el control total de los datos. Durante algunos años, desarrollaron iterativamente herramientas personalizadas para lograr un proceso de contabilidad automatizado en un 95%.
Importaciones automatizadas y conciliación: Uno de los primeros desafíos fue importar transacciones de varias fuentes (cuentas bancarias, tarjetas de crédito, procesadores de pago) al libro mayor. En lugar de escribir cada transacción, este usuario configuró scripts de importación para obtener y traducir datos al formato Beancount. Escribieron importadores de Python personalizados para el formato CSV o API de cada institución financiera, de modo que con un comando puedan extraer nuevas transacciones y agregarlas al libro mayor. Por ejemplo, utilizando el framework bean-extract de Beancount, el fundador puede ejecutar un script que escanea una carpeta de descargas en busca de nuevos extractos y los genera como entradas de Beancount. Otro usuario, Rhyd Lewis, describió una configuración similar donde tiene scripts de importación separados para cada banco y puede invocarlos mediante un comando simple (usando un Justfile) para actualizar su libro mayor. Nuestro propietario de una pequeña empresa hace lo mismo: todas las transacciones bancarias, los deslizamientos de tarjetas de crédito e incluso las transacciones de PayPal o Stripe se obtienen y se agregan automáticamente a los libros, categorizadas con las cuentas apropiadas.
Para garantizar la integridad de los datos incluso cuando estas entradas se agregan automáticamente, también utilizan las herramientas de validación y los plugins de Beancount. Por ejemplo, el plugin beancount.plugins.noduplicates está habilitado para evitar la importación accidental de la misma transacción dos veces, y beancount.plugins.nounused marca cualquier cuenta que no tenga entradas (útil para limpiar cuentas obsoletas). El fundador también utiliza un formateador (como bean-format o la herramienta de la comunidad beancount-black) para mantener el archivo del libro mayor con un estilo consistente. Esto importa porque con muchas ediciones automatizadas, tener un estilo uniforme facilita las diferencias y las auditorías. De hecho, el fundador mantiene el libro mayor en un repositorio Git, tratando las actualizaciones del libro mayor como cambios de código. Cada nuevo lote de transacciones importadas se convierte en un commit de Git, y pueden revisar las diferencias para ver qué cambió. En una captura de pantalla, muestran un historial de Git donde una transacción de tarjeta de crédito para "Costco" pasa de un estado pendiente a liquidado en el libro mayor, todo sin intervención manual. El control de versiones proporciona un registro de auditoría: pueden ver exactamente cuándo se agregó o modificó una transacción e incluso revertir los cambios si algo se importó incorrectamente. Este es un gran ejemplo de cómo llevar las mejores prácticas de desarrollo de software (como el control de código fuente) a los registros contables.
Múltiples divisas y transacciones internacionales: Las pequeñas empresas a menudo realizan transacciones en múltiples divisas; por ejemplo, una startup podría tener gastos en USD pero también recibir pagos en EUR o mantener una cuenta bancaria en GBP. Nuestra empresa de exhibición utiliza las funciones de múltiples divisas de Beancount para consolidar todo esto en un solo libro mayor. Abrieron cuentas separadas para cada divisa (por ejemplo, Assets:Bank:Checking:USD y Assets:Bank:Checking:EUR), que es un enfoque común. Sin embargo, incluso si diferentes divisas comparten una cuenta, Beancount rastreará el saldo de cada divisa por separado y requerirá que las transacciones se equilibren por divisa. El fundador ejecuta con frecuencia informes de valoración para ver los saldos totales de la empresa convertidos a la divisa base. Dado que Beancount admite búsquedas de precios, configuró fuentes de precios diarias para los tipos de cambio de divisas (y los precios de las acciones para cualquier inversión) utilizando la herramienta bean-price o un plugin. El resultado es que en cualquier momento puede generar un balance en, digamos, USD que incluye la cuenta en EUR traducida al tipo de cambio más reciente. Los miembros de la comunidad señalan que el manejo de múltiples divisas en la contabilidad de estilo libro mayor es simple: solo agrega transacciones en la divisa dada y registra los tipos de cambio según sea necesario. Por ejemplo, un usuario compartió un ejemplo de conversión de USD a EUR a CAD a través de cuentas intermedias como una forma de administrar las conversiones de divisas en Beancount. En nuestro caso, la pequeña empresa no necesariamente convierte divisas en transacciones (las mantienen en la divisa nativa) pero utiliza informes para consolidar. Esta flexibilidad ha sido crucial a medida que la startup se expandió globalmente.
Scripts y extensiones personalizados: No todo lo que el fundador necesitaba estaba disponible de fábrica, por lo que extendió Beancount con plugins personalizados. Con el tiempo, terminaron escribiendo una biblioteca de analizadores, una herramienta de formato y un importador de transacciones basado en reglas, lanzando muchos de estos como paquetes de código abierto. Por ejemplo, construyeron un motor de importación basado en reglas que utiliza una configuración YAML para categorizar las transacciones automáticamente. Un fragmento de esta configuración muestra cómo los beneficiarios o descripciones específicos (como "Comcast" o "PG&E") se asignan a ciertas cuentas de gastos y narraciones, de modo que cuando aparecen en un feed bancario, se genera la entrada correcta de Beancount sin edición manual. Esto es esencialmente una automatización personalizada para aplicar reglas de contabilidad (para servicios públicos, suscripciones, etc.) sobre la marcha. Otro plugin asegura que el libro mayor siempre permanezca equilibrado y formateado. Todas estas herramientas se ejecutan como parte del flujo de trabajo del fundador cada vez que se ingieren nuevos datos. El resultado es un libro mayor que "se actualiza solo" con una intervención mínima, lo que el fundador dice que le brinda "pura alegría" como un desarrollador obsesionado con la automatización.
La seguridad y la accesibilidad también eran preocupaciones. El fundador quería que su equipo de finanzas (e incluso su cónyuge, actuando como supervisor) pudieran ver los libros fácilmente. Para esto, configuró una implementación privada de Fava en la nube. Cada vez que envía un nuevo commit del libro mayor al repositorio Git privado, una canalización de CI (utilizando GitHub Actions y AWS Elastic Beanstalk) implementa una instancia actualizada de Fava. La interfaz web está detrás de una contraseña (utilizando un proxy Nginx con autenticación básica), por lo que solo las personas autorizadas pueden verla. De esta manera, los últimos estados financieros están siempre disponibles a través de un panel de control del navegador, sin necesidad de instalar nada localmente. El diagrama de arquitectura a continuación ilustra esta configuración: el archivo Beancount y la configuración necesaria se agrupan en una imagen de Docker junto con Fava, y se sirven en AWS, con Cloudflare al frente por seguridad.
Automatización de Beancount en la nube: Este diagrama muestra una canalización de implementación para un libro mayor de Beancount + Fava. El usuario actualiza el archivo del libro mayor localmente y lo envía a Git; se construye un contenedor Docker (que incluye Fava y Nginx para la autenticación) y se implementa en un servidor AWS Beanstalk, y Cloudflare actúa como proxy. El resultado es un portal web seguro donde los datos financieros de la pequeña empresa pueden ser accedidos desde cualquier lugar (por el propietario o el equipo) en tiempo real. Esta configuración avanzada demuestra cómo una pequeña empresa puede integrar Beancount con herramientas de nube modernas para lograr la conveniencia sin renunciar a la propiedad de los datos.
En el uso diario, el enfoque del propietario de la pequeña empresa está en el manejo de excepciones en lugar de la entrada de datos. Cada mes, revisa brevemente las transacciones importadas automáticamente (utilizando las diferencias de Git o la vista de diario de Fava) para detectar cualquier entrada no categorizada o incorrecta. También utiliza las aseveraciones de saldo de Beancount para conciliar cuentas. Por ejemplo, después de ingresar todas las transacciones de junio, podría agregar una verificación de saldo para confirmar que el saldo final de la cuenta bancaria coincide con el extracto; si no, Beancount mostrará un error, lo que indica que falta algo o se ingresó incorrectamente. Esto asegura que los libros permanezcan precisos.
Prácticas clave en la configuración de la pequeña empresa: Automatización pesada a través de importadores y scripts personalizados (haciendo que el libro mayor sea "95% automático"), uso del control de versiones para rastros de auditoría y colaboración, contabilidad en múltiples divisas con fuentes de precios para la valoración y la implementación de Fava para un acceso fácil y compartible a los informes financieros. El escenario de la pequeña empresa muestra hasta dónde se puede llevar Beancount con el esfuerzo de ingeniería, convirtiendo la contabilidad en una canalización en gran medida automatizada, preservando al mismo tiempo la transparencia y la flexibilidad. Incluso si uno no es programador, muchos de estos beneficios se pueden lograr mediante el uso de plugins de la comunidad (para formateo, detección de duplicados, etc.) y mediante la adopción del flujo de trabajo de texto plano que fomenta revisiones y copias de seguridad frecuentes.
Entusiasta de las Finanzas Personales: Presupuestación y Análisis Personalizado
Nuestra exhibición final es un entusiasta de las finanzas personales, alguien que usa Beancount para administrar las finanzas y las inversiones del hogar con un alto nivel de detalle. Este usuario trata sus finanzas personales con el rigor de un contador y la curiosidad de un analista de datos. El resultado es un libro mayor de Beancount que no solo rastrea cada centavo, sino que también sirve como base para la presupuestación, la previsión y los experimentos analíticos.
Organización del libro mayor personal: Muchas personas comienzan con un solo archivo Beancount para todas sus cuentas, y este entusiasta no es diferente. Mantienen un libro mayor maestro (por ejemplo, main.beancount) que incluye todas las cuentas (cuentas bancarias, tarjetas de crédito, préstamos, carteras de inversión, etc.) y transacciones. Con el tiempo, introdujeron cierta estructura dividiendo las secciones; por ejemplo, tienen un archivo para abrir/cerrar cuentas y archivos separados para transacciones anuales, que se incluyen en el archivo principal. Esta organización modular facilita la navegación por años de datos (uno puede archivar años antiguos en archivos separados) sin dejar de ser lógicamente un libro mayor. Otro usuario personal en el foro de la comunidad describió un diseño similar: un archivo principal que incluye otros por categoría (por ejemplo, Income.beancount, Expenses.beancount, Investments.beancount). Nuestro entusiasta lo mantiene sencillo por ahora: un archivo sincronizado entre dispositivos.
Hablando de sincronización, debido a que son finanzas personales, este usuario quiere capturar las transacciones dondequiera que estén. Utilizan una aplicación móvil llamada Beancount Mobile para agregar rápidamente entradas sobre la marcha (por ejemplo, registrar un gasto en efectivo directamente en la tienda). El archivo del libro mayor se comparte a través de una sincronización en la nube (Syncthing, en este caso) para que su teléfono, su computadora portátil y un VPS (servidor) tengan la última copia. En una computadora, prefieren usar Emacs con beancount-mode para una edición cómoda con resaltado de sintaxis. Esta configuración asegura que, ya sea que estén en su escritorio o fuera de casa, puedan registrar las transacciones inmediatamente y evitar olvidar algo. Es un gran ejemplo de adaptación de herramientas tecnológicas para la conveniencia personal, construyendo efectivamente una alternativa auto-hospedada a las aplicaciones comerciales de presupuestación.
Etiquetado y metadatos para el seguimiento granular: Este usuario aprovecha las etiquetas para agregar una segunda dimensión a sus datos más allá del plan de cuentas. Para las categorías de presupuestación regulares, las cuentas son suficientes (tienen cuentas como Expenses:Groceries, Expenses:Rent, etc.), pero para temas transversales como eventos u objetivos, usan etiquetas. Por ejemplo, etiquetan todas las transacciones relacionadas con su proyecto de renovación de la casa con #HomeReno, ya sea comprar madera en una ferretería (gasto) o recibir un reembolso de un fabricante (ingreso). De esta manera, pueden generar un informe del costo total del proyecto fácilmente sin que esos gastos estén aislados en diferentes cuentas. Un usuario de Reddit demostró este enfoque etiquetando gastos como #garage-improvement o #lighting-improvement para proyectos domésticos, lo que hace que sea trivial filtrarlos y sumarlos a través de las consultas de Beancount. Nuestro entusiasta hace lo mismo para las vacaciones (#ItalyTrip2025), las compras importantes y los eventos únicos.
Los metadatos (pares clave-valor en las transacciones) también se utilizan para algunos fines específicos. Por ejemplo, agregan un metadato location: ... a los grandes gastos para rastrear dónde gastaron el dinero, o una note: ... para obtener contexto adicional más allá del beneficiario y la narración. En algunos casos, incluso crearon campos de metadatos personalizados para ayudar con la previsión. Un ejemplo es agregar budget: X y frequency: monthly a ciertos gastos recurrentes, una idea inspirada en una discusión en la lista de correo de Beancount donde un usuario estaba almacenando proyecciones de presupuesto en metadatos para cada gasto. Esos campos de metadatos no afectan al núcleo de Beancount, pero el entusiasta escribió un pequeño script de Python que los lee y compara el gasto real con el presupuesto proyectado. Esta es una alternativa al uso de los presupuestos integrados de Fava (que se describen a continuación), que muestra cómo los metadatos se pueden adaptar a la voluntad del usuario. Como señaló el creador de Beancount, los metadatos están "solo ahí para ti [para usar en scripts personalizados] - Beancount los analiza pero los ignora" por sí mismo. En resumen, este usuario no tiene miedo de extender el libro mayor con información adicional para ayudar en su análisis personal.
Presupuestación con Beancount: Uno de los principales objetivos para este usuario es ceñirse a un presupuesto mensual. Anteriormente utilizaban una aplicación de presupuestación (YNAB) y querían replicar algunos de sus conceptos de presupuestación de sobres. Hay algunas maneras de hacer la presupuestación en Beancount, pero la más fácil es usar las directivas de presupuesto de Fava. Nuestro entusiasta agrega entradas budget en el libro mayor de la siguiente manera:
2025-01-01 custom "budget" Expenses:Groceries "monthly" 500 USD
2025-01-01 custom "budget" Expenses:DiningOut "monthly" 200 USD
2025-01-01 custom "budget" Expenses:Travel "yearly" 3000 USD
Cada línea establece un presupuesto para una cuenta (categoría) durante un período. Fava luego muestra barras de presupuesto vs real en la interfaz web, lo que permite al usuario ver, por ejemplo, que gastaron 480 USD en comestibles este mes de los 500 presupuestados, y tal vez 220 en cenas fuera de casa (por encima del presupuesto). El entusiasta consulta los informes de Estado de Resultados y Gastos de Fava con regularidad, que muestran tanto los totales mensuales como los objetivos del presupuesto. Fava convenientemente acumula los presupuestos diarios/semanales en los intervalos de tiempo apropiados. Al usar la interfaz de usuario de Fava para esto, el usuario no necesita una hoja de cálculo separada para la presupuestación; todo está integrado. (También experimentaron con un sistema de "sobre" más automatizado moviendo fondos a cuentas ficticias al comienzo de cada mes, como se sugiere en los foros, pero encontraron que las directivas de presupuesto personalizadas eran más fáciles de mantener).
Para la previsión, más allá de los presupuestos, vigilan las próximas facturas. Algunos miembros de la comunidad han creado plugins para generar transacciones futuras para suscripciones o calendarios de amortización de préstamos, pero este usuario optó por un enfoque más simple: mantienen una sección separada del libro mayor con transacciones con fecha futura para elementos conocidos (como el alquiler del próximo mes o un próximo pago anual del seguro). Estos permanecen en el libro mayor pero no afectan a los saldos de hoy, y una vez que llega la fecha y la transacción se vuelve actual, sirve como un recordatorio (y ajustarán la cantidad si es necesario para que coincida con el cargo real). Es un poco una chapuza, pero funciona para pronosticar el flujo de caja sin herramientas complejas.
Seguimiento de inversiones y contabilidad de múltiples commodities: Como un entusiasta de las finanzas, este usuario también usa Beancount para consolidar cuentas de inversión (acciones, fondos mutuos y criptomonedas) junto con cuentas en efectivo. Tienen cuentas de corretaje cuyas tenencias (por ejemplo, acciones de AAPL, GOOG, etc.) se registran en Beancount como commodities. Por ejemplo, la compra de 10 acciones de Apple sería una entrada que acredita el efectivo de la cuenta de corretaje y debita una cuenta de activos con 10 AAPL como el monto del commodity. La capacidad de Beancount para manejar cualquier commodity es muy útil aquí; uno puede mezclar divisas y acciones libremente. "Beancount puede rastrear cantidades en cualquier divisa, ya sea USD o un símbolo de cotización", como señaló un usuario, lo que fue una gran mejora con respecto a las aplicaciones de finanzas personales que a menudo no admiten bien las posiciones de acciones. Nuestro entusiasta utiliza la herramienta bean-price en un trabajo cron nocturno para obtener los últimos precios de mercado para todos sus valores y divisas extranjeras. Todas las noches a las 4 a. m., se ejecuta un script bean-price que extrae los precios (de Yahoo Finance u otra fuente) y agrega registros de precios al libro mayor para ese día. De esta manera, la próxima vez que abran Fava o ejecuten un informe, pueden ver los valores actualizados de la cartera e incluso el rendimiento de la inversión a lo largo del tiempo. Todo el patrimonio neto, en cuentas bancarias, fondos de jubilación y billeteras criptográficas, está disponible en una vista unificada. Este es un sueño para un inversor basado en datos: no es necesario iniciar sesión en múltiples plataformas para ver la imagen completa. Esencialmente han construido un panel de control financiero personal impulsado por Beancount.
Análisis e integración: Lo que realmente distingue a este usuario avanzado de finanzas personales es cómo analizan los datos una vez que están en Beancount. Con todas las transacciones en una base de datos SQLite (Beancount puede consultar datos a través de su lenguaje de consulta incorporado, que es similar a SQL), el usuario puede realizar análisis personalizados. Escribieron scripts de Python para responder preguntas como "¿Cuál es el promedio móvil de 3 meses de mi gasto en comestibles?" o "¿Cómo se compara el gasto de este año en servicios públicos con el del año pasado?". Un script consulta el libro mayor para etiquetas específicas y genera resultados en un dataframe de Pandas para un procesamiento numérico adicional. Debido a que el libro mayor es texto plano, también han utilizado notebooks de Jupyter para experimentar con diferentes visualizaciones (más allá de lo que ofrece Fava). Por ejemplo, produjeron un gráfico de barras personalizado de la tasa de ahorro mensual utilizando Matplotlib agregando datos de Beancount en Python. Este tipo de análisis ad-hoc solo es posible porque Beancount mantiene los datos accesibles y legibles por máquina. Como dijo un usuario, extraer datos es trivial: "Tengo un script de Python que extrae datos de Beancount usando el lenguaje de consulta, y luego uso un dataframe de pandas para preparar los datos en un informe". Nuestro entusiasta tiene un repositorio de pequeños scripts como este que ejecutan para su revisión financiera anual.
Por supuesto, no todo requiere codificación: la mayor parte del tiempo, confían en los gráficos integrados de Fava. Fava proporciona un gráfico de líneas de patrimonio neto, una tendencia de ingresos vs gastos e incluso un desglose de mapa de árbol (como se muestra anteriormente) que están a solo un clic de distancia. El usuario aprecia que toda la historia de sus finanzas desde 2018 se pueda consultar y auditar. Por ejemplo, si se preguntan "¿cuánto he gastado en reparaciones de automóviles en los últimos 5 años?", pueden escribir una consulta rápida o filtrar en Fava para obtener la respuesta, en lugar de buscar entre los recibos. Esta capacitación es exactamente lo que les atrajo de Beancount: la propiedad total de los datos y la flexibilidad infinita en el análisis. Como beneficio adicional, el libro mayor de texto plano está preparado para el futuro: se puede controlar la versión, migrar o incluso analizar por otras herramientas si es necesario. A diferencia de una aplicación de código cerrado, no existe el riesgo de perder el acceso a su historial financiero.
Prácticas clave en la configuración personal: Utilizar herramientas móviles y de escritorio para la entrada de datos conveniente, usar etiquetas y metadatos personalizados para rastrear eventos de la vida y agrupaciones entre categorías, implementar presupuestos a través de las directivas budget de Fava para los objetivos de gasto en curso, rastrear inversiones y múltiples divisas en el mismo libro mayor (con actualizaciones de precios automatizadas) y realizar análisis personalizados consultando los datos del libro mayor directamente. Este caso muestra que con un poco de configuración, incluso los entusiastas de las finanzas personales pueden alcanzar un nivel de información y control típicamente reservado para las empresas, todo mientras mantienen las cosas divertidas e interesantes para un usuario experto en tecnología.
Conclusión
A través de estos ejemplos de la comunidad, un tema claro es que la flexibilidad de Beancount permite un sistema contable altamente personalizado. Los usuarios avanzados de la comunidad han aprovechado archivos de texto simples para construir soluciones que rivalizan con el software comercial en capacidad, pero están hechas a medida para sus flujos de trabajo. Los autónomos etiquetan y enlazan las entradas para administrar los proyectos y las facturas de los clientes con facilidad. Los propietarios de pequeñas empresas eliminan mediante scripts las tediosas tareas de contabilidad e integran Beancount con la infraestructura moderna para obtener finanzas siempre actualizadas. Los entusiastas de las finanzas personales utilizan el libro mayor como una única fuente de verdad para la presupuestación, la inversión y la toma de decisiones, aumentándolo con etiquetas y herramientas para responder virtualmente cualquier pregunta sobre su dinero. Todo esto se logra manteniendo las ventajas principales de la contabilidad en texto plano: transparencia, auditabilidad y control sobre los datos propios.
La comunidad de Beancount también ha producido un rico ecosistema de plugins e integraciones. Desde modos de edición y aplicaciones móviles para la entrada, hasta la interfaz web de Fava para la visualización, hasta innumerables importadores y utilidades en GitHub, hay recursos para acomodar casi todas las necesidades. Los usuarios comparten con frecuencia sus configuraciones de libros mayores en foros y blogs, para que otros puedan aprender y adoptar las mejores prácticas. Es importante destacar que la información confidencial se puede mantener privada (o editar fácilmente para compartir) debido al formato legible por humanos, como hemos hecho en esta exhibición. Los ejemplos anteriores demuestran que, ya sea que sea un desarrollador freelance, un fundador de una startup o un nerd de las finanzas personales, puede doblegar Beancount a su voluntad. Mediante el uso creativo de etiquetas y metadatos, la automatización donde sea posible, el manejo de transacciones en múltiples divisas, la planificación con presupuestos y la extensión a través de plugins, la comunidad continúa superando los límites de lo que es posible en texto plano. El resultado son libros mayores de contabilidad de calidad profesional que también son atractivos de mantener, lo que brinda a los usuarios claridad y control sobre sus finanzas.