Zum Hauptinhalt springen

Finanzanalyse in Echtzeit mit Fava und Beancount

Einführung

Beancount ist ein Open-Source-System für die doppelte Buchführung, das Plain-Text-Dateien als Ledger verwendet. Es betont Einfachheit, Transparenz und Flexibilität bei der Verfolgung von Finanzen. Fava ist ein leistungsstarkes webbasiertes Frontend für Beancount, das eine interaktive Oberfläche zum Anzeigen von Berichten, Visualisierungen und zur Verwaltung Ihres Ledgers bietet. In diesem Bericht untersuchen wir die Kernfunktionen von Beancount und Fava und wie Sie mit diesen Tools Finanzanalysen in Echtzeit oder nahezu in Echtzeit erzielen können. Wir behandeln Konfigurationstipps für die Automatisierung und Datenaktualisierung, die Visualisierungsfunktionen von Fava (für sofortige Cashflow-Ansichten und das Erkennen von Trends), die Integration mit externen Dashboards (Grafana, Metabase usw.), Beispiele für benutzerdefinierte Dashboards und Plugins, Anwendungsfälle in der persönlichen und kleinen Unternehmensfinanzierung, Vergleiche mit anderen Plattformen (Power BI, QuickBooks) sowie die Vor- und Nachteile der Verwendung von Fava + Beancount für datengesteuerte Erkenntnisse.

analytics

Kernfunktionen von Beancount und Fava

Beancount (Plain-Text-Buchhaltungs-Engine)

  • Double-Entry-Ledger in Plain Text: Beancount speichert Transaktionen in einer einzigen .beancount-Textdatei (oder mehreren zusammengefassten Dateien). Jede Transaktion muss über alle Konten ausgeglichen sein (Gesamt-Soll = Gesamt-Haben), wodurch die Integrität der Buchhaltung gewährleistet wird. Das Plain-Text-Format bedeutet, dass Ihre Daten für Menschen lesbar, versionierbar und nicht an einen Anbieter gebunden sind.
  • Flexible, hierarchische Konten: Sie können beliebige Konten (z. B. Assets:Bank:Checking, Expenses:Food:Coffee) in einer Hierarchie definieren. Beancount ist nicht festgelegt, wie Ihr Kontenrahmen aussehen soll, daher funktioniert es für persönliche Finanzen, kleine Unternehmensbücher, Investitionen usw. – es ist "flexibel: funktioniert für persönliche Finanzen, kleine Unternehmensbuchhaltung, Krypto, Aktieninvestitionen und mehr."
  • Mehrere Währungen und Rohstoffe: Beancount bietet erstklassige Unterstützung für mehrere Währungen und Rohstoffe (z. B. Aktien, Krypto). Sie können Transaktionen in verschiedenen Währungen erfassen, Wechselkurse (Preisdirektiven) definieren und Kostenbasen verfolgen. Es kann Berichte "zu Anschaffungskosten" oder "zum Marktwert" erstellen, wenn Preisdaten bereitgestellt werden. Dies macht es für Portfolios und internationale Finanzen geeignet.
  • Automatisierte Prüfungen und Salden: Das System unterstützt Saldo-Assertions (Sie können deklarieren, wie der Saldo eines Kontos zu einem Datum sein sollte, und Beancount gibt einen Fehler aus, wenn dies nicht übereinstimmt) und Saldo-Transaktionen für den Abschluss von Büchern. Es unterstützt auch Eigenkapital-Eröffnungs- / Abschlussposten und einbehaltene Gewinnberechnungen für Periodenabschlüsse. Diese helfen sicherzustellen, dass Ihre Bücher konsistent bleiben, und Fehler frühzeitig zu erkennen.
  • Leistungsstarke Abfrage- und Berichts-Engine: Beancount verfügt über eine Abfragesprache BQL (Beancount Query Language) und Befehlszeilentools wie bean-balance, bean-register und bean-query zum Generieren von Berichten. Sie können das Ledger für benutzerdefinierte Berichte abfragen (z. B. Liste der Ausgaben nach Zahlungsempfänger, Cashflow für einen Zeitraum) – im Wesentlichen behandeln Sie das Ledger wie eine Datenbank. Es ist auch bei Tausenden von Transaktionen schnell und kann in CSV oder sogar direkt in Excel / LibreOffice ausgegeben werden (mit optionalen Add-Ons).
  • Erweiterbarkeit über Plugins: Beancount ist in Python geschrieben und ermöglicht benutzerdefinierte Plugins, um seine Funktionalität zu erweitern. Plugins können zusätzliche Regeln oder Berechnungen erzwingen, wenn die Datei verarbeitet wird. (Es gibt beispielsweise Plugins zur Handhabung von Steuerlosen oder um sicherzustellen, dass kein Kauf ohne Kosten erfolgt.) Das Plugin-System und die Python-API ermöglichen es fortgeschrittenen Benutzern, benutzerdefinierte Verhaltensweisen zu skripten oder Beancount in andere Systeme zu integrieren.
  • Importeure für externe Daten: Ein wichtiges praktisches Merkmal ist das ingest-Framework von Beancount zum Importieren von Daten (z. B. von Kontoauszügen). Sie können Importer-Plugins schreiben oder verwenden, die CSV-, OFX-, PDF-Auszüge usw. analysieren und in Beancount-Einträge konvertieren. Dies ist für die Automatisierung unerlässlich (mehr dazu später).
  • Auditierbar und Version-Control-freundlich: Da es sich um Plain Text handelt, können Sie Ihr Ledger in Git oder einer anderen Versionskontrolle aufbewahren. Jede Änderung ist transparent und Sie haben eine vollständige Historie der Änderungen. Dies macht Audits oder das Überprüfen von Änderungen unkompliziert (viele Benutzer übertragen die Änderungen jedes Tages in ein Git-Repository und stellen so ein manipulationssicheres Protokoll aller Finanzbuchungen bereit). Dieses Maß an Transparenz ist ein wichtiges Unterscheidungsmerkmal von geschlossener Buchhaltungssoftware - "kein SaaS-Lock-In - nur saubere, transparente Buchhaltung mit leistungsstarken Berichten."

Fava (Webinterface für Beancount)

  • Interaktive Web-UI: Fava bietet einen lokalen Webserver, der Ihr Beancount-Ledger in eine umfangreiche Benutzeroberfläche rendert. Es zeigt Kernberichte (Gewinn- und Verlustrechnung, Bilanz usw.), Kontenregister und Journale im Browser mit interaktiven Steuerelementen an. Die Benutzeroberfläche ist dynamisch und benutzerfreundlich im Vergleich zur Befehlszeile. Sie starten es mit einem einfachen fava yourfile.beancount und erhalten eine Web-App für Ihre Bücher.
  • Integrierte Grafiken und Diagramme: Fava generiert Grafiken, um Ihre Daten zu visualisieren. Es enthält beispielsweise ein Nettovermögen -Liniendiagramm im Zeitverlauf, Balkendiagramme für Einnahmen im Vergleich zu Ausgaben pro Monat und Kreis- / Treemap-Diagramme für Ausgabenaufschlüsselungen. Diese Visualisierungen werden mit Ihren Daten aktualisiert und unterstützen verschiedene Ansichten (z. B. "zu Anschaffungskosten" im Vergleich zu "Marktwert" für Investitionen). Wir werden diese Visualisierungsfunktionen später im Detail untersuchen.
  • Filtern und Suchen: Am oberen Rand der Fava-Seiten können Sie Ihre Daten in Echtzeit mit einer Filterleiste aufschlüsseln. Sie können nach Zeit (z. B. Jahr, Quartal, Monat), nach Konto-Regex, nach Zahlungsempfänger, nach Beschreibung oder nach Tags / Links filtern. Dies erleichtert die Echtzeit-Dateninspektion – filtern Sie beispielsweise schnell nach "Tag=Travel" und "Year=2025", um alle Reisekosten im Jahr 2025 mit Summen anzuzeigen. Die Schnittstelle unterstützt komplexe Abfragen über diese Filterleiste oder über die Abfrageseite (auf der Sie BQL-Abfragen direkt ausführen können).
  • Unterstützung mehrerer Dateien und Konsolidierung: Fava kann mehrere Beancount-Dateien gleichzeitig laden (nützlich, wenn Sie Ledger trennen) und zwischen ihnen wechseln. Es kann sie bei Bedarf auch konsolidieren (z. B. persönliche und geschäftliche Ledger zusammen angezeigt).
  • Dateneingabe und -bearbeitung: Fava ist einzigartig und nicht schreibgeschützt - es verfügt über einen Editor und ein Transaktionseingabeformular. Sie können neue Transaktionen über ein Webformular hinzufügen (der Eintrag wird in Ihre .beancount-Datei eingefügt). Sie können die Quelldatei auch über Fava in einem externen Editor öffnen. Fava unterstützt sogar "Gmail-ähnliche" Tastaturkürzel (drücken Sie ? in der Benutzeroberfläche, um sie anzuzeigen) für Power-User. Dies verwandelt Fava in ein leichtes Buchhaltungssystem, in dem Sie Daten über dieselbe Benutzeroberfläche eingeben und anzeigen können.
  • Berichte und Konto-Drilldown: Fava bietet Standard-Buchhaltungsberichte: Gewinn- und Verlustrechnung, Bilanz, Saldenliste und eine Bestandsliste für Investitionen. Die Bilanz und die Gewinn- und Verlustrechnung sind interaktiv - Sie können auf ein Konto klicken, um die Details aufzurufen, oder zwischen der Anzeige zu Anschaffungskosten und dem Marktwert für Vermögenswerte umschalten. Fava zeigt auch "nicht realisierte Gewinne" für Investitionen an, wenn Sie Preisdaten haben. Es generiert eine Journal -Ansicht aller Einträge und ermöglicht das Filtern dieses Journals nach verschiedenen Kriterien (ideal, um bestimmte Transaktionen zu finden).
  • Dokumentenverwaltung: Wenn Sie Belege oder Kontoauszüge anhängen, hilft Fava bei der Organisation. Beancount hat eine Vorstellung von einem Dokumentenordner, und mit Fava können Sie Dateien per Drag & Drop auf Konten oder Transaktionen ziehen - es speichert sie und fügt einen Dokumenteneintrag in Ihrem Ledger hinzu. Dies ist nützlich, um unterstützende Dokumente mit Ihren Ledger-Daten verknüpft zu halten.
  • Anpassung über Erweiterungen: Fava kann mit Plugins (geschrieben in Python) erweitert werden, um neue Berichte oder Funktionen hinzuzufügen. Einige Erweiterungen sind gebündelt (z. B. ein Portfolio-Liste-Bericht für Investitionen). Wir werden benutzerdefinierte Erweiterungen später besprechen, aber im Wesentlichen ermöglicht das Design von Fava das Einfügen neuer Seiten und sogar benutzerdefiniertes JavaScript über die Erweiterungs-API. Dies bedeutet, dass ein fortgeschrittener Benutzer diese hinzufügen kann, wenn eine bestimmte Analyse oder ein Dashboard nicht integriert ist.
  • Performance: Fava ist effizient - es lädt die Daten im Speicher neu und stellt Seiten schnell bereit. Das zugrunde liegende Beancount-Parsing ist recht schnell (C++ im neuesten Version optimiert), sodass selbst große Ledger in ein oder zwei Sekunden geladen werden. In der Praxis kann Fava persönliche Ledger vieler Jahre verarbeiten, obwohl extrem große Dateien (Zehntausende von Transaktionen) von einigen Optimierungen profitieren können (z. B. Archivieren alter Einträge).
  • Webzugriff und Mobilität: Indem Sie Fava auf einem Server oder sogar auf Ihrem Laptop ausführen, können Sie von jedem Browser aus auf Ihre Finanzen zugreifen. Einige Benutzer hosten Fava auf einem privaten Server oder Raspberry Pi, damit sie ihre Finanzen unterwegs überprüfen können (möglicherweise mit einem Kennwort oder VPN gesichert, da Fava keine integrierte Authentifizierung hat). Dies bietet Ihnen im Wesentlichen eine selbst gehostete "Web-App" für Ihre Finanzen, ohne Ihre Daten an Dritte weiterzugeben.

Zusammenfassend bietet Beancount eine robuste Grundlage für eine transparente, textbasierte Buchhaltung mit strengen Regeln für die doppelte Buchführung und Unterstützung für mehrere Währungen. Fava baut darauf auf, indem es eine zugängliche Oberfläche mit sofortigen Einblicken (Berichte, Diagramme) und der Möglichkeit bietet, mit Ihren Daten zu interagieren. Zusammen bilden sie ein äußerst flexibles Buchhaltungs- und Analysesystem, das Sie durchgängig kontrollieren.

Echtzeit- (oder nahezu Echtzeit-) Analyse mit Beancount und Fava

Das Erreichen von Echtzeit- oder nahezu Echtzeit-Analysen mit Beancount und Fava umfasst die Automatisierung des Datenflusses in Ihr Ledger und die Sicherstellung, dass die Tools aktuelle Informationen anzeigen. Standardmäßig ist Beancount ein Batchprozess (Sie fügen der Datei Einträge hinzu und zeigen dann Berichte an), und Fava erkennt Änderungen und erfordert eine Aktualisierung. Mit dem richtigen Setup können Sie die Aktualisierungen jedoch so optimieren, dass neue Transaktionen und Änderungen fast sofort angezeigt werden.

Dateiänderungserkennung: Fava überwacht die Ledger-Datei auf Änderungen. Wenn Sie die .beancount-Datei (oder Includedateien) in einem Editor bearbeiten, zeigt Fava ein Banner "Änderungen erkannt - zum Neuladen klicken" an. Durch Klicken (oder Drücken von Reload) werden die Daten neu geladen und die Ansicht aktualisiert. In der Praxis ist dieses Neuladen sehr schnell (normalerweise unter einer Sekunde für typische Ledger). Dies bedeutet, dass Fava als Live-Dashboard dienen kann, wenn Ihre Ledger-Datei häufig aktualisiert wird. (Im Debug-Modus kann Fava die Datei bei Änderungen sogar automatisch neu laden, standardmäßig wartet es jedoch auf die Benutzerbestätigung, um Ihre Ansicht nicht zu unterbrechen.)

Kontinuierliche Import- / Aktualisierungspipeline: Um Echtzeitdaten zu erhalten, müssen Sie das Hinzufügen von Transaktionen zur Beancount-Datei automatisieren. Es gibt einige gängige Strategien:

  • Geplante Importjobs (Cron): Viele Benutzer richten einen Cronjob (oder eine geplante Aufgabe) ein, um regelmäßig (z. B. jede Nacht oder jede Stunde) neue Transaktionen von Finanzinstituten abzurufen und an das Ledger anzuhängen. Sie können beispielsweise die Importer-Plugins von Beancount verwenden, um die neuesten Banktransaktionen über die API oder den OFX-Download abzurufen. Ein Beancount-Benutzer hat eine Automatisierungspipeline erstellt, sodass sich seine Bücher selbst aktualisieren: "Zu sehen, wie sich mein Buchhaltungsbuch selbst aktualisiert, ohne dass ich es in einem offenen Format berühre, bereitet mir pure Freude." Dies wurde erreicht, indem eine Verbindung zu Bank-APIs hergestellt und regelmäßige Aktualisierungen geplant wurden. Tools wie bean-fetch (für OFX) oder benutzerdefinierte Python-Skripte, die Bank-APIs verwenden (z. B. Plaid), können nach einem Zeitplan ausgeführt und neue Einträge in das Ledger geschrieben werden. Nach jedem geplanten Import können Sie Fava einfach aktualisieren, wenn Sie Fava ausführen, um die neuen Daten anzuzeigen.

  • Datei-Watcher und -Trigger: Anstelle von zeitbasierten Zeitplänen können Sie Datei-Watcher verwenden, um auf Ereignisse zu reagieren. Wenn Ihre Bank Ihnen beispielsweise einen täglichen Kontoauszug per E-Mail senden kann oder Sie eine CSV-Datei in einem Ordner ablegen, kann ein Skript diese Datei erkennen (mit inotify unter Linux oder ähnlichem) und sofort die Importroutine ausführen und Fava signalisieren, die Datei neu zu laden. Obwohl Fava das Pushen eines Live-Reloads in den Browser noch nicht unterstützt, würden Sie zumindest die Daten aktualisieren lassen, sodass sie beim nächsten Überprüfen der Seite oder beim Klicken auf Reload aktuell sind. Einige Community-Projekte gehen noch weiter: Für Ledger (einen Cousin von Beancount) hat ein Benutzer einen kleinen Server erstellt, der Ledger-Daten in Echtzeit für Grafana bereitstellt und zeigt, dass ein ähnlicher Ansatz mit Beancount verfolgt werden kann – im Wesentlichen einen Daemon erstellen, der Ihre Dashboards kontinuierlich mit Daten versorgt.

  • Direkte API-Integration: Anstatt über Dateien zu gehen, verbinden sich fortgeschrittene Benutzer möglicherweise direkt mit Bank-APIs (wie Plaid oder regionalen Open Banking-APIs), um Transaktionen häufig abzurufen. Eine motivierte Person kann "Live"-Importe in einer Schleife skripten (mit entsprechender Ratenbegrenzung) - effektiv alle paar Minuten die Bank nach neuen Daten abfragen. Es hindert Sie nichts daran, sich "mit der Plaid-API anzumelden und die gleiche [Automatisierung] lokal durchzuführen." Jede neue Transaktion kann beim Eintreffen an die Beancount-Datei angehängt werden. Mit diesem Ansatz wird Fava wirklich zu einem Echtzeit-Dashboard für Ihre Konten, das mit dem aktuellen Feed in kommerziellen Apps mithalten kann.

Datenaktualisierung in Fava: Sobald Ihre Daten aktualisiert werden, ist es einfach, sie in Fava anzuzeigen: Eine Browseraktualisierung (F5) oder ein Klick auf das Banner zum Neuladen lädt den neuesten Ledger-Status. Wenn Sie es vorziehen, nicht einmal zu klicken, ermöglicht das Ausführen von Fava mit --debug ein automatisches Neuladen für die Erweiterungsentwicklung, das einige verwendet haben, um sofortige Seitenneuladungen bei Änderungen zu erzwingen. Alternativ können Sie beim Erstellen eines benutzerdefinierten Frontends eine kleine API abfragen lassen, die den neuesten Saldo oder so aus dem Ledger nach einem Zeitplan zurückgibt.

Sofortige Berechnungen: Das schnelle Parsing von Beancount bedeutet, dass selbst wenn Sie Ihre Ledger-Datei alle paar Minuten aktualisieren, die Bearbeitungszeit vom Datenabruf → Dateiaktualisierung → Fava-Neuladen schnell ist. Ein Benutzer stellt beispielsweise fest, dass das Neuladen von Fava nach dem Bearbeiten der Datei "kaum spürbar ist … definitiv weniger als eine Sekunde" für Ledger mit angemessener Größe dauert. Daher können Sie ein Fava-Fenster geöffnet lassen und regelmäßig auf Aktualisieren klicken, um ein Live-Dashboard zu simulieren. (Für ein wirklich Live-Erlebnis könnte man ein kleines Skript erstellen, um den Browser automatisch zu aktualisieren, oder die Funktion des Browsers zum Aktualisieren alle N Sekunden verwenden.)

Abgleich und Warnungen: Um Echtzeitdaten zu vertrauen, sollten Sie auch häufig Salden abgleichen. Beancount erleichtert dies mit Saldo-Assertions und einem "aktuellen" Indikator. Tatsächlich bietet Fava farbige Indikatoren neben Konten, wenn Sie diese mit bestimmten Metadaten kennzeichnen (z. B. können Sie ein Konto mit fava-uptodate Metadaten markieren, und Fava färbt es rot / gelb / grün, je nachdem, ob der letzte Eintrag eine aktuelle Saldoüberprüfung ist). Dies kann verwendet werden, um schnell zu sehen, ob der Kontostand eines Kontos im Ledger mit dem neuesten Kontoauszug der Bank übereinstimmt. In einem nahezu Echtzeit-Setup können Sie tägliche Saldoüberprüfungen automatisieren (sodass das Ledger jeden Morgen den gestrigen Schlusssaldo der Bank für jedes Konto enthält). Der Indikator von Fava würde Ihnen dann mitteilen, ob Ihr Auto-Import etwas verpasst hat oder ob es eine Diskrepanz gibt, und das Vertrauen geben, dass die angezeigten "Live"-Daten korrekt sind.

Automatisierungsbeispiel: Angenommen, Sie möchten tägliche Cashflow-Updates. Sie könnten einen Cronjob so einrichten, dass er jede Nacht um 3 Uhr morgens ausgeführt wird: Er führt ein Python-Skript aus, das die Transaktionen des letzten Tages über die API Ihrer Bank abruft, sie in import_today.beancount schreibt und diese Datei dann an Ihr Haupt-Ledger anhängt. Es schreibt auch eine Saldo-Assertion für den Tagesabschluss. Wenn Sie aufwachen, öffnen Sie Fava – es werden alle Transaktionen bis gestern angezeigt, und Sie sehen die aktuellen Einnahmen / Ausgaben des Monats aktualisiert. Wenn Sie tagsüber Ausgaben tätigen, können Sie diese manuell hinzufügen (z. B. über das neue Transaktionsformular von Fava auf Ihrem Telefon) oder auf den nächtlichen Import warten. Dieser hybride Ansatz (meist automatisiert, mit der Möglichkeit, Ad-hoc-Einträge manuell hinzuzufügen) bietet ein nahezu Echtzeitbild. Ein anderer Ansatz besteht darin, die Journal-Seite von Fava geöffnet zu lassen und sie als Register zu verwenden: Wenn Sie ausgeben, erfassen Sie schnell die Transaktion (wie beim Eintragen in ein Scheckbuch) - dann sind Sie der Echtzeit-Feed. Dies ist manueller, aber einige Benutzer genießen das Bewusstsein, das es mit sich bringt. Für wirklich Streaming-Updates ohne manuelle Schritte müssen Sie in Skripte investieren und möglicherweise APIs von Drittanbietern verwenden, wie bereits erwähnt.

Zusammenfassend lässt sich sagen, dass Sie durch die Kombination der Importautomatisierung von Beancount mit der schnellen Aktualisierung von Fava nahezu Echtzeit-Finanzdaten erhalten können. Es ist möglicherweise nicht so einfach wie ein Knopfdruck, um das gleiche Maß an Live-Feed wie ein Dienst wie QuickBooks zu erzielen (der automatisch Bank-Feeds abruft), aber es ist möglich - und vor allem behalten Sie die volle Kontrolle und Transparenz des Prozesses. Wie ein Befürworter der Plain-Text-Buchhaltung feststellte, kann ein wenig Aufwand im Voraus zu einem automatisierten System führen, das "viel besser als kommerzielle Lösungen und weitaus flexibler und erweiterbarer". Im nächsten Abschnitt werden wir sehen, wie Sie mit den Visualisierungsfunktionen von Fava diese aktuellen Daten sofort interpretieren und Rohdaten in Erkenntnisse umwandeln können.

(GitHub - beancount/fava: Fava - Webinterface für Beancount) Der Gewinn- und Verlustrechnungsbericht von Fava (in der Web-UI) unterstützt umfangreiche Visualisierungen wie Treemaps (abgebildet) und Sunburst-Diagramme, um schnell Einblicke in die Zusammensetzung von Einnahmen und Ausgaben zu erhalten. In dieser Treemap stellt jedes Rechteck eine Ausgabenkategorie dar, die nach ihrem Betrag dimensioniert ist - Sie können sofort sehen, dass Miete (großer grüner Block) die Ausgaben dominiert. Die obere Filterleiste und die Steuerelemente (oben rechts) ermöglichen das Ändern der Währung, des Diagrammtyps und des Zeitraums (z. B. Anzeigen von monatlichen Daten). Fava bietet auch Liniendiagramme (z. B. Nettovermögen im Zeitverlauf) und Balkendiagramme (z. B. Einnahmen im Vergleich zu Ausgaben pro Monat), um Trends in Ihren Finanzdaten zu erkennen.

Eine der größten Stärken von Fava ist die sofortige Umwandlung der Ledger-Daten in visuelle, interaktive Berichte. Sobald das Ledger geladen ist, generiert Fava Diagramme, die es einfach machen, Cashflows und Trends auf einen Blick zu verstehen:

  • Einnahmen und Ausgaben Treemap/Sunburst: Auf der Seite Gewinn- und Verlustrechnung kann Fava Ihre Einnahmen und Ausgaben entweder als Treemap oder als Sunburst-Diagramm anzeigen. Diese eignen sich hervorragend für die "auf einen Blick" -Cashflow-Visualisierung. Wenn Ihre monatlichen Ausgaben beispielsweise als Treemap angezeigt werden, entspricht die Fläche jedes Rechtecks der Größe jeder Ausgabenkategorie. Große Blöcke zeigen sofort, wohin das meiste Geld geflossen ist (z. B. Miete oder Hypothek, Steuern usw.), während kleinere Blöcke geringfügige Ausgaben zeigen. Dies ist äußerst nützlich, um Trends bei den Ausgaben zu erkennen – wenn der Block "Essen gehen" jeden Monat gewachsen ist, werden Sie dies visuell bemerken. Sie können zu einem Sunburst-Diagramm wechseln, um hierarchische Aufschlüsselungen anzuzeigen (z. B. der äußere Ring kann Unterkategorien wie Lebensmittel im Vergleich zu Restaurants innerhalb der Kategorie Lebensmittel anzeigen). Diese Diagramme werden für jeden Zeitraum aktualisiert, den Sie gefiltert haben (ein Monat, Jahresbeginn usw.), und geben Ihnen sofortige Cashflow-Visualisierung für diesen Zeitraum. Ein Benutzer im Plain-Text-Buchhaltungsforum bemerkte: "Ich nutze die Einnahmen- und Ausgaben-Treemaps sehr häufig. Sie vermitteln ein großartiges visuelles Gefühl für unsere fiskalischen Bewegungen." – diese Art von sofortigem Verständnis ist genau das, was die Diagramme von Fava anstreben.

  • Nettovermögen und Saldo im Zeitverlauf: Fava bietet ein Liniendiagramm für das Nettovermögen im Zeitverlauf (auf der Seite "Bilanz" oder "Statistiken"). Dieses Diagramm stellt die Summe Ihrer Vermögenswerte abzüglich der Verbindlichkeiten zu jedem Zeitpunkt dar (nach Tag, Woche oder Monat). Es ist von unschätzbarem Wert, um Trends zu erkennen – Sie können die Entwicklung Ihrer Finanzen sehen (z. B. stetig aufwärts oder Einbrüche zu bestimmten Zeiten). Wenn Sie Investitionen haben, können Sie zwischen der Anzeige des Wertes zu Anschaffungskosten und dem Marktwert umschalten (wenn Preisdaten erfasst werden) – Sie können beispielsweise sehen, dass Ihr Nettovermögen zum Marktwert mit den Aktienkursen schwankt, während es zu Anschaffungskosten glatter ist. Fava kann auch Kontostände im Zeitverlauf anzeigen. Wenn Sie auf ein Konto klicken (z. B. Assets: Bank: Checking), zeigt die Kontoseite ein Diagramm des Kontostandsverlaufs an. Sie können sofort überprüfen, wie sich Ihr Cashkonto bewegt – was effektiv ein Cashflow-Diagramm ist (die Steigung der Saldozeile gibt den Netto-Cashflow an). Wenn es nach unten tendiert, wissen Sie, dass Sie in diesem Zeitraum mehr ausgeben als verdienen. Durch die Untersuchung dieser Trends können Sie Muster erkennen wie "jeden Dezember sinken meine Ersparnisse (Urlaubskosten)" oder "meine Investitionen sind in diesem Quartal stark gewachsen".

  • Balkendiagramme für periodische Vergleiche: In der Gewinn- und Verlustrechnung verfügt Fava über Registerkarten für "Monatlicher Gewinn", "Monatliche Einnahmen", "Monatliche Ausgaben" usw. Wenn Sie diese auswählen, werden Balkendiagramme nach Monat angezeigt. Beispielsweise zeigt Monatlicher Nettogewinn den Überschuss/das Defizit jedes Monats als Balken an, wodurch es einfach ist, die Leistung über Monate hinweg zu vergleichen. Sie können schnell Ausreißer identifizieren (z. B. ein großer negativer Balken im April bedeutet, dass dieser Monat einen ungewöhnlichen Verlust/eine ungewöhnliche Ausgabe hatte). In ähnlicher Weise stapelt oder gruppiert das Balkendiagramm "Monatliche Ausgaben" die Ausgaben nach Kategorie pro Monat, sodass Sie sehen können, welche Kategorien schwanken. Dies ist ideal, um Trends im Zeitverlauf zu erkennen – z. B. könnten Sie feststellen, dass Ihre "Reise"-Ausgaben jeden Sommer steigen oder die "Nebenkosten"-Rechnungen im Winter höher sind. Fava bietet Ihnen im Wesentlichen einige der Funktionen einer Budgetierungs-App (Tracking von Trends), jedoch mit voller Anpassbarkeit (da Sie die Kategorien und deren Zusammenführung definieren).

  • Echtzeitfilterung und Dateninspektion: Die Visualisierungen in Fava sind nicht statisch; sie arbeiten zusammen mit der Filterung von Fava. Angenommen, Sie möchten ein bestimmtes Szenario untersuchen: "Wie sehen meine vierteljährlichen Cashflows nur für meine Geschäftskonten aus?" Sie können den Zeitfilter auf Q1 2025 setzen und Konten auf Ihre Geschäftshierarchie filtern – Fava aktualisiert die Diagramme sofort, um das Nettoeinkommen, die Treemap der Ausgaben usw. anzuzeigen, jedoch nur für diese Teilmenge. Dieses interaktive Aufteilen bedeutet, dass Sie sehr schnell Ad-hoc-Analysen durchführen können, ohne Abfragen zu schreiben. Die Journal-Ansicht unterstützt auch Live-Filterung: Sie können nach Zahlungsempfänger oder Beschreibungsteilstring suchen und sofort eine gefilterte Liste von Transaktionen anzeigen. Wenn Sie Echtzeitdaten anzeigen (z. B. Sie haben gerade die Transaktionen der letzten Woche importiert), können Sie nach einem Tag wie #uncategorized filtern, um neue Transaktionen anzuzeigen, die möglicherweise kategorisiert werden müssen, oder nach @pending (wenn Sie ausstehende Einträge markieren), um zu sehen, was noch nicht abgerechnet ist. Diese Echtzeit-Inspektionsfunktion trägt auch zur Sicherstellung der Datenqualität bei, da Sie Anomalien direkt isolieren und beheben können.

  • Cashflow-Rechnung (indirekt): Obwohl Beancount/Fava keine formale Cashflow-Rechnung (Aufschlüsselung nach Betrieb/Investition/Finanzierung) standardmäßig erstellt, können Sie sie mit benutzerdefinierten Abfragen oder durch Strukturierung von Konten nachahmen. Beispielsweise könnten Sie bestimmte Transaktionen mit Tags versehen oder bestimmte Konten für Investitionen und Finanzierungen verwenden und dann Summen abfragen. Mit der Abfrageschnittstelle von Fava können Sie eine BQL-Abfrage wie SELECT sum(amount) WHERE account ~ "Assets:Bank" AND year = 2025 ausführen, um den Cashflow für das Jahr usw. abzurufen. Die meisten persönlichen Benutzer finden jedoch die Kombination aus Saldo-Trends und Einnahmen/Ausgaben-Diagrammen ausreichend, um Cashflows zu verstehen.

  • Bestände und Portfolio-Visualisierung: Auf der Bestände-Seite listet Fava Ihre aktuellen Bestände an Rohstoffen (z. B. Aktien, Anleihen, Krypto) mit Mengen, Kosten, Marktwert und nicht realisierten Gewinnen auf. Obwohl dies eine Tabelle ist, kein Diagramm, ist sie sehr nützlich für die Echtzeitinspektion des Status Ihres Portfolios. Einige Erweiterungen (wie fava-investor, die später besprochen wird) fügen weitere Visualisierungen für Portfolios hinzu, z. B. Allokationskreisdiagramme oder Leistungsdiagramme. Auch ohne Erweiterungen können Sie z. B. sehen, wie sich Ihr Aktienportfolio als Ergebnis der letzten Preise ändert – wenn Sie Preisangebote regelmäßig aktualisieren (was täglich automatisiert werden könnte), spiegeln die Diagramme von Fava den aktuellen Marktwert Ihrer Investitionen wider.

In der Praxis werden die visuellen Berichte von Fava so schnell aktualisiert wie die zugrunde liegenden Daten. In dem Moment, in dem eine neue Transaktion hinzugefügt und die Seite neu geladen wird, werden die Diagramme neu berechnet. Es ist keine langwierige Nachbearbeitung erforderlich. Dies bedeutet, dass Sie, wenn Sie eine semi-automatisierte Pipeline haben, die den ganzen Tag über Daten einspeist, Fava geöffnet lassen und regelmäßig auf Aktualisieren klicken können, um aktualisierte Diagramme zu erhalten – effektiv Echtzeit-Finanzüberwachung.

Stellen Sie sich beispielsweise vor, Sie betreiben ein kleines Unternehmen und möchten die verfügbaren Mittel und die täglichen Ausgaben überwachen. Sie könnten Fava für ein benutzerdefiniertes Dashboard geöffnet haben (vielleicht mit einer Erweiterung oder dem Abfragebildschirm), das "Cash-Kontostand heute" und "Ausgaben - Heute im Vergleich zu Gestern" anzeigt. Jedes Mal, wenn Sie nach dem Eintreffen neuer Daten aktualisieren, würden Sie sehen, wie diese Zahlen aktualisiert werden. Dies ähnelt dem, was teure Echtzeit-Dashboards bieten, jedoch mit Open-Source-Tools. Der Unterschied besteht darin, dass Sie möglicherweise manuell aktualisieren oder Aktualisierungen planen müssen, während diese Tools Aktualisierungen automatisch pushen. Funktional ist der Einblick, den Sie erhalten, jedoch derselbe, mit dem zusätzlichen Vorteil, dass Sie einen Drilldown zu einer beliebigen Zahl auf Fava durchführen können (klicken Sie darauf, um die zugrunde liegenden Transaktionen anzuzeigen) – etwas, das vielen BI-Dashboards fehlt.

Zusammenfassend lässt sich sagen, dass Fava Ihre Buchhaltungsdaten in sofortige visuelle Erkenntnisse umwandelt: Cashflow-Aufschlüsselungen, Trendlinien, Vergleiche im Zeitverlauf und interaktive Filterung helfen Ihnen, die Geschichte hinter den Zahlen zu sehen. Egal, ob Sie die Ausgaben der letzten Woche auf Anomalien untersuchen oder mehrjährige Trends im Nettovermögen überprüfen, die Diagramme und Berichte von Fava bieten Klarheit in Echtzeit (sobald Ihre Daten vorhanden sind). Als Nächstes werden wir sehen, wie Sie diese Funktionen erweitern oder in externe Tools integrieren können, wenn Sie noch stärker angepasste Analysen benötigen.

Integration mit externen Dashboards und Visualisierungstools

Obwohl Fava eine umfangreiche Reihe integrierter Berichte und Diagramme bietet, möchten Sie möglicherweise die Daten von Beancount in andere Business Intelligence (BI) oder Dashboard-Tools wie Grafana, Metabase oder benutzerdefinierte Web-Frontends (z. B. eine React-App) integrieren. Die Motivation könnte darin bestehen, Finanzdaten mit anderen Datenquellen zu kombinieren, erweiterte Diagrammfunktionen zu nutzen oder Dashboards mit anderen in einem anderen Format zu teilen. Dank der Offenheit von Beancount gibt es mehrere Möglichkeiten, die Integration zu erreichen:

  • Datenbankintegration (Bean_SQL_ / Beanpost): Ein unkomplizierter Ansatz besteht darin, Ihr Beancount-Ledger in eine SQL-Datenbank zu exportieren oder zu synchronisieren. Sobald die Daten in SQL vorliegen, kann jedes BI-Tool die Daten abfragen. Tatsächlich haben Community-Mitglieder Tools dafür erstellt. Beanpost ist beispielsweise ein Experiment, das ein Beancount-Ledger in einer PostgreSQL-Datenbank spiegelt und einen Großteil der Beancount-Logik als SQL-Funktionen implementiert. Dies bietet "ein flexibles Backend, das in andere Tools wie Web-Apps oder Berichtssysteme integriert werden kann." Sie können Beanpost ausführen, um Ihr Text-Ledger kontinuierlich mit Postgres zu synchronisieren. Anschließend kann ein Tool wie Metabase oder Tableau eine Verbindung zu dieser Postgres-Datenbank herstellen, und Sie können beliebige Diagramme oder Dashboards erstellen (die live aktualisiert werden, wenn die DB aktualisiert wird). Ein Benutzer berichtete, dass er Postgres + PostGraphile verwendet, um automatisch eine GraphQL-API für die Ledger-Daten bereitzustellen, und dann ein benutzerdefiniertes React-Frontend darüber schreibt – im Wesentlichen behandelt er das Ledger als Webdienst. Dieser Ansatz adressiert Fälle, in denen die Oberfläche von Fava möglicherweise nicht ausreicht (z. B. Mehrbenutzerzugriff oder mobilfreundlichere UIs). Es ist ingenieurtechnisch aufwendiger, zeigt aber das Potenzial: Sie können Beancount relativ einfach in moderne Web-Stacks integrieren. Eine leichtere Variante ist die Verwendung der integrierten SQLite-Unterstützung von Beancount – das Ausführen einer Abfrage wie bean-query -e ledger.beancount "SELECT ..." kann Ergebnisse ausgeben, oder die Verwendung der Python-API von Beancount, um Daten abzurufen und in eine SQLite-DB einzufügen. Einige Personen verwenden SQLite als Zwischenprodukt, um Tools wie Metabase anzuschließen (das SQLite-Dateien über eine Verbindung lesen kann).

  • Grafana (Zeitreihen-Dashboards): Grafana ist beliebt für die Überwachung und Zeitreihendaten. Finanzdaten im Zeitverlauf (Ausgaben, Salden) können als Zeitreihen behandelt werden. Es gab Community-Diskussionen über die Verbindung von Beancount mit Grafana. Eine Idee war ein Grafana Datenquellen-Plugin, das BQL-Abfragen für eine Beancount-Datei im laufenden Betrieb ausführen könnte. Dies würde es Grafana-Panels ermöglichen, beispielsweise "Saldo des Girokontos" als Messgerät oder "Ausgaben der letzten 30 Tage" als Diagramm direkt anzuzeigen, indem das Ledger abgefragt wird. Derzeit (2025) ist kein dediziertes Plugin veröffentlicht, aber Enthusiasten haben Ad