Placez les transactions à date future dans un grand livre de scénario séparé pour projeter les liquidités, les dépenses et la dette dans vos rapports financiers. Cette procédure utilise des écritures Beancount ordinaires et une période de planification fixe. Vos livres réalisés restent séparés de vos hypothèses.
Compatibilité, vérifiée le 7 septembre 2026 : les exemples ont été testés avec Beancount standard 3.2.3, beanquery 0.2.0 et Fava 1.30.16. Cette version de Fava n'inclut pas de plugin de prévision. La source personnalisée de Beancount.io contient bien une implémentation fava.plugins.forecast ; il s'agit d'un environnement d'exécution différent, et la disponibilité de la source n'établit pas la version déployée sur votre compte. La procédure portable ci-dessous ne nécessite aucune extension.
Étape 1 : Activer le plugin de prévision
Ignorez l'activation du plugin pour cette procédure. L'ajout de plugin "fava.plugins.forecast" à l'installation standard testée produit une erreur d'import. Pour la configuration générale des plugins, consultez le guide des plugins ; un module doit réellement être installé avant qu'un grand livre puisse le charger.
Prérequis : un environnement Python local avec beancount==3.2.3, beanquery==0.2.0 et fava==1.30.16 installés. Suivez la configuration Fava épinglée pour créer cet environnement. Enregistrez les trois fichiers ci-dessous dans le même répertoire et exécutez les commandes à cet endroit.
Créez books.beancount avec cet instantané complet d'exemple. Sa date de référence est le 31 décembre 2023, après la transaction d'ouverture. Le compte courant détient 10 000,00 USD et le capital restant dû du prêt automobile est de 14 400,00 USD. Les capitaux propres équilibrent cet instantané d'ouverture simplifié.
; 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 USDCréez scenario.beancount comme point d'entrée de planification. Ses deux inclusions chargent l'instantané réalisé et les hypothèses que vous écrirez ensuite. Beancount lit les chemins d'inclusion relatifs à ce fichier.
; scenario.beancount — planning entry point
option "title" "January 2024 planning scenario"
option "operating_currency" "USD"
include "books.beancount"
include "scenario-2024-01.beancount"N'incluez jamais scenario.beancount ou scenario-2024-01.beancount depuis books.beancount. Le point d'entrée réalisé ne doit pas charger de transactions planifiées, même après que leurs dates soient passées.
Étape 2 : Créer une transaction de prévision
Créez scenario-2024-01.beancount avec cette première écriture. Ajoutez les quatre blocs de scénario suivants à ce même fichier une fois chacun. Ce sont des blocs de transactions contextuels : leurs déclarations de comptes proviennent de books.beancount, et vous les validez via scenario.beancount.
2024-01-01 ! "Scenario: January rent" #forecast
Expenses:Housing:Rent 2500.00 USD
Assets:Checking -2500.00 USDLe drapeau ! marque une transaction pour examen ; #forecast est une étiquette de transaction ordinaire. Ni l'un ni l'autre ne crée de récurrences ni n'exclut une transaction des rapports. Le point d'entrée séparé contrôle l'inclusion. Utilisez cette étiquette uniquement sur les écritures planifiées afin de pouvoir les identifier lors de l'examen.
Comprendre la syntaxe de prévision
Chaque écriture datée représente une occurrence. Le texte de narration tel que [MONTHLY] n'a aucun effet de récurrence dans Beancount standard. Les instructions plus anciennes UNTIL, REPEAT et SKIP appartiennent à une convention de plugin personnalisée, pas au langage de base. Cette procédure exprime explicitement les dates qu'elles étaient censées représenter.
Le scénario couvre du 1er au 31 janvier 2024 inclus. Toutes les dates planifiées sont postérieures à la date de référence fixe et antérieures au 1er février. Ces dates historiques rendent l'exemple reproductible ; rien ne dépend de la date d'aujourd'hui. Pour l'adapter, choisissez une nouvelle date de référence et un horizon fini avant d'ajouter des écritures.
Fréquence
Écrivez une transaction pour chaque date d'échéance dans la période de planification. L'exemple complet de janvier utilise ces règles :
| Élément | Calendrier | Dates incluses en janvier 2024 |
|---|---|---|
| Loyer | Mensuel, le 1er | 1er janvier |
| Épicerie | Tous les 7 jours, à partir du 1er janvier | 1, 8, 15, 22, 29 janvier |
| Salaire | Tous les 14 jours, à partir du 5 janvier | 5, 19 janvier |
| Salle de sport | Mensuel, le 15 | 15 janvier |
| Remboursement de prêt | Mensuel, le 25 | 25 janvier |
| Assurance automobile | Tous les 3 mois civils, à partir du 15 janvier | 15 janvier ; le prochain paiement le 15 avril est hors de cet horizon |
Pour d'autres plans quotidiens ou annuels, énumérez les dates d'échéance réelles de la même manière. Définissez une politique pour les dates comme le 31 ou le 29 février avant d'étendre un calendrier. Ne les déplacez pas silencieusement et ne supposez pas que chaque mois a le même nombre de jours.
Conditions (optionnel)
1. Définir une date de fin explicitement
Supposons que l'abonnement à la salle de sport se termine le 31 décembre 2024. Son occurrence de janvier est ci-dessous. Le scénario de janvier s'arrête au 31 janvier, il ne contient donc aucune écriture de février à décembre. Si vous étendez l'horizon, écrivez chaque paiement ultérieur jusqu'au 15 décembre et arrêtez-vous là.
2024-01-15 ! "Scenario: gym membership" #forecast
Expenses:Health:Gym 80.00 USD
Assets:Checking -80.00 USD2. Limiter les occurrences et séparer le principal du prêt des intérêts
Supposons que le prêt automobile ait 36 paiements restants. Incluez uniquement le premier paiement dans cet horizon de janvier. Pour cette échéance hypothétique, supposez que son paiement en espèces de 450,00 USD se compose de 400,00 USD de principal et de 50,00 USD d'intérêts. Ce sont des hypothèses de scénario ; aucune échéance ultérieure n'est générée.
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 USDL'écriture positive au passif réduit le solde de la dette de −14 400,00 USD à −14 000,00 USD. Les liquidités diminuent de 450,00 USD, et seulement 50,00 USD sont une dépense. Les écritures équilibrent parce que 400.00 + 50.00 - 450.00 = 0. Une écriture négative au passif augmenterait la dette.
Ne répétez pas la même répartition principal/intérêts pour les 36 paiements sans un calendrier justificatif. Les intérêts futurs et le paiement final peuvent différer. Utilisez le calendrier de remboursement du prêteur lors de l'extension de cet exemple ; voir amortissement pour la distinction entre la comptabilisation des dépenses et le remboursement de la dette.
3. Écrire les intervalles irréguliers comme des dates réelles
Pour un salaire bihebdomadaire commençant le 5 janvier, les dates de janvier sont le 5 et le 19 janvier. La prochaine occurrence est le 2 février, hors de ce scénario. Bihebdomadaire signifie tous les 14 jours, pas deux fois par mois civil.
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 USDExemple pratique : un budget mensuel
Complétez votre budget mensuel en ajoutant les écritures d'épicerie et d'assurance automobile ci-dessous à scenario-2024-01.beancount. Avec le loyer, la salle de sport, le remboursement de prêt et les deux salaires ci-dessus, cela produit 11 transactions planifiées.
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 USDValidez les deux points d'entrée, puis interrogez leurs soldes de clôture. date < 2024-02-01 inclut toutes les écritures de janvier. La requête des livres utilise la limite fixe de la date de référence 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"Les deux commandes bea check doivent se terminer avec succès. Conciliez les résultats de la requête avec ces calculs indépendants :
| Résultat | Livres réalisés, 31 décembre | Scénario de janvier, 31 janvier |
|---|---|---|
| Compte courant | 10 000,00 USD | 10 000 + 6 000 − 2 500 − 750 − 80 − 450 − 450 = 11 770,00 USD |
| Solde du prêt | −14 400,00 USD | −14 400 + 400 = −14 000,00 USD |
| Écriture de revenu salarial | 0,00 USD | −6 000,00 USD |
| Total des écritures de dépenses | 0,00 USD | 2 500 + 750 + 80 + 450 + 50 = 3 830,00 USD |
Le profit projeté de janvier est de 2 170,00 USD : 6 000 de revenus moins 3 830 de dépenses. Le compte courant augmente de 1 770,00 USD car les 400 supplémentaires de remboursement du principal réduisent la dette plutôt que le profit.
Ouvrez le scénario dans Fava standard :
fava scenario.beancountRéglez le filtre Temporel de Fava sur 2024-01. Son filtrage temporel reporte les soldes des actifs et passifs antérieurs dans la période et supprime les écritures ultérieures. Vérifiez le bilan pour 11 770,00 USD de liquidités et 14 000,00 USD de dette restante. Le compte de résultat doit afficher 2 170,00 USD de profit projeté. Ouvrir books.beancount à la place donne l'instantané réalisé.
Dépannage et bonnes pratiques
- Erreur d'import pour l'ancien plugin : supprimez la ligne d'activation lorsque vous utilisez cette procédure portable. Une installation Fava standard ne fournit pas les modules personnalisés de Beancount.io.
- Compte inconnu ou fichier d'inclusion manquant : enregistrez les trois fichiers dans le même répertoire, copiez les ouvertures et validez
scenario.beancountplutôt que le fragment de scénario seul. - Prévisions absentes de Fava : chargez
scenario.beancountet réglez le filtre Temporel sur2024-01. Une étiquette ou une narration ne génère pas d'écritures. - Soldes inattendus : comparez les 11 dates et montants planifiés avec le tableau. Charger une occurrence deux fois double son effet financier, même si chaque transaction équilibre.
- Gardez les prévisions séparées : les drapeaux, étiquettes et dates futures ordinaires n'empêchent pas les écritures d'affecter un rapport non filtré. Utilisez
books.beancountpour les résultats réels. Lorsqu'un paiement a lieu, enregistrez son montant réel là et retirez l'hypothèse correspondante de votre prochain scénario pour éviter de le compter deux fois. - Révisez l'horizon : conservez un instantané daté lors de l'enregistrement d'un scénario. Étendre sa date de fin signifie ajouter des occurrences spécifiques et revérifier les répartitions de prêt, les dates d'annulation et les arrondis.