Salta al contingut principal

Analítica financera en temps real amb Fava i Beancount

Introducció

Beancount és un sistema de comptabilitat per partida doble de codi obert que utilitza fitxers de text pla com a llibre major. Posa l'accent en la senzillesa, la transparència i la flexibilitat en el seguiment de les finances. Fava és un potent front-end basat en web per a Beancount, que proporciona una interfície interactiva per visualitzar informes, gràfics i gestionar el llibre major. En aquest informe, explorem les capacitats bàsiques de Beancount i Fava, i com aconseguir analítica financera en temps real o gairebé real amb aquestes eines. Cobrim consells de configuració per a l'automatització i l'actualització de dades, les funcions de visualització de Fava (per a vistes instantànies del flux de caixa i detecció de tendències), la integració amb quadres de comandament externs (Grafana, Metabase, etc.), exemples de quadres de comandament personalitzats i connectors, casos d'ús en finances personals i de petites empreses, comparacions amb altres plataformes (Power BI, QuickBooks) i els avantatges i inconvenients d'utilitzar Fava + Beancount per obtenir informació basada en dades.

analytics

Capacitats bàsiques de Beancount i Fava

Beancount (Motor de comptabilitat en text pla)

  • Llibre major de partida doble en text pla: Beancount emmagatzema les transaccions en un únic fitxer de text .beancount (o en diversos fitxers inclosos entre si). Cada transacció ha d'estar quadrada (total dèbits = total crèdits) entre els comptes, garantint la integritat comptable. El format de text pla significa que les teves dades són llegibles per humans, controlables per versions i no estan lligades a cap proveïdor.
  • Comptes jeràrquics i flexibles: Pots definir qualsevol compte (p. ex., Actius:Banc:CompteCorrent, Despeses:Menjar:Cafè) en una jerarquia. Beancount no imposa una estructura específica per al teu pla de comptes, de manera que funciona per a finances personals, llibres de petites empreses, inversions, etc. – és “flexible: funciona per a finances personals, comptabilitat de petites empreses, cripto, inversions en accions i més.”
  • Múltiples monedes i actius (commodities): Beancount té suport de primer nivell per a múltiples monedes i actius (p. ex., accions, cripto). Pots registrar transaccions en diferents monedes, definir tipus de canvi (directives de preu) i fer el seguiment de les bases de cost. Pot generar informes “al cost” o “a valor de mercat” si es proporcionen dades de preus. Això el fa adequat per a carteres d'inversió i finances internacionals.
  • Verificacions i saldos automatitzats: El sistema admet assertions de balanç (pots declarar quin hauria de ser el saldo d'un compte en una data determinada, i Beancount donarà un error si no coincideix) i transaccions de balanç per al tancament de llibres. També admet assentaments d'obertura/tancament de patrimoni i el càlcul de resultats acumulats per als tancaments de període. Això ajuda a garantir que els llibres es mantinguin coherents i a detectar errors aviat.
  • Motor potent de consultes i informes: Beancount inclou un llenguatge de consultes BQL (Beancount Query Language) i eines de línia d'ordres com bean-balance, bean-register i bean-query per generar informes. Pots consultar el llibre major per obtenir informes personalitzats (p. ex., llista de despeses per beneficiari, flux de caixa per a un període), tractant el llibre major essencialment com una base de dades. És ràpid fins i tot amb milers de transaccions i pot exportar a CSV o fins i tot directament a Excel/LibreOffice (amb complements opcionals).
  • Extensibilitat mitjançant connectors (plugins): Beancount està escrit en Python i permet utilitzar connectors personalitzats per ampliar la seva funcionalitat. Els connectors poden imposar regles addicionals o càlculs quan es processa el fitxer. (Per exemple, hi ha connectors per gestionar lots fiscals o per assegurar-se que cap compra no li falti el cost.) El sistema de connectors i l'API de Python permeten als usuaris avançats programar comportaments personalitzats o integrar Beancount amb altres sistemes.
  • Importadors per a dades externes: Una característica pràctica clau és el marc de treball d'ingesta de Beancount per importar dades (p. ex., d'extractes bancaris). Pots escriure o utilitzar connectors d'importació que analitzin extractes en format CSV, OFX, PDF, etc., i els converteixin en entrades de Beancount. Això és essencial per a l'automatització (més sobre això més endavant).
  • Auditable i compatible amb el control de versions: Com que és text pla, pots mantenir el teu llibre major a Git o altres sistemes de control de versions. Cada canvi és transparent i tens un historial complet de les edicions. Això fa que les auditories o la revisió de canvis siguin senzilles (molts usuaris pugen els canvis de cada dia a un repositori Git, proporcionant un registre de totes les entrades financeres a prova de manipulacions). Aquest nivell de transparència és un gran diferenciador respecte al programari comptable tancat – “sense dependència de proveïdors SaaS — només una comptabilitat neta i transparent amb informes potents.”

Fava (Interfície web per a Beancount)

  • Interfície d'usuari web interactiva: Fava proporciona un servidor web local que renderitza el teu llibre major de Beancount en una interfície rica. Mostra informes bàsics (Compte de Pèrdues i Guanys, Balanç de Situació, etc.), registres de comptes i diaris al navegador amb controls interactius. La interfície és dinàmica i fàcil d'utilitzar en comparació amb la línia d'ordres. S'inicia amb un simple fava elteufitxer.beancount i obtens una aplicació web per als teus llibres.
  • Gràfics i diagrames integrats: Fava genera gràfics per ajudar a visualitzar les teves dades. Per exemple, inclou un gràfic de línies de Patrimoni Net al llarg del temps, gràfics de barres per a ingressos vs. despeses per mes i gràfics de sectors o de mapa d'arbre per al desglossament de despeses. Aquests elements visuals s'actualitzen amb les teves dades i admeten diferents vistes (p. ex., “al cost” vs. “valor de mercat” per a inversions). Explorarem aquestes capacitats de visualització en detall més endavant.
  • Filtratge i cerca: A la part superior de les pàgines de Fava, una barra de filtres et permet segmentar les dades en temps real. Pots filtrar per temps (p. ex., any, trimestre, mes), per expressió regular de compte, per beneficiari, per narració o per etiquetes/enllaços. Això facilita la inspecció de dades en temps real – per exemple, pots filtrar ràpidament per “Tag=Viatges” i “Any=2025” per veure totes les despeses de viatges el 2025, amb els totals. La interfície admet consultes complexes a través d'aquesta barra de filtres o mitjançant la pàgina de Consulta (on pots executar directament consultes BQL).
  • Suport per a múltiples fitxers i consolidació: Fava pot carregar diversos fitxers de Beancount alhora (útil si separes els llibres majors) i canviar entre ells. També els pot consolidar si és necessari (per exemple, visualitzar junts els llibres majors personals i empresarials).
  • Entrada i edició de dades: Fava no és només de lectura – té un editor i un formulari d'entrada de transaccions. Pots afegir noves transaccions mitjançant un formulari web (inserirà l'entrada al teu fitxer .beancount). També pots obrir el fitxer font en un editor extern des de Fava. Fava fins i tot admet dreceres de teclat “a l'estil de Gmail” (prem ? a la interfície per veure-les) per a usuaris avançats. Això converteix Fava en un sistema comptable lleuger on pots introduir i visualitzar dades des de la mateixa interfície.
  • Informes i desglossament de comptes: Fava proporciona informes comptables estàndard: Compte de Pèrdues i Guanys, Balanç de Situació, Balanç de Comprovació i una llista de posicions per a inversions. El Balanç de Situació i el Compte de Pèrdues i Guanys són interactius – pots fer clic en un compte per desglossar-ne els detalls, o alternar entre la visualització al cost vs. valor de mercat per als actius. Fava també mostra “guanys no realitzats” per a les inversions si tens dades de preus. Genera una vista de diari de totes les entrades i permet filtrar aquest diari per diversos criteris (ideal per trobar transaccions específiques).
  • Gestió de documents: Si adjuntes rebuts o extractes, Fava ajuda a organitzar-los. Beancount té el concepte de carpeta de documents, i Fava et permet arrossegar i deixar anar fitxers sobre comptes o transaccions – els emmagatzemarà i afegirà una entrada de document al teu llibre major. Això és útil per mantenir els documents justificatius enllaçats amb les dades del llibre major.
  • Personalització mitjançant extensions: Fava es pot ampliar amb connectors (escrits en Python) per afegir nous informes o funcions. Algunes extensions ja venen incloses (p. ex., un informe de llista de carteres per a inversions). Parlarem de les extensions personalitzades més endavant, però essencialment el disseny de Fava permet injectar noves pàgines, i fins i tot JavaScript personalitzat, a través de la seva API d'extensions. Això significa que si una determinada anàlisi o quadre de comandament no està integrat, un usuari avançat pot afegir-lo.
  • Rendiment: Fava és eficient – recarrega les dades en memòria i serveix les pàgines ràpidament. L'anàlisi de Beancount subjacent és força ràpida (optimitzada en C++ en l'última versió), de manera que fins i tot els llibres majors grans es carreguen en un o dos segons. A la pràctica, Fava pot gestionar llibres majors personals de molts anys, tot i que els fitxers extremadament grans (desenes de milers de transaccions) podrien beneficiar-se d'alguna optimització (p. ex., arxivar entrades antigues).
  • Accés web i mobilitat: En executar Fava en un servidor o fins i tot al teu portàtil, pots accedir a les teves finances des de qualsevol navegador. Alguns usuaris allotgen Fava en un servidor privat o en una Raspberry Pi per poder consultar les seves finances des de qualsevol lloc (possiblement protegint-lo darrere d'una contrasenya o VPN, ja que Fava no té autenticació integrada). Això et proporciona essencialment una “aplicació web” autoallotjada per a les teves finances, sense haver de donar les teves dades a tercers.

En resum, Beancount proporciona una base sòlida per a una comptabilitat transparent basada en text amb regles rigoroses de partida doble i suport multimoneda. Fava es basa en això oferint una interfície accessible amb informació immediata (informes, gràfics) i la capacitat d'interaccionar amb les teves dades. Junts, formen un sistema de comptabilitat i analítica altament flexible que controles de principi a fi.

Analítiques en temps real (o gairebé en temps real) amb Beancount i Fava

Aconseguir analítiques en temps real o gairebé en temps real amb Beancount i Fava implica automatitzar el flux de dades cap al vostre llibre major i assegurar-se que les eines mostrin informació actualitzada. Per defecte, Beancount és un procés per lots (afegiu assentaments al fitxer i després consulteu els informes), i Fava detectarà els canvis i requerirà una recàrrega. No obstant això, amb la configuració adequada, podeu agilitzar les actualitzacions perquè les noves transaccions i els canvis apareguin gairebé a l'instant.

Detecció de canvis en els fitxers: Fava monitoritza el fitxer del llibre major per detectar canvis. Si editeu el fitxer .beancount (o els fitxers inclosos) en un editor, Fava mostrarà un bàner de "Canvis detectats – feu clic per recarregar". En fer-hi clic (o prémer recarregar), es tornen a carregar les dades i s'actualitza la vista. A la pràctica, aquesta recàrrega és molt ràpida (normalment menys d'un segon per a llibres majors típics). Això significa que Fava pot servir com un tauler de control en viu si el vostre fitxer del llibre major s'actualitza amb freqüència. (En mode de depuració, Fava fins i tot pot autorecarregar-se en detectar canvis al fitxer, encara que per defecte espera la confirmació de l'usuari per evitar interrompre la vostra vista).

Pipeline d'importació/actualització contínua: Per obtenir dades en temps real, cal automatitzar l'addició de transaccions al fitxer de Beancount. Hi ha algunes estratègies comunes:

  • Tasques d'importació programades (Cron): Molts usuaris configuren una tasca cron (o tasca programada) per obtenir noves transaccions de les institucions financeres periòdicament (per exemple, cada nit o cada hora) i afegir-les al llibre major. Per exemple, podríeu utilitzar els connectors d'importació (importers) de Beancount per obtenir les últimes transaccions bancàries mitjançant API o descàrrega OFX. Un usuari de Beancount va crear un pipeline d'automatització de manera que els seus llibres s'actualitzessin sols: "veure com el meu llibre de comptabilitat s'actualitza sol sense que jo el toqui en un format obert em produeix una alegria pura". Això es va aconseguir connectant-se a les API bancàries i programant actualitzacions regulars. Eines com bean-fetch (per a OFX) o scripts de Python personalitzats que utilitzen API bancàries (com Plaid) poden executar-se segons un calendari i escriure nous assentaments al llibre major. Després de cada importació programada, si teniu Fava en execució, només cal que refresqueu Fava per veure les noves dades.

  • Vigilants de fitxers i activadors (Triggers): En lloc de programacions basades en el temps, podeu utilitzar vigilants de fitxers per reaccionar a esdeveniments. Per exemple, si el vostre banc us pot enviar per correu electrònic un extracte diari o si deixeu un fitxer CSV en una carpeta, un script podria detectar aquest fitxer (utilitzant inotify a Linux o similar) i executar immediatament la rutina d'importació, i després senyalitzar a Fava que recarregui. Tot i que Fava encara no permet enviar una recàrrega en viu al navegador, almenys tindreu les dades actualitzades perquè la propera vegada que consulteu la pàgina o feu clic a recarregar, estiguin al dia. Alguns projectes de la comunitat van més enllà: per a Ledger (un cosí de Beancount), un usuari va crear un petit servidor que exposa les dades de Ledger a Grafana en temps real, demostrant que es pot adoptar un enfocament similar amb Beancount – bàsicament, construir un dimoni (daemon) que enviï dades als vostres taulers de control de manera contínua.

  • Integració directa amb API: En lloc d'utilitzar fitxers, els usuaris avançats poden connectar-se directament a les API bancàries (com Plaid o les API regionals d'Open Banking) per extreure transaccions amb freqüència. Una persona motivada pot programar scripts d'importacions "en viu" en un bucle (amb la limitació de velocitat adequada) – consultant efectivament el banc per obtenir noves dades cada pocs minuts. No hi ha res que us impedeixi "registrar-vos a l'API de Plaid i fer el mateix [automatització] localment". Cada nova transacció es pot afegir al fitxer de Beancount a mesura que arriba. Amb aquest enfocament, Fava es converteix realment en un tauler de control en temps real per als vostres comptes, rivalitzant amb el flux actualitzat de les aplicacions comercials.

Actualització de dades a Fava: Un cop les dades s'estan actualitzant, fer que Fava les mostri és senzill: una actualització del navegador (F5) o fer clic al bàner de recàrrega carregarà l'últim estat del llibre major. Si preferiu ni tan sols fer clic, executar Fava amb --debug activa una autorecàrrega per al desenvolupament d'extensions que alguns han utilitzat per forçar la recàrrega immediata de la pàgina en detectar canvis. Alternativament, si esteu creant un front-end personalitzat, podríeu fer que consulti una petita API que retorni l'últim saldo o similar del llibre major de manera programada.

Càlculs instantanis: La ràpida anàlisi (parsing) de Beancount significa que, fins i tot si actualitzeu el fitxer del llibre major cada pocs minuts, el temps des de l'obtenció de dades → actualització del fitxer → recàrrega de Fava és molt curt. Per exemple, un usuari assenyala que recarregar Fava després d'editar el fitxer "és gairebé imperceptible... definitivament menys d'un segon" per a llibres majors de mida raonable. Per tant, podeu mantenir una finestra de Fava oberta i prémer actualitzar periòdicament per simular un tauler de control en viu. (Per a una experiència realment en viu, es podria crear un petit script per autorefresh del navegador o utilitzar la funció d'actualització del navegador cada N segons).

Conciliació i alertes: Per confiar en les dades en temps real, també convé conciliar els saldos amb freqüència. Beancount ho fa fàcil amb les assercions de saldo i un "indicador d'actualització". De fet, Fava ofereix indicadors de colors al costat dels comptes si els marqueu amb certes metadades (per exemple, podeu marcar un compte amb la metadada fava-uptodate i Fava el colorejarà en vermell/groc/verd segons si l'últim assentament és una comprovació de saldo recent). Això es pot utilitzar per veure ràpidament si el saldo d'un compte al llibre major coincideix amb l'últim extracte del banc. En una configuració de temps gairebé real, podríeu automatitzar les comprovacions diàries de saldo (de manera que cada matí, el llibre major tingui el saldo de tancament d'ahir del banc per a cada compte). L'indicador de Fava us diria aleshores si la vostra importació automàtica ha perdut alguna cosa o si hi ha una discrepància, proporcionant la confiança que les dades "en viu" que veieu són exactes.

Exemple d'automatització: Suposem que voleu actualitzacions diàries del flux de caixa. Podríeu configurar una tasca cron per executar-se a les 3 del matí cada nit: executa un script de Python que utilitza l'API del vostre banc per obtenir les transaccions de l'últim dia, les escriu a import_today.beancount i després afegeix aquest fitxer al vostre llibre major principal. També escriu una asserció de saldo per al final del dia. Quan us lleveu, obriu Fava – mostra totes les transaccions fins ahir i veieu els ingressos/despeses del mes actual actualitzats. Si feu una despesa durant el dia, podeu afegir-la manualment (mitjançant el formulari de nova transacció de Fava al mòbil, per exemple) o esperar a la importació nocturna. Aquest enfocament híbrid (majoritàriament automatitzat, amb la possibilitat d'afegir dades manualment de manera puntual) ofereix una imatge molt propera al temps real. Un altre enfocament és deixar oberta la pàgina del Diari (Journal) de Fava i utilitzar-la com a registre: a mesura que gasteu, registreu ràpidament la transacció (com si l'anotéssiu en un talonari de xecs) – llavors vosaltres sou el flux en temps real. Això és més manual, però alguns usuaris gaudeixen de la consciència que aporta. Per a actualitzacions realment en streaming sense passos manuals, haureu d'invertir en scripts i possiblement utilitzar API de tercers com s'ha comentat.

En resum, combinant l'automatització d'importació de Beancount amb la recàrrega ràpida de Fava, podeu obtenir dades financeres gairebé en temps real. Potser no és "tan fàcil com prémer un botó" per aconseguir el mateix nivell de flux en viu que un servei com QuickBooks (que extreu automàticament els fluxos bancaris), però és possible – i, el més important, manteniu el control total i la transparència del procés. Com va assenyalar un defensor de la comptabilitat en text pla, una mica d'esforç inicial pot donar lloc a un sistema automatitzat que és "molt millor que les solucions comercials, i molt més flexible i extensible". A la secció següent, veurem com les capacitats de visualització de Fava us permeten donar sentit immediatament a aquestes dades actualitzades, convertint les transaccions brutes en informació valuosa.

Capacitats de visualització a Fava ( fluxos de caixa, tendències, inspecció en temps real )

( GitHub - beancount/fava: Fava - interfície web per a Beancount ) L'informe del compte de pèrdues i guanys de Fava ( en la interfície web ) admet visualitzacions riques com treemaps ( mapa d'arbre, a la imatge ) i gràfics de ràfega per obtenir una visió ràpida de la composició dels ingressos i les despeses. En aquest treemap, cada rectangle representa una categoria de despesa, dimensionada pel seu import – es pot veure a l'instant que el Lloguer ( el bloc verd gran ) domina les despeses. La barra de filtres superior i els controls ( a dalt a la dreta ) permeten canviar la moneda, el tipus de gràfic i el període de temps ( per exemple, veient dades mensuals ). Fava també ofereix gràfics de línies ( per exemple, el patrimoni net al llarg del temps ) i gràfics de barres ( per exemple, ingressos vs. despeses per mes ) per ajudar a identificar tendències en les dades financeres.

Un dels grans punts forts de Fava és la seva capacitat de convertir les dades del llibre major en informes visuals i interactius de manera instantània. Tan bon punt es carrega el llibre major, Fava genera gràfics que faciliten la comprensió dels fluxos de caixa i les tendències d'un cop d'ull :

  • Treemap/Sunburst d'ingressos i despeses: A la pàgina del compte de pèrdues i guanys, Fava pot mostrar els vostres ingressos i despeses com un diagrama de mapa d'arbre ( treemap ) o de ràfega ( sunburst ). Són eines excel·lents per a la visualització del flux de caixa "d'un cop d'ull". Per exemple, si les despeses mensuals es mostren com un mapa d'arbre, l'àrea de cada rectangle correspon a la magnitud de cada categoria de despesa. Els blocs grans mostren immediatament on han anat a parar la majoria dels diners ( per exemple, lloguer o hipoteca, impostos, etc. ), mentre que els blocs més petits mostren despeses menors. Això és extremadament útil per detectar tendències en la despesa – si el bloc de "Menjar fora" ha anat creixent cada mes, ho notareu visualment. Podeu canviar a un gràfic de ràfega per veure desglossaments jeràrquics ( per exemple, l'anell exterior podria mostrar subcategories com Supermercat vs. Restaurants dins de la categoria d'Alimentació ). Aquests gràfics s'actualitzen segons el període que hàgiu filtrat ( un mes, l'any en curs, etc. ), oferint-vos una visualització instantània del flux de caixa per a aquest període. Un usuari del fòrum de comptabilitat en text pla va assenyalar : "Faig molt ús dels mapes d'arbre d'ingressos i despeses. Donen una gran sensació visual dels nostres moviments fiscals." – aquest tipus de comprensió immediata és exactament el que busquen els gràfics de Fava.

  • Patrimoni net i saldo al llarg del temps: Fava proporciona un gràfic de línies per al patrimoni net al llarg del temps ( a la pàgina de "Balanç de situació" o "Estadístiques" ). Aquest gràfic traça la suma dels vostres actius menys els passius en cada moment ( per dia, setmana o mes ). És inestimable per a la detecció de tendències – podeu veure la trajectòria de les vostres finances ( per exemple, creixement constant o caigudes en moments puntuals ). Si teniu inversions, podeu alternar entre mostrar el valor a cost o a mercat ( si s'han registrat dades de preus ); per exemple, podríeu veure que el vostre patrimoni net a valor de mercat fluctua amb els preus de les accions, mentre que a cost és més estable. Fava també pot mostrar els saldos dels comptes al llarg del temps. Si feu clic en un compte ( per exemple, Assets:Bank:Checking ), la pàgina del compte mostra un gràfic de l'historial del saldo d'aquest compte. Podeu inspeccionar a l'instant com es mou el vostre compte d'efectiu – que és, de fet, un gràfic de flux de caixa ( el pendent de la línia de saldo indica el flux de caixa net ). Si la tendència és a la baixa, sabeu que esteu gastant més del que ingresseu en aquest període. En examinar aquestes tendències, podríeu detectar patrons com "cada desembre els meus estalvis baixen ( despeses de festes )" o "les meves inversions han crescut bruscament aquest trimestre".

  • Gràfics de barres per a la comparació periòdica: En la vista del compte de pèrdues i guanys, Fava té pestanyes per a "Benefici mensual", "Ingressos mensuals", "Despeses mensuals", etc. En seleccionar-les, es mostren gràfics de barres per mes. Per exemple, el Benefici net mensual mostrarà el superàvit/dèficit de cada mes com una barra, cosa que facilita la comparació del rendiment entre mesos. Podeu identificar ràpidament valors atípics ( per exemple, una barra negativa gran a l'abril significa que aquell mes va tenir una pèrdua o despesa inusual ). De la mateixa manera, el gràfic de barres de "Despeses mensuals" apila o agrupa les despeses per categoria i mes, perquè pugueu veure quines categories fluctuen. Això és ideal per detectar tendències al llarg del temps – per exemple, podríeu notar que les vostres despeses de "Viatges" es disparen cada estiu, o que les factures de "Subministraments" són més altes a l'hivern. Fava bàsicament us ofereix algunes de les capacitats d'una aplicació de pressupostos ( seguiment de tendències ) però amb total capacitat de personalització ( ja que sou vosaltres qui definiu les categories ).

  • Filtrat en temps real i inspecció de dades: Les visualitzacions a Fava no són estàtiques; funcionen en conjunt amb el filtrat de Fava. Suposem que voleu inspeccionar un escenari específic : "Com es veuen els meus fluxos de caixa trimestrals només per als meus comptes de negoci ?" Podeu configurar el filtre de temps al primer trimestre de 2025 i filtrar els comptes per la vostra jerarquia de Negocis – Fava actualitzarà a l'instant els gràfics per mostrar els ingressos nets, el mapa d'arbre de despeses, etc., però només per a aquest subconjunt. Aquesta segmentació interactiva significa que podeu fer anàlisis ad hoc molt ràpidament, sense haver d'escriure consultes. La vista del Diari ( Journal ) també admet filtrat en viu : podeu cercar per beneficiari o per una subcadena de la descripció i veure una llista filtrada de transaccions immediatament. Si esteu consultant dades en temps real ( per exemple, acabeu d'importar les transaccions de la setmana passada ), podríeu filtrar per una etiqueta com #sense_categoria per veure les transaccions noves que cal categoritzar, o per @pendent ( si marqueu les entrades pendents ) per veure què falta encara per liquidar. Aquesta capacitat d'inspecció en temps real també ajuda a garantir la qualitat de les dades, ja que podeu aïllar i corregir anomalies sobre la marxa.

  • Estat de fluxos de caixa ( indirecte ): Tot i que Beancount/Fava no genera un estat de fluxos de caixa formal ( desglossament d'Operació/Inversió/Finançament ) de sèrie, podeu imitar-lo amb consultes personalitzades o estructurant els comptes. Per exemple, podríeu etiquetar certes transaccions o utilitzar comptes específics per a inversió i finançament, i després consultar els totals. La interfície de consulta de Fava us permet executar una consulta BQL com : SELECT sum(amount) WHERE account ~ "Assets:Bank" AND year = 2025 per obtenir el flux de caixa de l'any, etc. Dit això, la majoria d'usuaris particulars troben que la combinació de les tendències de saldo i els gràfics d'ingressos/despeses és suficient per entendre els fluxos de caixa.

  • Visualització de carteres i actius: A la pàgina de Holdings ( Actius ), Fava llista les vostres posicions actuals de matèries primeres o valors ( per exemple, accions, bons, criptomonedes ) amb quantitats, cost, valor de mercat i guanys no realitzats. Tot i que es tracta d'una taula i no d'un gràfic, és molt útil per a la inspecció en temps real de l'estat de la vostra cartera. Algunes extensions ( com fava-investor, que veurem més endavant ) afegeixen més elements visuals per a carteres, com gràfics circulars d'assignació o gràfics de rendiment. Fins i tot sense extensions, podeu veure, per exemple, com canvia el valor de la vostra cartera d'accions segons els últims preus – si actualitzeu les cotitzacions regularment ( cosa que es pot automatitzar diàriament ), els gràfics de Fava reflectiran el valor de mercat al minut de les vostres inversions.

A la pràctica, els informes visuals de Fava s'actualitzen tan ràpidament com les dades subjacents. En el moment en què s'afegeix una nova transacció i es recarrega la pàgina, els gràfics es tornen a calcular. No cal cap reprocessament llarg. Això significa que si teniu un flux de treball semiautomatitzat que introdueix dades al llarg del dia, podeu mantenir Fava obert i actualitzar periòdicament per obtenir gràfics actualitzats – el que és, de fet, un seguiment financer en temps real.

Per exemple, imagineu que gestioneu un petit negoci i voleu controlar l'efectiu disponible i les despeses diàries. Podríeu tenir Fava obert en un quadre de comandament personalitzat ( potser utilitzant una extensió o la pantalla de consulta ) que mostri "Saldo del compte d'efectiu avui" i "Despeses – Avui vs. Ahir". Cada vegada que actualitzeu després d'entrar dades noves, veureu com aquests números canvien. Això és similar al que ofereixen els costosos quadres de comandament en temps real, però utilitzant eines de codi obert. La diferència és que potser haureu d'actualitzar manualment o programar les actualitzacions, mentre que aquelles eines envien les actualitzacions automàticament. Però funcionalment, la informació que obteniu és la mateixa, amb l'avantatge afegit que podeu aprofundir en qualsevol xifra a Fava ( fent clic per veure les transaccions subjacents ), una cosa que molts quadres de comandament de BI no permeten.

En resum, Fava converteix les vostres dades comptables en informació visual immediata : desglossaments de fluxos de caixa, línies de tendència, comparacions al llarg del temps i filtrat interactiu us ajuden a veure la història que hi ha darrere dels números. Tant si esteu inspeccionant les despeses de la setmana passada a la recerca d'anomalies com si esteu revisant les tendències plurianuals del vostre patrimoni net, els gràfics i informes de Fava aporten claredat en temps real ( tan bon punt les dades hi són ). A continuació, veurem com podeu ampliar aquestes capacitats o integrar-les amb eines externes si necessiteu analítiques encara més personalitzades.

Integració amb quadres de comandament externs i eines de visualització

Encara que Fava proporciona un conjunt ric d'informes i gràfics integrats, és possible que vulgueu integrar les dades de Beancount amb altres eines d'intel·ligència de negoci (BI) o de quadres de comandament com Grafana, Metabase o frontals web personalitzats (per exemple, una aplicació React). La motivació podria ser combinar dades financeres amb altres fonts de dades, utilitzar capacitats de gràfics avançades o compartir quadres de comandament amb altres persones en un format diferent. Gràcies a l'obertura de Beancount, hi ha múltiples maneres d'aconseguir la integració:

  • Integració de base de dades (BeanSQL / Beanpost): Un enfocament directe és exportar o sincronitzar el vostre llibre major de Beancount a una base de dades SQL. Una vegada a SQL, qualsevol eina de BI pot consultar les dades. De fet, els membres de la comunitat han creat eines per a això. Per exemple, Beanpost és un experiment que reflecteix un llibre major de Beancount en una base de dades PostgreSQL, implementant gran part de la lògica de Beancount com a funcions SQL. Això proporciona “un backend flexible que es pot integrar amb altres eines com aplicacions web o sistemes d'informes”. Podeu executar Beanpost per sincronitzar contínuament el vostre llibre de text pla amb Postgres. Després, una eina com Metabase o Tableau es pot connectar a aquesta base de dades Postgres i podreu crear qualsevol gràfic o quadre de comandament que vulgueu (amb actualització en viu a mesura que s'actualitza la base de dades). Un usuari va informar que utilitzava Postgres + PostGraphile per exposar automàticament una API GraphQL per a les dades del llibre major i després va escriure un front-end React personalitzat sobre això – tractant essencialment el llibre major com un servei web. Aquest enfocament aborda casos en què la interfície de Fava pot no ser suficient (per exemple, accés multiusuari o interfícies més optimitzades per a mòbils). És més complex des del punt de vista de l'enginyeria, però mostra el potencial: podeu integrar Beancount amb piles web modernes amb relativa facilitat. Una variant més lleugera és utilitzar el suport de SQLite integrat de Beancount – executant una consulta com bean-query -e ledger.beancount "SELECT ..." es poden obtenir resultats, o utilitzant l'API de Python de Beancount per obtenir dades i inserir-les en una base de dades SQLite. Algunes persones utilitzen SQLite com a intermediari per connectar-se a eines com Metabase (que pot llegir fitxers SQLite mitjançant una connexió).

  • Grafana (Quadres de comandament de sèries temporals): Grafana és popular per al monitoratge i les dades de sèries temporals. Les dades financeres al llarg del temps (despeses, saldos) es poden tractar com a sèries temporals. Hi ha hagut debats a la comunitat sobre la connexió de Beancount amb Grafana. Una idea va ser un connector de font de dades de Grafana que pogués executar consultes BQL contra un fitxer de Beancount al moment. Això permetria que els panells de Grafana mostressin directament, per exemple, el “Saldo del compte corrent” com un indicador o les “Despeses dels últims 30 dies” com un gràfic, consultant el llibre major. A dia d'avui (2025), no s'ha publicat cap connector dedicat, però els entusiastes han creat solucions ad-hoc. Per exemple, l'usuari de Reddit aquilax va crear un servidor senzill que posa les dades de Ledger CLI a disposició de Grafana, i el va compartir com a grafana-ledger-datasource-server. Es pot aplicar un concepte similar a Beancount: escriuríeu un petit servidor HTTP en Python que carregui el llibre major de Beancount (utilitzant l'API de Beancount per consultar les dades) i exposi punts finals que retornin estructures de dades JSON per a Grafana. Grafana té un connector de font de dades JSON genèric que podria extreure dades d'aquesta API. A la pràctica, això vol dir que podríeu dissenyar un quadre de comandament de Grafana amb panells com “Ingressos mensuals (gràfic de barres)” o “Saldo diari d'efectiu (gràfic de línies)”, i aquests panells recuperarien les dades de la vostra API basada en Beancount. Grafana permetria opcions de visualització riques (anotacions, llindars, combinació amb mètriques del servidor, etc.). Andreas Gerstmayr (un dels mantenidors de Fava) va suggerir exactament aquest enfocament i fins i tot va esmentar que va crear una extensió de Fava anomenada fava-dashboards (més informació a continuació) per renderitzar gràfics a partir de consultes BQL, com una alternativa a una configuració completa de Grafana. Si preferiu la interfície de Grafana, la integració és factible; només requereix construir el pont de dades.

  • Metabase (Consultes ad-hoc i quadres de comandament): Metabase és una eina de BI fàcil d'utilitzar que permet executar consultes i crear quadres de comandament sense necessitat de codi. Si exporteu el vostre llibre major a un format relacional (mitjançant Beanpost o escrivint taules de transaccions, assentaments, etc.), podeu connectar Metabase a aquesta base de dades. Podeu crear taules personalitzades com despeses (data, categoria, import) a partir del vostre llibre major i, després, a Metabase podeu generar gràfics fàcilment (per exemple, un gràfic circular de despeses per categoria del mes passat). L'avantatge és que els usuaris no tècnics (o col·legues) podrien interactuar amb les dades a través de la interfície gràfica de Metabase sense necessitat de tocar el fitxer de Beancount. El desavantatge és que cal mantenir l'exportació o sincronització. Alguns usuaris han automatitzat la conversió nocturna del llibre major de Beancount a SQLite i després deixen que Metabase llegeixi el fitxer SQLite; d'altres podrien utilitzar l'enfocament de Postgres esmentat. La clau és que la portabilitat de les dades de Beancount permet això: sou lliures de duplicar les dades en qualsevol forma que la vostra eina externa necessiti.

  • Frontals i aplicacions personalitzades: Si teniu necessitats específiques, sempre podeu escriure una aplicació personalitzada sobre Beancount. La biblioteca Python de Beancount us dóna accés a totes les entrades analitzades, saldos, etc., de manera que es pot utilitzar un entorn de treball web de Python (Flask, Django, FastAPI) per crear una aplicació a mida. Per exemple, una petita empresa podria crear un quadre de comandament que mostri mètriques de KPI (com el marge brut, les vendes diàries, etc.) consultant el llibre major i potser combinant-lo amb dades externes (com el nombre de clients atesos). Un membre de la comunitat va crear una interfície web optimitzada per a mòbils perquè Fava no era intuïtiva per a la seva parella; van aprofitar el llibre major en una base de dades per impulsar aquesta interfície personalitzada. Si preferiu JavaScript / TypeScript, podríeu utilitzar una eina per convertir el llibre major en JSON i construir a partir d'aquí. S'han plantejat alguns projectes a la comunitat com beancount-web o beancount-query-server per exposar les dades de Beancount a través d'una API, encara que també es podria utilitzar l'API de Fava (si s'executa en mode "headless"); Fava té un punt final d'API per a consultes internes.

  • Integració amb Excel / PowerBI: Val la pena assenyalar que fins i tot us podeu integrar amb Excel o PowerBI. Beancount (i Fava mitjançant un complement) pot exportar els resultats de les consultes a fitxers CSV o Excel. Un flux de treball podria ser: una tasca nocturna genera un fitxer Excel de les dades financeres clau de Beancount, i PowerBI està configurat per importar aquest fitxer. Això és una mica indirecte, però per a les organitzacions que ja utilitzen intensament Excel / PowerBI, és una integració amb poca fricció. PowerBI també admet fonts de dades Python, de manera que es podria escriure un breu script de Python que executi consultes BQL i utilitzar-lo com a font de dades dins de PowerBI, aconseguint una connexió directa.

Cas d'estudi – Idea d'integració amb Grafana: Josh, un usuari de Beancount, va preguntar a la llista de correu sobre com enviar mètriques de Beancount a Prometheus i visualitzar-les a Grafana. Els desenvolupadors principals van respondre que, en lloc de duplicar les dades a Prometheus, un millor enfocament és un connector o servei de Grafana que consulti directament el llibre major de Beancount. Andreas va compartir la seva extensió fava-dashboards, que renderitza gràfics personalitzats dins del mateix Fava, com una solució d'exemple. La conclusió és: teniu opcions – ja sigui integrar-vos mitjançant la infraestructura de BI existent (Prometheus + Grafana o SQL + Metabase) o ampliar Fava per satisfer les vostres necessitats (la següent secció aprofundirà en això).

Consideracions de seguretat i multiusuari: Si feu la integració en eines externes, tingueu en compte la sensibilitat de les dades. El text pla de Beancount sovint conté informació financera privada, de manera que qualsevol servidor que l'exposi ha d'estar protegit (autenticat). Si moveu dades a una eina de BI al núvol, podríeu perdre part de la privadesa. Les eines autogestionades (versions de codi obert de Grafana / Metabase) es poden executar localment per mitigar-ho. A més, si diverses persones necessiten veure els quadres de comandament, pot ser preferible un quadre de comandament extern de només lectura que donar a tothom accés a Fava (on podrien editar dades si no es té cura). Per exemple, una startup podria utilitzar Beancount internament però utilitzar Metabase per permetre que els caps de departament vegin la despesa enfront del pressupost sense tocar els fitxers del llibre major.

En resum, Beancount i Fava s'integren bé amb altres. Podeu aprofitar tot l'ecosistema d'eines de dades amb una mica de codi d'unió: envieu les dades del llibre major a una base de dades SQL per a eines de BI, serviu-les mitjançant API per a aplicacions web o fins i tot utilitzeu biblioteques especialitzades per transmetre-les a sistemes de sèries temporals. Aquesta flexibilitat significa que mai estareu atrapats si les visualitzacions integrades de Fava no compleixen un requisit específic: sempre podeu integrar-vos en una altra plataforma mentre continueu utilitzant Beancount com a font de la veritat. A continuació, veurem com ampliar Fava amb connectors i quadres de comandament personalitzats, que sovint és una ruta més fàcil que la integració externa si només necessiteu unes quantes funcions addicionals.

Taulers de control personalitzats i extensió de Fava amb connectors (Exemples de codi)

Fava està dissenyat per ser extensible: podeu afegir noves pàgines, gràfics i comportaments escrivint connectors de Fava (extensions) en Python. Això permet adaptar la interfície web a les vostres necessitats específiques sense haver de construir una aplicació independent sencera. Explorarem dues vies clau per a la personalització: (1) l'ús o l'escriptura d'extensions de Fava, i (2) la configuració de taulers de control personalitzats mitjançant connectors de la comunitat com fava-dashboards.

Extensions de Fava (connectors personalitzats)

Una extensió de Fava és bàsicament un mòdul de Python que defineix una subclasse de FavaExtensionBase. Quan Fava s'inicia, pot carregar aquest mòdul i integrar-lo a l'aplicació. Les extensions poden registrar noves pàgines d'informes, connectar-se a esdeveniments i fins i tot incloure JavaScript personalitzat per a la interactivitat. Algunes extensions venen integrades amb Fava (per exemple, portfolio_list per a una pàgina de resum d'inversions). Altres es poden instal·lar mitjançant pip o escriure des de zero.

Per habilitar una extensió, s'utilitza la directiva personalitzada (custom) de Beancount al fitxer del llibre major:

2010-01-01 custom "fava-extension" "my_extension_module" "{'option': 'value'}"

Això indica a Fava que carregui el mòdul especificat. Per exemple, l'extensió Portfolio List integrada s'habilita internament de manera similar. Si heu instal·lat una extensió mitjançant pip, en faríeu referència al nom del seu mòdul aquí. El JSON opcional al final és la configuració de l'extensió (que se li passa com una cadena de text).

Exemple – Extensió d'Auto-Commit: Fava té una extensió d'exemple fava.ext.auto_commit (inclosa) que confirma automàticament els canvis en un VCS quan editeu el fitxer mitjançant l'editor de Fava. Si volguéssiu utilitzar-la, afegiríeu:

2025-01-01 custom "fava-extension" "fava.ext.auto_commit" "{'repo': '/path/to/git/repo'}"

Aquesta extensió registra un ganxo (hook) que s'executa després de cada edició de fitxer per realitzar un git commit. Demostra com les extensions poden connectar-se als esdeveniments de Fava (en aquest cas, després de desar el fitxer).

Exemple – Extensió Portfolio List: Aquesta extensió afegeix una pàgina que mostra les vostres inversions agrupades per classe d'actiu, etc. Té un report_title = "Portfolio List" i inclou una plantilla per renderitzar les dades. Fava ho detecta i afegeix una nova entrada a la barra lateral "Portfolio List" sota Informes. L'extensió també inclou una mica de JavaScript (amb has_js_module = True) per millorar la pàgina (potser per a gràfics interactius en aquesta pàgina). Per habilitar-la (si no fos ja predeterminada), faríeu:

2025-01-01 custom "fava-extension" "fava.ext.portfolio_list"

(No cal configuració en aquest cas.)

Escriure una extensió personalitzada: Suposem que voleu una pàgina d'informe personalitzada, per exemple, "Antiguitat de comptes a cobrar" per a les factures. Podríeu crear un fitxer receivables.py com aquest:

# receivables.py
from fava.ext import FavaExtensionBase

class ReceivablesReport(FavaExtensionBase):
report_title = "Receivables Aging"

def on_page_load(self):
# Això podria ser un ganxo per recollir dades
pass

També crearíeu un fitxer templates/ReceivablesReport.html per definir l'HTML de la pàgina. En aquesta plantilla, podeu accedir a self.ledger (l'objecte del llibre major de Beancount) i realitzar càlculs. Per exemple, recórrer les transaccions per trobar aquelles etiquetades com a factures i que encara no s'han pagat, i agrupar-les per antiguitat. Un cop escrita l'extensió, l'afegiu al vostre llibre major:

2025-01-01 custom "fava-extension" "receivables"

(suposant que receivables.py es troba al directori del fitxer Beancount o al PYTHONPATH, Fava la podrà trobar pel nom). En iniciar Fava, ara veureu una pàgina "Receivables Aging".

Internament, Fava cridarà els mètodes de la vostra extensió en els moments adequats. Podeu sobreescriure mètodes com after_load_file (per fer càlculs després que es carregui el llibre major) o utilitzar ganxos com before_request. L'extensió també pot definir rutes o punts finals d'API si cal, però normalment n'hi ha prou amb utilitzar els ganxos proporcionats i una plantilla.

La documentació de Fava indica que el sistema d'extensions encara està evolucionant, però ja és funcional. De fet, moltes funcions avançades s'han prototipat primer com a extensions.

Taulers de control personalitzats amb fava-dashboards (extensió de la comunitat)

En lloc d'escriure una extensió des de zero, podeu utilitzar el connector fava-dashboards creat per un mantenidor de Fava. Aquesta extensió us permet definir taulers de control arbitraris mitjançant un fitxer de configuració YAML (o JSON), barrejant text, taules i gràfics, impulsats per consultes BQL. Bàsicament, és una manera de crear noves "pàgines" a Fava que contenen múltiples panells personalitzats.

Instal·lació i configuració: Primer, instal·leu el paquet (per exemple, pip install fava-dashboards). Després, al vostre fitxer Beancount, activeu-lo amb una directiva personalitzada que apunti a la vostra configuració de taulers. Per exemple:

2010-01-01 custom "fava-extension" "fava_dashboards" "{ 'config': '/path/to/dashboards.yaml' }"

Això indica a Fava que carregui l'extensió i utilitzi el vostre fitxer YAML per a la configuració.

Format YAML dels taulers: Al fitxer dashboards.yaml, definiu un o més taulers i els seus panells. Per exemple:

dashboards:
- title: "Cash Flow Dashboard"
panels:
- title: "Net Cash This Month"
width: 50%
queries:
- bql: "SELECT sum(position) WHERE account ~ 'Income' OR account ~ 'Expenses'"
type: "jinja2"
template: "<h1>{{ panel.queries[0].result | float }} USD</h1>"
- title: "Cash Balance Trend"
width: 50%
queries:
- bql: "SELECT date, balance WHERE account = 'Assets:Bank:Checking'"
type: "echarts"
script: |
const dates = {{ panel.queries[0].result | safe }}.map(row => row[0]);
const balances = {{ panel.queries[0].result | safe }}.map(row => row[1]);
return {
xAxis: { type: 'category', data: dates },
yAxis: { type: 'value' },
series: [{ data: balances, type: 'line' }]
};

Aquest és un exemple hipotètic per il·lustrar-ho. El primer panell calcula l'efectiu net (ingressos menys despeses) per al filtre actual i el mostra com un número gran (utilitzant una plantilla Jinja2). El segon panell executa una consulta per obtenir el saldo diari del compte corrent i després utilitza un script d'ECharts (una biblioteca de gràfics JS) per traçar un gràfic de línies. Fava-dashboards admet tipus de panells com: html, jinja2, echarts, d3_sankey, etc., i proporciona dades als scripts. Bàsicament, us ofereix total flexibilitat per dissenyar taulers amb múltiples components, sense haver d'escriure una extensió de Fava completa des de zero.

L'extensió s'encarrega de renderitzar-los quan obriu la pàgina del tauler a Fava. Podeu crear múltiples taulers (cadascun apareix com una pestanya o pàgina separada). Això és extremadament potent per crear taulers de control financer personalitzats. Per exemple, podríeu fer un tauler de "Pressupost vs Real": un panell mostra una taula de pressupost comparat amb la despesa real per categoria (mitjançant una consulta que compara dos conjunts de comptes), un altre panell mostra un gràfic de barres de la despesa acumulada de l'any vs l'any anterior, etc. Tot això només amb configuració i un mínim d'scripts, aprofitant les dades del vostre llibre major mitjançant BQL.

Exemple de codi – Habilitació de fava-dashboards: Com s'ha mostrat anteriorment, afegir l'extensió és una sola línia al llibre major. Per completar-ho, aquí teniu un exemple mínim en context:

option "title" "El meu llibre major"
option "operating_currency" "USD"

plugin "beancount.plugins.auto_accounts" ; (obre automàticament els comptes)

1970-01-01 custom "fava-extension" "fava_dashboards" "{ 'config': 'dashboards.yaml' }"

I a dashboards.yaml:

dashboards:
- title: "Overview"
panels:
- title: "Net Worth"
queries:
- bql: "select sum(position) where account ~ 'Assets|Liabilities'"
type: "jinja2"
template: "<div>Net Worth: {{ panel.queries[0].result[0,0] }}</div>"

(Això mostraria el patrimoni net en un div simple; un exemple real tindria un format més polit i més panells.)

Amb això configurat, quan executeu Fava i navegueu al tauler "Overview", veureu el vostre patrimoni net calculat. Després podeu refinar la plantilla o afegir gràfics segons calgui.

Altres extensions destacades: A banda de fava-dashboards, existeixen connectors com fava-investor, que proporciona anàlisi d'inversions avançada (gràfics d'assignació d'actius, eines de recol·lecció de pèrdues fiscals, etc.). Habilitar fava-investor (després de fer pip install fava-investor) afegeix múltiples pàgines d'informes relacionades amb les inversions. Un altre és fava-review (per a la revisió de transaccions al llarg del temps), etc. La comunitat manté una llista "awesome-beancount" que inclou diversos connectors i eines. En explorar-los, podríeu trobar una extensió preconstruïda que s'ajusti a les vostres necessitats.

Quan estendre vs integrar externament: En general, si la vostra necessitat és purament de presentació o càlcul sobre les dades existents del llibre major, una extensió de Fava és ideal (manté tot en un sol lloc, respecta els filtres, etc.). Si la vostra necessitat implica combinar dades externes o requeriu una interfície d'usuari dràsticament diferent, podria estar justificada una integració externa (secció anterior). Per exemple, mostrar l'analítica web juntament amb les finances és millor fer-ho a Grafana o Metabase; però afegir un nou KPI o informe financer és millor com a connector de Fava.

Exemple – Un KPI personalitzat a Fava: Suposem que voleu fer un seguiment de la "Taxa d'estalvi" (percentatge d'ingressos estalviats). Podríeu fer-ho amb una extensió que la calculi i mostri un petit requadre a la pàgina principal. O amb fava-dashboards, on un panell podria ser un Jinja2 que mostri Taxa d'estalvi: X % consultant els ingressos totals i les despeses totals. Aquest tipus de mètrica personalitzada és molt fàcil d'injectar amb aquestes eines, mentre que en un sistema tancat com QuickBooks podria ser impossible crear una mètrica nova al tauler de control.

Per il·lustrar com de concís pot ser, aquí teniu un pseudocodi utilitzant fava-dashboards en YAML:

- title: "Savings Rate"
panels:
- title: "Savings Rate"
queries:
- bql: "SELECT sum(position) WHERE account ~ 'Income'"
- bql: "SELECT sum(position) WHERE account ~ 'Expenses'"
type: "jinja2"
template: |
{% set income = panel.queries[0].result[0][0] %}
{% set expense = -panel.queries[1].result[0][0] %} {# les despeses són negatives en el context de la consulta BQL d'estat de resultats #}
{% set rate = (income - expense) / income * 100 if income != 0 else 0 %}
<h3>Savings Rate: {{ rate|round(1) }} %</h3>

Això calcularia la taxa d'estalvi (suposant que les sumes dels comptes d'ingressos resulten positives i les despeses negatives en el context de la consulta BQL) i la mostraria.

El punt clau: Fava no és una eina estàtica, és una plataforma extensible. Amb una mica de Python o fins i tot només codi de configuració, podeu personalitzar-la àmpliament. Molts usuaris comparteixen petits scripts o extensions en fòrums per fer coses com mostrar factures properes, generar factures en PDF a partir de transaccions o integrar Beancount amb biblioteques de càlcul d'impostos. Quan invertiu a aprendre o utilitzar aquestes extensions, obteniu un sistema d'anàlisi financera molt a mida sense haver de començar de zero.

Casos d'ús: Finances personals vs. comptabilitat per a petites empreses

Beancount i Fava es poden utilitzar tant per a la comptabilitat personal com per a la de petites empreses, però els casos d'ús i els beneficis varien lleugerament en el seu èmfasi:

Finances personals

Per als particulars, Beancount + Fava destaca per oferir una visibilitat i coneixement total de les pròpies finances sense dependre d'aplicacions propietàries. Els casos d'ús comuns en finances personals inclouen:

  • Seguiment de despeses i pressupostos: Molts usuaris utilitzen Beancount per registrar cada despesa i després analitzar els patrons de consum. Amb Fava, poden veure on van els diners cada mes (mapa d'arbre de despeses) i fer un seguiment dels pressupostos comparant-los amb els valors esperats (alguns ho fan mitjançant l'extensió Budgets o consultes personalitzades). Un usuari va descriure que, després d'adoptar Beancount, “l'anàlisi de les dades financeres (despeses, donacions, impostos, etc.) és trivial. És fàcil de fer amb Fava, però també amb scripts... Tinc un script de Python que extreu dades de Beancount utilitzant BQL, i després faig servir pandas per preparar un informe”. Això demostra com els usuaris particulars es beneficien tant de la interfície d'usuari integrada com de la capacitat de programar anàlisis personalitzades quan calgui.

  • Patrimoni net i seguiment d'objectius: Atès que pots incloure tots els actius (comptes bancaris, inversions, fins i tot actius físics si vols) en un sol llibre major, obtens una visió única del patrimoni net. Els aficionats a les finances personals ho utilitzen per fer un seguiment del progrés cap als seus objectius (per exemple, el “número FI” de llibertat financera o el pagament de deutes). Els gràfics de Fava que mostren el patrimoni net al llarg del temps són motivadors; pots veure literalment la corba de la teva riquesa. És habitual fer un seguiment de passius com préstecs estudiantils o hipoteques a Beancount i actualitzar-ne els saldos; el llibre major ofereix llavors una imatge completa de la salut financera.

  • Inversions i cripto: L'ús personal sovint s'estén al seguiment d'una cartera d'inversions. Beancount pot gestionar accions, criptomonedes, etc., amb càlculs de base de cost i guanys realitzats (mitjançant connectors o consultes). L'avantatge respecte al lloc web d'un corredor és que pots consolidar tots els comptes i veure l'assignació d'actius real. El connector fava-investor, per exemple, va ser creat per un membre de la comunitat per fer anàlisis d'inversió a Fava, incloent-hi coses com mapes d'arbre d'assignació d'actius i mètriques de rendiment. Això és una cosa que els inversors aficionats solen fer a Excel; Beancount ofereix una forma més rigorosa i automatitzada. Una entrada de blog titulada “Beancount: DeFi Accounting For Noobs” fins i tot il·lustra el seu ús per fer un seguiment de les transaccions de criptomonedes i el yield farming, cosa que demostra la seva flexibilitat en els escenaris moderns de finances personals.

  • Finances personals multidivisa: Si vius a l'estranger o tens inversions estrangeres, Beancount és extremadament útil, ja que pot convertir i agregar divises. Els usuaris han assenyalat que “molts programaris de comptabilitat no són bons amb la multidivisa... Amb Beancount, pots definir qualsevol producte (commodity) que vulguis” i obtenir informes en la teva moneda preferida. Per a un usuari particular que gestiona, per exemple, un salari en USD però despeses en EUR, això és un gran avantatge.

  • Seguiment de vida i diari: Un cas d'ús poc convencional però real: alguns tracten el llibre major com un registre de vida, etiquetant les transaccions amb esdeveniments vitals (com #wedding o #vacation2025) i després utilitzant-lo per calcular els costos dels esdeveniments o fins i tot com un diari d'activitats (les metadades financeres com a reflex dels esdeveniments vitals). El format de text pla i l'etiquetatge fan que això sigui possible d'una manera que les eines tradicionals no permeten fàcilment.

  • Simplicitat i propietat: Les finances personals també són una qüestió de mentalitat. Molts trien Beancount perquè “volien ser propietaris d'aquestes dades i analitzar-les fàcilment, i no volien estar lligats a una subscripció o a un proveïdor”. El recent tancament de Mint.com (una eina popular de pressupostos gratuïta) ha portat els entusiastes cap a la comptabilitat en text pla per la seva longevitat. Amb Beancount, saben que encara podran obrir el seu llibre major d'aquí a 20 anys. Per a les finances d'una sola persona, les dades de Beancount (potser sincronitzades via Dropbox o Git) i la interfície web de Fava (que es pot executar localment o en un servidor privat) ofereixen un equilibri entre comoditat i control difícil de trobar en altres llocs.

Possibles reptes per a l'ús personal: la configuració inicial i l'aprenentatge de la partida doble poden ser un obstacle per a alguns. Però molts recursos (com el tutorial de Beancount i els fòrums de la comunitat) ajuden els nous usuaris. Un cop configurat, el manteniment es pot automatitzar en gran mesura, tal com s'ha descrit, cosa que és ideal per a algú que gestiona les finances de la llar amb el mínim esforç.

Comptabilitat per a petites empreses

Les petites empreses, les startups i els autònoms també poden utilitzar Beancount + Fava, tot i que els requisits aquí inclouen informes més formals i, potser, col·laboració:

  • Llibres i estats financers: Una empresa pot mantenir el seu llibre major a Beancount, registrant factures, rebuts, nòmines, etc., i generar el Balanç de Situació i l'Estat de Pèrdues i Guanys. Beancount admet la comptabilitat de meritació necessària (pots marcar els comptes com a Comptes a cobrar/pagar i registrar factures amb assentaments a ingressos i a cobrar, i més tard un pagament per liquidar el compte a cobrar). Fava mostrarà aquests moviments sota Actius o Passius de manera adequada. En una discussió a Reddit es va preguntar si Beancount és adequat per a empreses i si pot generar estats financers correctes: sí, pot produir balanços, estats de resultats i (amb l'ajuda d'algunes consultes) estats de flux de caixa, ja que aquests són només vistes de les dades de partida doble. El detall és que Beancount no imposa cap estàndard comptable particular (això depèn de com l'utilitzis). Per tant, un usuari expert (o un comptable) hauria de configurar correctament el pla de comptes per a l'empresa. Hi ha exemples de la comunitat de Beancount sent utilitzat per a startups; un comentari a HN deia: “M'agrada molt utilitzar Beancount + Git per gestionar el llibre de comptabilitat de la meva pròpia startup”, tot i que assenyalava que era una mica tediós afegir entrades periòdicament. Aquest tedi es pot alleujar amb l'automatització de les importacions, com hem vist.

  • Monitoratge financer en temps real: Per a una petita empresa, el flux de caixa és el rei. Utilitzant Fava, el propietari d'un negoci pot controlar els saldos bancaris i el flux de caixa gairebé en temps real, igual que en l'ús personal, però aquí és encara més crític. En automatitzar les càrregues bancàries o les importacions, poden detectar si ha arribat el pagament d'un client o si s'ha liquidat una despesa important. QuickBooks ofereix fluxos bancaris que “et permeten veure com va el teu negoci en temps real”; amb Beancount, repliques això mitjançant la teva pròpia integració bancària. L'avantatge de Beancount és la transparència: veus exactament què s'ha importat i com s'ha categoritzat, en lloc de confiar en la lògica de conciliació de QuickBooks, que de vegades és inescrutable.

  • Facturació i AR/AP (Comptes a cobrar/pagar): Beancount no té un mòdul de facturació integrat (com ara la generació de factures en PDF o el seguiment de números de factura). Tanmateix, usuaris creatius han aconseguit gestionar-ho amb complements. Per exemple, es podria generar una factura en PDF a partir d'una transacció utilitzant una plantilla Jinja2 o fins i tot un script extern que llegeixi les entrades pendents de cobrar. Hi ha un projecte anomenat “Beanie” que actua com un sistema lleuger d'AR sobre Beancount. Les petites empreses podrien utilitzar Beancount per al llibre major i una altra eina per a l'emissió de factures, i després importar les dades de facturació a Beancount. És un pas addicional en comparació amb QuickBooks (que pot enviar factures i després registrar-les automàticament un cop pagades), però garanteix que totes les dades acabin al llibre major obert.

  • Nòmines i amortitzacions: Aquestes són tasques comptables que gestionen les petites empreses. Beancount certament pot registrar assentaments de nòmines (desglossant el salari brut, impostos, retencions, etc., en els comptes adequats), però normalment els calcularies amb eines externes o a través del teu proveïdor de nòmines i després els introduiries. De la mateixa manera, els quadres d'amortització d'actius fixos s'introduirien manualment (o podries escriure un connector per automatitzar els assentaments d'amortització mensuals). Beancount no té "màgia" per a això, però tampoc la tenen molts programaris per a petites empreses més enllà d'oferir algunes plantilles. L'avantatge és que pots programar qualsevol cosa inusual. Per exemple, si tens un calendari de reconeixement d'ingressos personalitzat, podries programar aquests assentaments en Python i incloure'ls.

  • Transparència i auditabilitat: Les empreses poden valorar que Beancount ofereix una traça d'auditoria clara. Cada transacció és transparent i es pot anotar amb enllaços a documents (rebuts, contractes). En cas de ser auditat, pots mostrar el fitxer del llibre major juntament amb els documents adjunts, cosa que és força senzill. A més, el control de versions significa que tens un registre d'auditoria de qui i quan ha fet canvis (si diverses persones col·laboren via Git). Compara això amb QuickBooks, on un comptable podria necessitar examinar registres de canvis que no són fàcilment accessibles per a l'usuari.

  • Cost: Beancount + Fava és gratuït, cosa que resulta atractiu per a startups o petites empreses que intenten minimitzar els costos de programari. QuickBooks, Xero, etc., tenen quotes mensuals. Tanmateix, el preu a pagar és que aquests darrers inclouen suport i una configuració més senzilla. Un propietari de negoci amb coneixements tècnics podria intercanviar gustosament una mica de temps per estalviar costos i guanyar flexibilitat.

Exemples reals: Un altre usuari a HN va dir que el va utilitzar per a una LLC de consultoria i que va funcionar bé, però quan les transaccions van créixer, van començar a dividir els fitxers per anys per mantenir la velocitat. El consens és: per a una empresa petita (posem per cas desenes de milers de transaccions per any o menys), Beancount és perfectament capaç. Si fossis una PIME més gran amb centenars de milers de transaccions, el rendiment podria requerir l'ús d'un enfocament basat en bases de dades o l'elecció d'un sistema comptable dissenyat per a tal fi, tot i que tenim Beanpost per intentar solucionar-ho utilitzant Postgres com a rerefons (backend).

Col·laboració: Una àrea de diferència: QuickBooks Online permet que diversos usuaris (propietari, comptable, etc.) treballin simultàniament. Amb Beancount, la col·laboració es podria fer via Git (diversos usuaris pugen els canvis). Això funciona, però requereix cert coneixement de Git i resolució de conflictes si les persones editen al mateix temps. Alguns han utilitzat plataformes Git en línia o fins i tot Google Drive per compartir el fitxer del llibre major. És factible, però no tan fluid com un programari de comptabilitat al núvol. No obstant això, per a un equip petit (o un comptable sol + propietari) és gestionable, i sempre es pot concedir accés de només lectura a través de Fava (allotjant-lo en un servidor intern i permetent que altres vegin els informes sense editar).

Compliment normatiu: Per a les finances personals, no és un problema. Per a les empreses, pot ser que hagis de generar informes oficials o seguir estàndards comptables. Beancount es pot utilitzar per generar estats conformes als GAAP, però requereix que l'usuari introdueixi les dades en conseqüència. No hi ha una aplicació integrada de les regles GAAP (per exemple, no hi ha cap mòdul d'actius fixos integrat per assegurar-te que amortitzis correctament). Un comptable extern encara pot treballar amb un llibre major de Beancount (ja que bàsicament és un diari general); podria exportar-lo a Excel i fer ajustos si calgués. Algunes empreses poden preferir un programari conegut per aquest motiu, o almenys tenir un comptable que se senti còmode amb les dades en text pla.

Qui l'utilitza per a negocis? Probablement usuaris avançats: startups tecnològiques, autònoms amb coneixements de programació o empreses que valoren molt el control de les dades (com ara empreses d'intermediació financera que volen informes personalitzats). En un fil de Reddit algú va preguntar si Beancount seria adequat per a una empresa de trading; les respostes van indicar que sí, que gestiona la multidivisa i pot produir els estats necessaris, però que hauràs de construir algunes eines al seu voltant.

Per concloure aquesta secció: els usuaris de finances personals estimen Beancount pel coneixement i el control que els dóna sobre els seus propis diners: converteix les finances en un conjunt de dades que poden consultar i del qual poden aprendre, permetent coses com el seguiment fàcil de cada despesa i el càlcul de mètriques que les eines de pressupost tradicionals no poden oferir. Els usuaris de petites empreses aprecien la transparència, l'estalvi de costos i la capacitat de personalització (hackability): poden integrar la comptabilitat amb la resta de les seves eines de programari i evitar la dependència del proveïdor o les quotes mensuals. Ambdós casos d'ús es beneficien de l'analítica en temps real: una persona pot vigilar el progrés del seu pressupost mensual, una empresa pot vigilar els fluxos de caixa diaris; en tots dos casos, Fava pot presentar informació actualitzada quan se li proporcionen dades a temps.

Comparació amb altres plataformes d'analítica en temps real

És útil comparar Beancount + Fava amb altres solucions que ofereixen analítica financera en "temps real", com ara QuickBooks (amb feeds bancaris en viu) i Power BI (o taulers de BI similars). Cada enfocament té els seus punts forts i compromisos en termes de transparència, flexibilitat i capacitat de resposta:

AspecteBeancount + Fava (Codi obert)QuickBooks (amb feeds bancaris)Power BI / BI genèric
Transparència i propietat de les dadesTotalment transparent – les dades són text pla, pots inspeccionar cada transacció. La lògica és tota visible (sense algorismes ocults). Ets el propietari del format per sempre. El control de versions pot mostrar una pista d'auditoria dels canvis.Opac – dades emmagatzemades en una base de dades al núvol propietària. Depens de l'exportació d'Intuit per a les còpies de seguretat. Alguns processos (p. ex., la categorització automàtica) no són totalment visibles. Registres d'auditoria limitats. Si deixes de pagar, corres el risc de perdre l'accés fàcil a les teves dades.Depèn de la font de dades – Power BI en si és només una eina. Si es connecta a una base de dades oberta, mantens la propietat d'aquestes dades. No obstant això, els fitxers o taulers de Power BI tenen un format propietari i requereixen Power BI per visualitzar-los. La transparència dels càlculs és bona (tu els defineixes), però el sistema general és complex.
Flexibilitat i personalitzacióExtremadament flexible. Pots definir qualsevol estructura de comptes, qualsevol mercaderia o divisa. Pots programar comportaments o anàlisis personalitzats (Python, connectors). Sense fluxos de treball imposats – l'adaptes a les teves necessitats (personals o empresarials). El sistema d'extensions de Fava i eines com fava-dashboards permeten taulers personalitzats dins de l'aplicació. Si falta alguna cosa, és probable que puguis construir-la o integrar-la tu mateix.Moderada. QuickBooks és ric en funcions per a la comptabilitat estàndard de petites empreses (facturació, nòmines (complement separat), informes bàsics). Però estàs limitat a les funcions que ofereix Intuit. El pla de comptes i les categories han d'encaixar en el seu paradigma. Els informes personalitzats són limitats; no pots fer consultes arbitràries a la base de dades. Les integracions existeixen però són a través de l'API d'Intuit (que és limitada) o exportant a Excel. Sacrifiques la flexibilitat per la comoditat.Molt flexible per a l'anàlisi i la visualització. Pots crear gairebé qualsevol gràfic o KPI si les dades són accessibles. Power BI pot combinar fàcilment dades financeres amb altres dades (vendes, analítica web, etc.). No obstant això, no és un sistema comptable – has de tenir les dades preparades (que podrien provenir de Beancount!). No imposa la partida doble ni els principis comptables; és un full en blanc. La flexibilitat en la visualització és alta (mesures DAX personalitzades, etc.), però requereix experiència.
Resposta en temps realGairebé en temps real amb configuració. Si automatitzes l'entrada de dades (feeds o importacions freqüents), Fava ho reflectirà tan bon punt el llibre major s'actualitzi i es torni a carregar. No és un temps real de tipus "push" per defecte (cal actualitzar manualment), però pots actualitzar amb la freqüència que desitgis (cada minut, cada hora). La velocitat d'actualització és molt ràpida (anàlisi de text en mil·lisegons per a petits canvis). Tu controles la freqüència – podria ser contínua si es programa. Sense esperar cicles de sincronització del proveïdor.Dissenyat per ser gairebé en temps real per a transaccions bancàries: "Els feeds bancaris et permeten veure com va el teu negoci en temps real." A la pràctica, els feeds bancaris a QuickBooks Online s'actualitzen un cop al dia o sota demanda (depèn del banc). Extreu automàticament noves transaccions i intenta categoritzar-les, de manera que no hagis d'importar manualment. Els canvis apareixen al tauler sense intervenció manual. No obstant això, algunes dades (com les transaccions pendents) podrien no mostrar-se fins que es liquidin. A més, certs informes podrien no actualitzar-se fins que es realitzi una acció. En general, bona capacitat de resposta per a les dades bancàries; menys per a coses com els assentaments manuals (segueixen sent en temps real, però els introdueixes tu mateix).Si es configura amb una connexió en viu, els taulers es poden actualitzar en temps real o segons una programació. Per exemple, un tauler de Power BI que utilitza DirectQuery en una base de dades SQL es pot actualitzar cada vegada que l'obres o fins i tot automàticament. Amb el mode d'importació, l'actualitzaries segons una programació (p. ex., cada hora). Per tant, pot ser gairebé en temps real, però la complexitat rau a mantenir la canalització de dades. A més, qualsevol canvi en les dades subjacents requereix una actualització del model o de les consultes. Hi pot haver un lleuger retard segons com estigui configurat (i si s'utilitza el núvol de Power BI, hi ha límits en la freqüència d'actualització automàtica en els nivells gratuïts).
Automatització i entrada de dadesLes importacions poden ser altament automatitzades, però requereixen una configuració personalitzada. És possible que hagis d'escriure o mantenir scripts o utilitzar importadors comunitaris per a cada banc o font de dades. No hi ha connexions bancàries directes (a part de les que tu creïs). Per tant, la configuració inicial de l'automatització requereix esforç. D'altra banda, una vegada configurat, pot ser totalment automatitzat sense entrada manual (com alguns usuaris han aconseguit amb un ~ 95 % d'automatització). També admet l'entrada manual per a coses que no es poden automatitzar (amb el formulari web de Fava o l'edició de text).Molt automatitzat per als feeds de bancs / targetes de crèdit (no cal programació – només connecta els teus comptes a QuickBooks). També suggereix categories automàticament (utilitzant dades passades i una mica de ML). "Cada transacció se sincronitza i se classifica instantàniament per a tu... QuickBooks recomana categories i es torna més intel·ligent amb el temps.". Aquest és un gran avantatge de comoditat – menys treball manual. No obstant això, l'automatització és principalment per a comptes financers; altres coses (com dividir una despesa en classes) encara podrien necessitar una revisió manual. A més, si el feed bancari falla, l'usuari ha de tornar a connectar-se o carregar fitxers.Power BI no tracta en absolut de l'entrada de dades – depèn de qualsevol automatització que tingui la font de dades. Si la teva font de dades és un full de càlcul manual, llavors no és en temps real. Si és una base de dades actualitzada per algun procés ETL, pot estar a prop del temps real. Per tant, l'automatització depèn del que introdueixis a Power BI. El mateix Power BI es pot programar per actualitzar les dades des de les fonts. En resum, Power BI pot reflectir bé les dades automatitzades, però no crea l'automatització (has de tenir una canalització de dades automatitzada que el nodreixi).
Col·laboració i comparticióLa col·laboració mitjançant text (p. ex., Git) és potent però tècnica. Diverses persones poden contribuir editant els fitxers del llibre major i fusionant els canvis. Fava es pot allotjar en mode de només lectura per compartir informes amb altres, però no té rols d'usuari ni control d'accés granulat de sèrie. Per a un usuari individual o un equip amb coneixements tècnics, està bé. Els auditors o comptables podrien necessitar l'exportació de dades (p. ex., un balanç de sumes i saldos a Excel) per treballar-hi si no se senten còmodes amb el format.Accés web multiusuari amb permisos (QuickBooks Online admet comptables i diversos usuaris de negoci amb rols). Compartició fàcil – el teu comptable pot iniciar sessió i veure els llibres en viu. Aquest és un punt fort per a les empreses. Per a les finances personals, el multiusuari és menys rellevant, però l'accés al núvol a través de dispositius és un avantatge (encara que també pots executar Fava en un núvol personal / VPS). QuickBooks també s'integra amb altres serveis (nòmines, préstecs bancaris, etc.), cosa que és útil per a les empreses i difícil de replicar a Beancount.Power BI destaca en compartir taulers, especialment si s'utilitza el Servei Power BI: pots publicar taulers per a col·legues, incrustar-los en llocs web (amb la llicència adequada), i així successivament. Està creat per a la col·laboració en la interpretació de dades. No obstant això, es tracta de compartir l'anàlisi en mode només lectura, no de l'edició col·laborativa de dades. Si diversos usuaris necessiten analitzar, poden fer-ho si se'ls dóna accés al projecte de BI. En resum, per comunicar resultats financers de manera vistosa a les parts interessades, Power BI és difícil de superar. Però no és comptabilitat col·laborativa; és anàlisi col·laborativa.
CostGratuït (codi obert). Pots dedicar-hi temps en lloc de diners (per a la configuració / manteniment). Allotjar Fava tu mateix podria tenir un cost insignificant (si és al teu PC o en un servidor barat). Sense tarifes de llicència per a usuaris addicionals.De pagament (subscripció mensual o anual). QuickBooks Online pot variar entre 20 imeˊsde70i més de 70 al mes segons el pla. També hi ha tarifes per a nòmines o funcions avançades. Moltes petites empreses ho paguen, ja que inclou suport i actualitzacions contínues. Però al llarg dels anys, el cost s'acumula. A més, si deixes de subscriure't, pots perdre l'accés total.Mixt. Power BI Desktop és gratuït, però la subscripció Pro (per compartir taulers) costa uns 10 $ / usuari / mes. Si ja el tens mitjançant un Office 365 o similar, llavors el cost addicional podria ser zero. Altres eines de BI varien (algunes de codi obert com Metabase són gratuïtes d'executar). No obstant això, cal tenir en compte el cost en temps de desenvolupament de solucions de BI i possiblement el cost de mantenir una base de dades o infraestructura al núvol per a això.

En resum, Beancount + Fava vs QuickBooks: Beancount ofereix una transparència superior (ho veus i ho controles tot, i les teves dades no desapareixeran ni quedaran bloquejades) i flexibilitat (pots modelar qualsevol cosa al llibre major, no només el que QuickBooks espera). Requereix més iniciativa pròpia, especialment per a l'automatització i els retocs de la interfície d'usuari. QuickBooks és una solució "clau en mà" optimitzada per a les necessitats de les petites empreses – feeds bancaris, facturació, nòmines (amb complements) – i proporciona actualitzacions gairebé en temps real amb un esforç mínim de l'usuari. No obstant això, és una caixa negra en molts aspectes; confies que el programari gestioni les teves dades correctament i, de vegades, això significa que és difícil corregir errors o entendre com s'ha arribat a una xifra. Molts usuaris de Beancount són persones que es van frustrar amb aquestes caixes negres. Canvien una mica de comoditat per claredat.

Beancount + Fava vs Power BI (o altres BI): Poden ser complementaris. Power BI no és un sistema comptable; és per a l'anàlisi. De fet, una configuració avançada podria utilitzar Beancount per consolidar i garantir la precisió de les dades, i després utilitzar Power BI per crear taulers executius a partir d'aquestes dades. Si els comparem directament, Power BI se centra més en la flexibilitat visual i la combinació de fonts de dades. Els gràfics de Fava són més senzills per disseny (centrats en les necessitats comptables) però requereixen molt menys treball per posar-se en marxa (funcionen directament amb el teu llibre major, sense necessitat de modelatge). Si el teu objectiu és purament obtenir informació i visuals atractius i estàs disposat a preparar les dades, una eina de BI podria ser adequada. Però si el teu objectiu és portar els llibres i obtenir informes interactius com a subproducte, Fava sol ser suficient.

També es podria comparar amb altres eines de finances personals (p. ex., Mint o YNAB) o sistemes ERP, però la pregunta esmenta específicament les plataformes d'analítica en temps real. En l'àmbit de les visualitzacions financeres en temps real: Beancount + Fava és com tenir un tauler de finances "en viu" personalitzat i de codi obert, QuickBooks és una comptabilitat automatitzada de codi tancat amb sincronització bancària en viu, i Power BI és una plataforma d'analítica flexible (no específica de finances, però es pot utilitzar per a finances si se li proporcionen dades).

Una cita reveladora que contrasta el codi obert amb el comercial: "Amb una mica d'esforç inicial, les eines de codi obert poden ser realment molt millors que les solucions comercials, i molt més flexibles i extensibles." Això resumeix el compromís. QuickBooks està polit i funciona directament per als escenaris comuns amb un esforç mínim. Però una vegada que vols alguna cosa que no fa, et trobes amb una paret. Amb Beancount, rarament et trobes amb una paret – tens el codi font i les dades, i pots ampliar o integrar segons sigui necessari. El cost és que has d'estar disposat a trastejar.

Pros i contres de l'ús de Fava i Beancount per a obtenir perspectives basades en dades

Finalment, sintetitzem els avantatges i els desavantatges de Beancount + Fava com a solució per a l'analítica financera:

Pros

  • Transparència i confiança: Tots els càlculs (totals, saldos) es deriven d'un llibre major en text pla que podeu inspeccionar. No hi ha comportaments misteriosos. Això genera una gran confiança en els números, quelcom crucial si s'hi basen les decisions. És una “comptabilitat neta i transparent” sense lligams de dependència (lock-in). Sempre podeu rastrejar una xifra informada fins a les transaccions subjacents, que és l'essència de les perspectives basades en dades.
  • Reproductibilitat i pista d'auditoria: Com que podeu utilitzar el control de versions per al llibre major, teniu una cronologia dels canvis. Si alguna cosa sembla incorrecta aquest mes, podeu comparar (diff) el llibre major per veure què ha canviat. Això també significa que podeu experimentar (“què passaria si reclassifiqués aquesta despesa?”) i desfer els canvis fàcilment. El treball basat en dades sovint implica iteracions, i un llibre major auditable ho fomenta.
  • Flexibilitat en l'anàlisi: No esteu limitats a informes preconfigurats. La combinació de consultes BQL, scripts de Python i els filtres de Fava permet respondre gairebé qualsevol pregunta financera. Voleu saber “Quant he gastat a Starbucks cada any durant els últims 5 anys?” – ho teniu a una consulta de distància. O “Quina és la mitjana mòbil de les meves despeses de 3 mesos en comparació amb els ingressos?” – es pot programar amb Python + pandas sobre una consulta. Aquesta flexibilitat és un gran avantatge per a aquells a qui els agrada aprofundir en les dades. Els usuaris avançats fins i tot han creat extensions per a calcular indicadors financers (per exemple, mètriques de rendiment de la cartera) dins de Fava. En resum, podeu obtenir perspectives molt detallades que molts programaris genèrics no poden oferir.
  • Integració i extensibilitat: El sistema de complements (plugins) de Fava i l'API accessible de Beancount fan que les eines puguin créixer segons les vostres necessitats. Si demà necessiteu fer el seguiment d'un nou tipus d'actiu o voleu integrar un nou flux de dades, podeu ampliar el sistema. L'arquitectura (entrada de text pla, sortides diverses) és molt extensible. Això contrasta amb els sistemes tancats on hauríeu de demanar una funcionalitat i esperar.
  • Consolidació de dades: Per a particulars i fins i tot empreses, poder consolidar tots els comptes (diversos bancs, corredors, etc.) en un sol sistema és molt potent. Moltes solucions comercials us aïllen (o cobren més per multi-divisa o múltiples entitats). Amb Beancount, podeu ajuntar-ho tot. Això ofereix una visió de dades holística, permetent obtenir perspectives globals. Per exemple, podríeu calcular la vostra assignació d'actius real o el flux de caixa net total entre l'àmbit personal i empresarial si volguéssiu, ja que només són entrades de dades.
  • Eficiència de costos: És gratuït i de codi obert. Per a l'ús personal, és un gran punt a favor (sense subscripcions com moltes aplicacions de pressupostos). Per a startups o petites organitzacions, aquest estalvi pot ser significatiu. Però més enllà del cost monetari, també és eficient en termes d'execució (Fava pot funcionar en un servidor molt petit) i de portabilitat (sense migracions costoses si el sistema se us queda petit – és només text).
  • Comunitat i intercanvi de coneixements: La comunitat de comptabilitat en text pla (Beancount, Ledger, etc.) és molt col·laborativa. La gent comparteix les seves configuracions, scripts personalitzats i consells en fòrums i blogs. Això significa que, si teniu una necessitat específica, és possible que algú ja hagi abordat una qüestió similar. Per exemple, diversos usuaris han contribuït amb eines d'importació intel·ligents i fins i tot categorització mitjançant aprenentatge automàtic (per exemple, la biblioteca “smart*importer” que utilitza scikit-learn per a categoritzar automàticament els beneficiaris basant-se en dades passades). Amb el temps, l'ús de Beancount pot esdevenir més intel·ligent si aprofiteu aquestes eines de la comunitat, apropant-se a la comoditat del programari comercial mentre manteniu la transparència.
  • Empoderament i aprenentatge: L'ús de Fava / Beancount us obliga a interactuar amb les vostres dades financeres a un nivell més profund. Molts usuaris informen que han obtingut una comprensió molt millor de les seves finances a través d'aquest sistema de la que mai van tenir amb aplicacions automatitzades. És una mica com la diferència entre cuinar el vostre propi menjar o comprar menjar ràpid – requereix més esforç, però sabeu exactament què conté i pot ser més saludable a llarg termini. Per a les perspectives basades en dades, aquesta “propietat” del procés pot portar a descobriments més significatius, perquè podeu emmarcar i reemmarcar fàcilment com mireu les dades.

Contres

  • Configuració inicial i corba d'aprenentatge: Siguem honestos – Beancount i Fava no són tan llestos per a usar (plug-and-play) com, per exemple, QuickBooks o Mint. Cal aprendre els conceptes bàsics de la comptabilitat per partida doble (si no els coneixeu), la sintaxi del fitxer Beancount i, possiblement, una mica de Python si voleu una personalització elevada. Aquesta inversió inicial pot ser una barrera. Per als usuaris no tècnics, pot ser descoratjador (tot i que la interfície de Fava ajuda molt en oferir una experiència més amigable un cop configurat). Per contra, moltes eines comercials amaguen els conceptes comptables darrere d'interfícies més senzilles (la qual cosa pot ser un avantatge i un desavantatge alhora).
  • Sense sincronització bancària integrada: Per disseny, no es connecta automàticament a les API bancàries (que sovint són privades o requereixen acords). Per tant, o bé descarregueu manualment els extractes o configureu la vostra pròpia automatització (mitjançant scripts de Python o serveis com Plaid, que sovint són de pagament). Per a aquells acostumats a què els canals bancaris “simplement funcionin”, això pot semblar un pas enrere. Com va assenyalar un usuari, en provar Beancount “no va trobar una manera raonable d'obtenir els canals bancaris” – això pot ser una frustració a menys que estigueu disposats a programar o a utilitzar solucions de tercers.
  • Temps real significa el vostre temps: Aconseguir una resposta en temps real és possible, però no de sèrie. Heu de configurar tasques cron o activadors tal com s'ha descrit. Si alguna cosa falla (per exemple, un banc canvia el seu format CSV), heu d'arreglar el vostre importador. Amb un servei com QuickBooks, el proveïdor s'encarrega d'aquests canvis. Essencialment, sou el vostre propi suport informàtic. Aquest és el clàssic intercanvi del codi obert. Per a un aficionat, això pot estar bé o fins i tot ser divertit; per al propietari d'una petita empresa ocupat, podria ser una molèstia.
  • Límits d'escalabilitat i rendiment: Per a conjunts de dades molt grans (molts anys de transaccions detallades), Beancount pot tornar-se més lent. Generalment és eficient (hi ha persones amb desenes de milers d'entrades sense problemes). Però, com es va veure en un fil de HN, un usuari va haver de “tancar llibres” anualment després de 3 anys a mesura que el fitxer creixia per a mantenir les consultes ràpides. El codi de Beancount v2 és Python i pot ser una mica lent per a dades massives, tot i que la v3 (en desenvolupament amb un nucli en C++) millora aquest aspecte. Hi ha solucions (dividir fitxers, utilitzar Beanpost per a descarregar a una base de dades, etc.), però és un factor a tenir en compte. Probablement QuickBooks té una escalabilitat interna i la majoria d'eines de BI estan construïdes sobre bases de dades pensades per a dades massives, de manera que podrien gestionar grans conjunts de dades amb més fluïdesa.
  • Manca de funcionalitats (en relació amb el programari dedicat): Beancount + Fava se centra en la comptabilitat i l'anàlisi. Li falten algunes funcions auxiliars: per exemple, no té processament de nòmines, ni generació de factures (sense scripts personalitzats), ni formularis de preparació d'impostos integrats, etc. Si el vostre objectiu és una gestió financera integral, és possible que hàgiu de complementar-ho amb altres eines. Per exemple, podríeu gestionar les nòmines a través d'un servei extern i simplement importar els assentaments al llibre diari. Això funciona, però no està tan integrat com un ERP que ho fa tot en un. Per a les finances personals, Beancount no té funcions com planificadors de pagament de deutes o pressupostos per sobres (tot i que es poden simular). S'espera que vosaltres n'extregueu les conclusions i prengueu decisions, en lloc de proporcionar consells prescriptius o mòduls de planificació.
  • Interfície d'usuari i poliment: Tot i que Fava és força agradable, no està tan polit ni guiat com algunes ofertes comercials. No hi ha cap “assistent” que us guiï en la configuració o asseguri que no cometeu errors. Potser haureu de llegir la documentació per saber com fer certes coses. I algunes funcions de la interfície que es podrien esperar (categorització per arrossegar i amollar, desfer en diversos passos, notificacions push al mòbil, etc.) no hi són. La interfície de Fava millora constantment (amb contribucions), però està construïda per una comunitat petita. Si esteu acostumats a les interfícies modernes i estilitzades del SaaS, Fava pot semblar una mica utilitària (tot i que alguns prefereixen la seva simplicitat neta). Al mòbil, Fava funciona (especialment en mode lectura), però no està totalment optimitzat per a pantalles petites; QuickBooks, per exemple, té aplicacions mòbils dedicades.
  • Dependència de la comunitat o del mantenidor: Martin Blais (autor de Beancount) i els col·laboradors mantenen Beancount, i d'altres mantenen Fava. El desenvolupament pot ser esporàdic (com és normal en el programari de codi obert). Tot i que el programari és molt usable actualment, si necessiteu una nova funcionalitat o hi ha un error, potser l'haureu d'arreglar vosaltres mateixos o esperar. Amb un producte de pagament, teniu un servei de suport a qui trucar (la qualitat varia, però almenys hi és). Dit això, la comunitat sol ser molt servicial a través de la llista de correu o les incidències de GitHub.
  • Es requereixen coneixements de comptabilitat: Especialment per a ús empresarial, cal saber què s'està fent. Beancount no us impedirà fer una entrada que sigui “incorrecta” des d'un punt de vista comptable (excepte si hi ha un desequilibri o una transacció sense correspondència). QuickBooks, en canvi, té barreres de seguretat (guardrails) i també una complexitat oculta com el seguiment automàtic d'ingressos diferits, etc., si els activeu. Si no aneu amb compte a Beancount, podríeu cometre un error en un merite i no adonar-vos-en fins que noteu un problema en un informe. Essencialment, Beancount assumeix que o bé teniu coneixements bàsics de comptabilitat o esteu disposats a aprendre'n. Això és realment un avantatge per a alguns (obliga a fer-ho bé), però un desavantatge si voleu un sistema que no requereixi pensar.

Per resumir els pros i els contres: Beancount + Fava proporciona un control i una adaptabilitat sense parangó per a aquells que volen interactuar profundament amb les seves dades financeres, convertint-se en una eina potent per a obtenir perspectives basades en dades. Converteix els vostres llibres en un conjunt de dades consultable i els vostres informes en una aplicació web extensible. El preu d'aquest poder és el treball que invertiu en configurar-lo i mantenir-lo, i la necessitat de ser una mica autosuficients en la gestió del vostre sistema. A diferència d'eines com QuickBooks o una suite de BI, que guien més i ofereixen certes funcions automàticament, Beancount us dóna un joc d'eines. Si teniu una mentalitat analítica, aquest joc d'eines pot ser increïblement alliberador – podeu extreure perspectives que els informes estàndard potser no mostrarien mai. Com va escriure un usuari que va automatitzar el seu llibre major de Beancount durant anys, “les eines de codi obert (com Beancount) no cobreixen totes les meves necessitats [de sèrie]… Estic obsessionat amb automatitzar-ho tot… Vaig construir el que necessitava”. Això resumeix l'enfocament: si esteu disposats a construir el que necessiteu, per petit o gran que sigui, Fava / Beancount us donarà suport i mai no us amagarà les vostres dades. Per a una mentalitat basada en dades, això és un avantatge enorme.

En conclusió, utilitzar Fava i Beancount per a l'analítica financera en temps real és una mica com tenir el vostre propi laboratori personalitzable per a les vostres finances. Obteniu claredat, flexibilitat i propietat que són difícils d'igualar amb plataformes privades, cosa que el fa ideal per a aquells que valoren aquests aspectes i estan disposats a sacrificar una mica de comoditat per obtenir-los. El panorama modern fins i tot mostra enfocaments híbrids – per exemple, alguns podrien utilitzar una eina comercial però exportar periòdicament a Beancount per a una anàlisi més profunda, o viceversa, utilitzar Beancount com a base principal i una eina de BI per a la presentació. Amb el coneixement d'aquesta investigació, un pot prendre una decisió informada sobre si Fava + Beancount s'alinea amb les seves necessitats i, si és així, procedir amb confiança a aprofitar les seves capacitats per a obtenir perspectives financeres riques i en temps real.

Fonts:

  • Blais, M. (2020). Documentació de BeancountPrincipis de disseny i ús. [En línia]. Disponible a: beancount.github.io
  • Aumayr, D., Gerstmayr, A. (2025). Documentació de Fava i repositori de GitHub. [En línia]. Disponible a: beancount.github.io/fava/ i github.com/beancount/fava
  • LowEndBox. (2025). “Beancount: Comptabilitat lleugera FOSS per partida doble... des de la línia d'ordres!” Tutorial de LowEndBox.
  • Fang-Pen Lin. (2024). “Els meus llibres de Beancount són automàtics al 95% després de 3 anys.” Entrada de blog personal.
  • Google Groups – Fòrum de Beancount. (2023). Discussió sobre la integració amb Grafana (Josh D. i Andreas G.)
  • Pàgina de màrqueting de QuickBooks. “Canals bancaris – Entengueu totes les vostres transaccions a l'instant.” Intuit QuickBooks.
  • Watt, A. (2023). “Beancount per a finances personals.” Blog d'Alex Watt.
  • Reddit – r/plaintextaccounting. Diverses discussions (2021-2023) sobre l'ús empresarial de Beancount i visualització de llibres majors.
  • Documentació de les extensions de FavaAjuda: Extensions.
  • fava-dashboards README de GitHub – Complement de taulers personalitzats d'Andreas Gerstmayr.
  • Llista Awesome Beancount – recursos seleccionats per la comunitat per a Beancount.