Фінансова аналітика в реальному часі за допомогою Fava та Beancount
Вступ
Beancount — це система бухгалтерського обліку з подвійним записом і відкритим вихідним кодом, яка використовує прості текстові файли як книгу обліку. Вона наголошує на простоті, прозорості та гнучкості у відстеженні фінансів. Fava — це потужний веб-інтерфейс для Beancount, який надає інтерактивне середовище для перегляду звітів, візуалізацій та керування вашою книгою обліку. У цьому звіті ми розглянемо основні можливості Beancount та Fava, а також способи досягнення фінансової аналітики в реальному або близькому до реального часі за допомогою цих інструментів. Ми охопимо поради щодо налаштування автоматизації та оновлення даних, функції візуалізації Fava (для миттєвого перегляду грошових потоків і виявлення трендів), інтеграцію із зовнішніми дашбордами (Grafana, Metabase тощо), приклади кастомних панелей керування та плагінів, сценарії використання в особистих фінансах та малому бізнесі, порівняння з іншими платформами (Power BI, QuickBooks), а також переваги та недоліки використання Fava + Beancount для отримання інсайтів на основі даних.
Основні можливості Beancount та Fava
Beancount (Движок текстового обліку)
- Книга обліку з подвійним записом у простому тексті: Beancount зберігає транзакції в одному текстовому файлі
.beancount(або кількох об'єднаних файлах). Кожна транзакція повинна бути збалансованою (загальний дебет = загальному кредиту) між рахунками, що гарантує цілісність обліку. Формат простого тексту означає, що ваші дані зрозумілі людині, підтримують контроль версій і не мають прив’язки до конкретного постачальника. - Гнучкі ієрархічні рахунки: Ви можете визначати будь-які рахунки (наприклад,
Assets:Bank:Checking,Expenses:Food:Coffee) в ієрархії. Beancount не диктує структуру вашого плану рахунків, тому він підходить для особистих фінансів, обліку малого бізнесу, інвестицій тощо — він «гнучкий: працює для особистих фінансів, бухгалтерії малого бізнесу, криптоактивів, інвестицій в акції та багато чого іншого». - Мультивалютність та активи: Beancount має першокласну підтримку декількох валют та активів (наприклад, акції, криптовалюти). Ви можете записувати транзакції в різних валютах, визначати обмінні курси (директиви цін) і відстежувати базу витрат. Система може створювати звіти «за собівартістю» або «за ринковою вартістю», якщо надано дані про ціни. Це робить її придатною для портфельного управління та міжнародних фінансів.
- Автоматизовані перевірки та баланси: Система підтримує підтвердження балансу (ви можете заявити, яким має бути баланс рахунку на певну дату, і Beancount видасть помилку, якщо він не збігається) та балансуючі транзакції для закриття книг. Вона також підтримує вступні / підсумкові записи капіталу та розрахунок нерозподіленого прибутку для закриття періодів. Це допомагає забезпечити узгодженість ваших книг і вчасно виявляти помилки.
- Потужний движок запитів та звітності: Beancount постачається з мовою запитів BQL (Beancount Query Language) та інструментами командного рядка, такими як
bean-balance,bean-registerтаbean-queryдля створення звітів. Ви можете робити запити до книги обліку для створення кастомних звітів (наприклад, список витрат за одержувачем, рух грошових коштів за період) — фактично працюючи з книгою як із базою даних. Система працює швидко навіть із тисячами транзакцій і може експортувати дані в CSV або безпосередньо в Excel / LibreOffice (за допомогою додаткових модулів). - Розширюваність через плагіни: Beancount написаний на Python і дозволяє використовувати власні плагіни для розширення функціональності. Плагіни можуть впроваджувати додаткові правила або розрахунки під час обробки файлу. (Наприклад, існують плагіни для обробки податкових лотів або для контролю наявності вартості у кожн ій покупці). Система плагінів і Python API дозволяють досвідченим користувачам створювати власні сценарії поведінки або інтегрувати Beancount з іншими системами.
- Імпортери для зовнішніх даних: Ключовою практичною особливістю є фреймворк ingest від Beancount для імпорту даних (наприклад, із банківських виписок). Ви можете писати або використовувати плагіни-імпортери, які аналізують CSV, OFX, PDF-виписки тощо та конвертують їх у записи Beancount. Це критично важливо для автоматизації.
- Зручність для аудиту та контролю версій: Оскільки це звичайний текст, ви можете зберігати свою книгу обліку в Git або інших системах контролю версій. Кожна зміна є прозорою, і ви маєте повну історію редагувань. Це робить аудит або перегляд змін простим (багато користувачів фіксують зміни щодня в Git-репозиторій, створюючи захищений від несанкціонованих змін лог усіх фінансових записів). Такий рівень прозорості є головною відмінністю від закритих бухгалтерських програм — «ніякої прив'язки до SaaS — лише чистий, прозорий облік із потужною звітністю».
Fava (Веб-інтерфейс для Beancount)
- Інтерактивний веб-інтерфейс: Fava надає локальний веб-сервер, який візуалізує вашу книгу Beancount у вигляді насиченого інтерфейсу. Він відображає основні звіти (Звіт про прибутки та збитки, Балансовий звіт тощо), реєстри рахунків та журнали в браузері з інтерактивними елементами керування. Інтерфейс є динамічним і зручним у порівнянні з командним рядком. Ви запускаєте його простою командою
fava yourfile.beancountі отримуєте веб-додаток для вашої бухгалтерії. - Вбудовані графіки та діаграми: Fava створює графіки для візуалізації ваших даних. Наприклад, вона включає лінійну діаграму чистої вартості (Net Worth) у часі, стовпчикові діаграми доходів проти витрат за місяцями, а також кругові діаграми та карти дерева (treemaps) для деталізації витрат. Ці візуальні елементи оновлюються разом із вашими даними та підтримують різні режими перегляду (наприклад, «за собівартістю» проти «ринкової вартості» для інвестицій).
- Фільтрація та пошук: У верхній частині сторінок Fava є панель фільтрів, яка дозволяє сегментувати дані в реальному часі. Ви можете фільтрувати за часом (наприклад, рік, квартал, місяць), за регулярними виразами рахунків, за одержувачем, за описом або за тегами / посиланнями. Це полегшує інспекцію даних у реальному часі — наприклад, швидка фільтрація за «Tag=Travel» та «Year=2025» покаже всі витрати на подорожі у 2025 році з підсумковими сумами. Інтерфейс підтримує складні запити через цю панель або через сторінку запитів (Query), де ви можете безпосередньо виконувати BQL-запити.
- Підтримка декількох файлів та консолідація: Fava може завантажувати кілька файлів Beancount одночасно (корисно, якщо ви ведете окремі книги) і перемикатися між ними. Вона також може консолідувати їх за потреби (наприклад, спільний перегляд особистих і бізнес-рахунків).
- Введення та редагування даних: Унікальною особливістю Fava є те, що вона не призначена лише для читання — у неї є редактор та форма введення транзакцій. Ви можете додавати нові транзакції через веб-форму (вона вставить запис у ваш файл .beancount). Ви також можете відкрити вихідний файл у зовнішньому редакторі безпосередньо з Fava. Fava навіть підтримує клавіатурні скорочення у стилі Gmail (натисніть
?в інтерфейсі, щоб побачити їх) для досвідчених користувачів. Це перетворює Fava на легку бухгалтерську систему, де ви можете вводити та переглядати дані в одному інтерфейсі. - Звіти та деталізація рахунків: Fava надає стандартні бухгалтерські звіти: Звіт про прибутки та збитки (P&L), Балансовий звіт, Пробний баланс та список активів для інвестицій. Балансовий звіт та Звіт про прибутки та збитки є інтерактивними — ви можете натиснути на рахунок, щоб детально вивчити його транзакції, або перемикатися між переглядом за собівартістю чи ринковою вартістю. Fava також показує «нереалізований прибуток» для інвестицій за наявності цін. Вона генерує вигляд журналу всіх записів і дозволяє фільтрувати цей журнал за різними критеріями.
- Управління документами: Якщо ви додаєте квитанції або виписки, Fava допомагає їх організувати. Beancount має поняття папки документів, а Fava дозволяє перетягувати файли на рахунки або транзакції — вона збереже їх і додасть запис про документ у вашу книгу. Це корисно для зберігання підтверджуючих документів, пов'язаних із даними книги обліку.
- Кастомізація через розширення: Fava можна розширювати за допомогою плагінів (написаних на Python) для додавання нових звітів або функцій. Деякі розширення вже вбудовані (наприклад, звіт зі списком портфеля для інвестицій). Дизайн Fava дозволяє впроваджувати нові сторінки та навіть кастомний JavaScript через API розширень. Це означає, що якщо певний аналіз або дашборд не передбачений за замовчуванням, досвідчений користувач може його додати.
- Продуктивність: Fava працює ефективно — вона перезавантажує дані в пам'ять і швидко видає сторінки. Базовий парсинг Beancount досить швидкий (оптимізований на C++ в останніх версіях), тому навіть великі книги завантажуються за секунду або дві. На практиці Fava може обробляти особисті книги за багато років, хоча для надзвичайно великих файлів (десятки тисяч транзакцій) може знадобитися певна оптимізація (наприклад, архівування старих записів).
- Веб-доступ та мобільність: З апускаючи Fava на сервері або навіть на своєму ноутбуці, ви можете отримати доступ до своїх фінансів із будь-якого браузера. Деякі користувачі хостять Fava на приватному сервері або Raspberry Pi, щоб мати змогу перевіряти фінанси в дорозі (можливо, захистивши доступ паролем або VPN, оскільки Fava не має вбудованої автентифікації). Це фактично дає вам самохостинговий «веб-додаток» для ваших фінансів без передачі даних третім особам.
Підсумовуючи, Beancount забезпечує надійну основу для прозорого текстового обліку з суворими правилами подвійного запису та підтримкою мультивалютності. Fava доповнює це, пропонуючи доступний інтерфейс із миттєвими інсайтами (звіти, графіки) та можливістю взаємодії з вашими даними. Разом вони утворюють надзвичайно гнучку систему обліку та аналітики, яку ви контролюєте від початку до кінця.