Ponga las transacciones con fecha futura en un libro de escenario separado para proyectar efectivo, gastos y deuda en sus informes financieros. Este recorrido utiliza asientos ordinarios de Beancount y un período de planificación fijo. Sus libros realizados permanecen separados de sus supuestos.
Compatibilidad, verificada el 7 de septiembre de 2026: los ejemplos se probaron con Beancount estándar 3.2.3, beanquery 0.2.0 y Fava 1.30.16. Esa versión de Fava no incluye un plugin de previsión. La fuente personalizada de Beancount.io sí contiene una implementación de fava.plugins.forecast; eso es otro entorno de ejecución, y la disponibilidad del código fuente no establece la versión implementada en su cuenta. El flujo de trabajo portable a continuación no necesita ninguna extensión.
Paso 1: Habilitar el Plugin de Previsión
Omita la activación del plugin para este flujo de trabajo. Agregar plugin "fava.plugins.forecast" a la instalación estándar probada produce un error de importación. Para la configuración general de plugins, consulte la guía de plugins; un módulo debe estar realmente instalado antes de que un libro pueda cargarlo.
Requisitos previos: un entorno de Python local con beancount==3.2.3, beanquery==0.2.0 y fava==1.30.16 instalados. Siga la configuración fija de Fava para crear ese entorno. Guarde los tres archivos a continuación en el mismo directorio y ejecute los comandos allí.
Cree books.beancount con esta instantánea completa de ejemplo. Su fecha de referencia es el 31 de diciembre de 2023, después de la transacción inicial. La cuenta de cheques tiene 10,000.00 USD y el principal pendiente del préstamo del automóvil es de 14,400.00 USD. El patrimonio salda esta instantánea de apertura simplificada.
; books.beancount — realized balances as of 2023-12-31
option "operating_currency" "USD"
2023-12-31 open Assets:Checking USD
2023-12-31 open Liabilities:Auto-Loan USD
2023-12-31 open Equity:Opening-Balances USD
2023-12-31 open Income:Salary USD
2023-12-31 open Expenses:Housing:Rent USD
2023-12-31 open Expenses:Food:Groceries USD
2023-12-31 open Expenses:Health:Gym USD
2023-12-31 open Expenses:Insurance:Auto USD
2023-12-31 open Expenses:Transportation:Interest USD
2023-12-31 * "Opening snapshot"
Assets:Checking 10000.00 USD
Liabilities:Auto-Loan -14400.00 USD
Equity:Opening-Balances 4400.00 USDCree scenario.beancount como punto de entrada de planificación. Los dos includes cargan la instantánea realizada y los supuestos que escribirá a continuación. Beancount lee las rutas de include en relación con este archivo.
; scenario.beancount — planning entry point
option "title" "January 2024 planning scenario"
option "operating_currency" "USD"
include "books.beancount"
include "scenario-2024-01.beancount"Nunca incluya scenario.beancount o scenario-2024-01.beancount desde books.beancount. El punto de entrada realizado no debe cargar transacciones planeadas, incluso después de que sus fechas hayan pasado.
Paso 2: Crear una Transacción de Previsión
Cree scenario-2024-01.beancount con este primer asiento. Anexe los cuatro bloques de escenario posteriores a ese mismo archivo una vez cada uno. Estos son bloques de transacción contextuales: sus declaraciones de cuentas provienen de books.beancount, y los valida a través de scenario.beancount.
2024-01-01 ! "Scenario: January rent" #forecast
Expenses:Housing:Rent 2500.00 USD
Assets:Checking -2500.00 USDEl marcador ! indica una transacción para revisión; #forecast es una etiqueta de transacción ordinaria. Ninguno crea recurrencias ni excluye una transacción de los informes. El punto de entrada separado controla la inclusión. Use esta etiqueta solo en asientos planificados para poder identificarlos durante la revisión.
Comprensión de la Sintaxis de Previsión
Cada asiento con fecha representa una ocurrencia. El texto de narración como [MONTHLY] no tiene efecto de recurrencia en Beancount estándar. Las instrucciones más antiguas UNTIL, REPEAT y SKIP pertenecen a una convención de plugin personalizada, no al lenguaje central. Este flujo de trabajo expresa sus fechas previstas explícitamente.
El escenario cubre del 1 al 31 de enero de 2024, ambos incluidos. Todas las fechas planificadas están después de la fecha de referencia fija y antes del 1 de febrero. Estas fechas históricas hacen que el ejemplo sea reproducible; nada depende de la fecha de hoy. Al adaptarlo, elija una nueva fecha de referencia y un horizonte finito antes de agregar asientos.
Frecuencia
Escriba una transacción por cada fecha de vencimiento dentro del período de planificación. El ejemplo completo de enero usa estas reglas:
| Elemento | Frecuencia | Fechas incluidas en enero de 2024 |
|---|---|---|
| Renta | Mensual, el día 1 | 1 de enero |
| Comestibles | Cada 7 días, desde el 1 de enero | 1, 8, 15, 22, 29 de enero |
| Salario | Cada 14 días, desde el 5 de enero | 5 y 19 de enero |
| Gimnasio | Mensual, el día 15 | 15 de enero |
| Pago de préstamo | Mensual, el día 25 | 25 de enero |
| Seguro de automóvil | Cada 3 meses calendario, desde el 15 de enero | 15 de enero; el siguiente pago el 15 de abril está fuera del horizonte |
Para otros planes diarios o anuales, enumere las fechas de vencimiento reales de la misma manera. Establezca una política para fechas como el día 31 o el 29 de febrero antes de extender un calendario. No las mueva silenciosamente ni suponga que todos los meses tienen el mismo número de días.
Condiciones (Opcional)
1. Establezca una fecha de fin explícita
Supongamos que la membresía del gimnasio termina el 31 de diciembre de 2024. Su ocurrencia de enero se muestra abajo. El escenario de enero se detiene el 31 de enero, por lo que no contiene asientos de febrero a diciembre. Si extiende el horizonate, escriba cada pago posterior hasta el 15 de diciembre y deténgase ahí.
2024-01-15 ! "Scenario: gym membership" #forecast
Expenses:Health:Gym 80.00 USD
Assets:Checking -80.00 USD2. Limite las ocurrencias y separe el principal del préstamo del interés
Supongamos que el préstamo del automóvil tiene 36 pagos restantes. Incluya solo el primer pago en este horizonte de enero. Para esta cuota hipotética, supongamos que su pago en efectivo de 450.00 USD consta de 400.00 USD de principal y 50.00 USD de interés. Estos son supuestos del escenario; no se generan cuotas posteriores.
2024-01-25 ! "Scenario: car loan payment 1 of 36" #forecast
Liabilities:Auto-Loan 400.00 USD
Expenses:Transportation:Interest 50.00 USD
Assets:Checking -450.00 USDEl asiento positivo de pasivo reduce el saldo de la deuda de −14,400.00 USD a −14,000.00 USD. El efectivo cae en 450.00 USD, y solo 50.00 USD es un gasto. Los asientos están equilibrados porque 400.00 + 50.00 - 450.00 = 0. Un asiento de pasivo negativo aumentarí la deuda.
No repita la misma división principal/interés para los 36 pagos sin un calendario de respaldo. Los futuros intereses y el pago final pueden diferir. Use el calendario de pagos del prestamista al ampliar este ejemplo; consulte amortización para ver la distinción entre el reconocido de gastos y el reembolso de deuda.
3. Escriba intervalos irregulares como fechas reales
Para un salario quincenal que comienza el 5 de enero, las fechas de enero son el 5 de enero y el 19 de enero. La siguiente ocurrencia el 2 de febrero está fuera de este escenario. Quincenal significa cada 14 días, no dos veces por mes calendario.
2024-01-05 ! "Scenario: salary" #forecast
Assets:Checking 3000.00 USD
Income:Salary -3000.00 USD
2024-01-19 ! "Scenario: salary" #forecast
Assets:Checking 3000.00 USD
Income:Salary -3000.00 USDEjemplo Práctico: Un Presupuesto Mensual
Complete su presupuesto mensual agregando los asientos de víveres y seguro de automóil a continuación a scenario-2024-01.beancount. Junto con el alquiler, el gimnasio, el pago del préstamo y el doble salario anterior, esto produce 11 transacciones planeadas.
2024-01-01 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-08 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-15 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-22 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-29 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-15 ! "Scenario: quarterly car insurance" #forecast
Expenses:Insurance:Auto 450.00 USD
Assets:Checking -450.00 USDValide ambos puntos de entrada, luego consulte sus saldos finales. El filtro date < 2024-02-01 incluye todos los asientos de enero. La consulta de libros utiliza el límite de referencia fijo date < 2024-01-01.
bea --file books.beancount check
bea --file scenario.beancount check
bea --file books.beancount query "SELECT account, sum(position) WHERE date < 2024-01-01 GROUP BY account ORDER BY account"
bea --file scenario.beancount query "SELECT account, sum(position) WHERE date < 2024-02-01 GROUP BY account ORDER BY account"Ambos comandos bea check deberían salir con éxito. Conciliete los resultados de las consultas con los cálculos independientes que se muestran a continuación:
| Resultado | Libros realizados, 31 de diciembre | Escenario de enero, 31 de enero |
|---|---|---|
| Cuenta de efectivo | 10,000.00 USD | 10,000 + 6,000 − 2,500 − 750 − 80 − 450 − 450 = 11,770.00 USD |
| Saldo del préstamo | −14,400.00 USD | −14,400 + 400 = −14,000.00 USD |
| Asiento de ingreso por salario | 0.00 USD | −6,000.00 USD |
| Asientos de gastos totales | 0.00 USD | 2,500 + 750 + 80 + 450 + 50 = 3,830.00 USD |
La ganancia proyectada de enero es 2,170.00 USD: 6,000 de ingreso menos 3,830 de gastos. El efectivo aumenta en 1,770.00 USD porque el principal adicional de 400 reduce la deuda en lugar de la ganancia.
Abra el escenario en Fava estándar:
fava scenario.beancountEstablezca el filtro de Tiempo de Fava en 2024-01. Su filtrado de tiempo arrastra los saldos de activos y pasivos anteriores al período y elimina los asientos posteriores. Verifique el balance general para 11,770.00 USD en efectivo y 14,000.00 USD de deuda pendiente. El estado de resultados debería mostrar una ganancia proyectada de 2,170.00 USD. Abrir books.beancount en su lugar muestra la instantánea realizada.
Mitigación de Problemas y Mejores Prácticas
- Error de importación del plugin antiguo: elimine la línea de activación cuando use este flujo de trabajo portable. Una instalación estándar de Fava no proporciona los módulos personalizados de Beancount.io.
- Cuenta desconocida o archivo de include faltante: guarde los tres archivos en el mismo directorio, copie los inicios con cuidado y valide
scenario.beancounten lugar del fragmento de escenario aislado. - Faltan previsiones en Fava: cargue
scenario.beancounty configure el filtro de Tiempo en2024-01. Una etiqueta o narración no genera asientos. - Saldos inesperados: compare las 11 fechas y los montos planeados con la tabla. Cargar una ocurrencia dos veces duplica su efecto financiero, incluso cuando cada transacción está equilibrada.
- Mantenga las previsores separados: los indicadores, etiquetas y fechas futuras ordinarias no evitan que las transacciones afecten un informe sin filtrar. Use
books.beancountpara los resultados reales. Cuando se realice un pago, registre su monto real en los libros y elimine el supuesto correspondiente de su próximo escenario para no contar dos veces. - Revise el horizonte: preserve una instantánea con fecha al guardar un escenario. Extender su fecha de fin significa agregar ocurrencias específicas y verificar de nuevo las divisiones del préstamo, las fechas de cancelación y los redondeos.