پرش به محتوای اصلی

تجزیه و تحلیل مالی بلادرنگ با Fava و Beancount

مقدمه

Beancount یک سیستم حسابداری دوبل متن باز است که از فایل‌های متن ساده به عنوان دفتر کل استفاده می‌کند. این سیستم بر سادگی، شفافیت و انعطاف‌پذیری در ردیابی امور مالی تأکید دارد. Fava یک رابط کاربری تحت وب قدرتمند برای Beancount است که یک رابط تعاملی برای مشاهده گزارش‌ها، نمایش‌های تصویری و مدیریت دفتر کل شما ارائه می‌دهد. در این گزارش، قابلیت‌های اصلی Beancount و Fava و نحوه دستیابی به تجزیه و تحلیل مالی بلادرنگ یا تقریباً بلادرنگ با این ابزارها را بررسی می‌کنیم. ما نکات پیکربندی برای اتوماسیون و به‌روزرسانی داده‌ها، ویژگی‌های تجسم Fava (برای مشاهده فوری جریان نقدی و شناسایی روندها)، ادغام با داشبوردهای خارجی (Grafana، Metabase و غیره)، نمونه‌هایی از داشبوردها و پلاگین‌های سفارشی، موارد استفاده در امور مالی شخصی و کسب‌وکارهای کوچک، مقایسه‌ها با سایر پلتفرم‌ها (Power BI، QuickBooks) و مزایا و معایب استفاده از Fava + Beancount برای بینش‌های داده محور را پوشش می‌دهیم.

analytics

قابلیت‌های اصلی Beancount و Fava

Beancount (موتور حسابداری متن ساده)

  • دفتر کل دوبل در متن ساده: Beancount تراکنش‌ها را در یک فایل متنی .beancount (یا چندین فایل که با هم گنجانده شده‌اند) ذخیره می‌کند. هر تراکنش باید بین حساب‌ها متعادل باشد (مجموع بدهی‌ها = مجموع بستانکاری‌ها) و یکپارچگی حسابداری را تضمین کند. فرمت متن ساده به این معنی است که داده‌های شما قابل خواندن توسط انسان، قابل کنترل نسخه و به هیچ فروشنده‌ای وابسته نیستند.
  • حساب‌های سلسله مراتبی و انعطاف‌پذیر: می‌توانید هر حسابی (مثلاً Assets:Bank:Checking، Expenses:Food:Coffee) را در یک سلسله مراتب تعریف کنید. Beancount در مورد نمودار حساب‌های شما نظر خاصی ندارد، بنابراین برای امور مالی شخصی، دفاتر کسب‌وکارهای کوچک، سرمایه‌گذاری‌ها و غیره کار می‌کند - “انعطاف‌پذیر: برای امور مالی شخصی، حسابداری کسب‌وکارهای کوچک، رمز ارزها، سرمایه‌گذاری‌های سهام و موارد دیگر کار می‌کند.”
  • ارزها و کالا های متعدد: Beancount از ارزها و کالاهای متعدد (به عنوان مثال، سهام، رمز ارزها) پشتیبانی درجه یک دارد. می‌توانید تراکنش‌ها را در ارزهای مختلف ثبت کنید، نرخ‌های ارز (دستورالعمل‌های قیمت) را تعریف کنید و مبنای هزینه را ردیابی کنید. در صورت ارائه داده‌های قیمت، می‌تواند گزارش‌هایی را «به قیمت تمام شده» یا «به ارزش بازار» تولید کند. این امر آن را برای پورتفولیوها و امور مالی بین‌المللی مناسب می‌کند.
  • بررسی‌ها و تعادل‌های خودکار: این سیستم از ادعاهای تراز پشتیبانی می‌کند (می‌توانید اعلام کنید که تراز یک حساب در یک تاریخ مشخص باید چقدر باشد و اگر مطابقت نداشته باشد، Beancount خطا می‌دهد) و تراکنش‌های تراز برای بستن دفاتر. همچنین از ورودی‌های افتتاحیه/اختتامیه حقوق صاحبان سهام و محاسبه سود انباشته برای بستن دوره پشتیبانی می‌کند. این موارد به اطمینان از سازگاری دفاتر شما و تشخیص زودهنگام خطاها کمک می‌کنند.
  • موتور گزارش‌گیری و پرس و جو قدرتمند: Beancount دارای یک زبان پرس و جو BQL (زبان پرس و جو Beancount) و ابزارهای خط فرمان مانند bean-balance، bean-register و bean-query برای تولید گزارش‌ها است. می‌توانید دفتر کل را برای گزارش‌های سفارشی پرس و جو کنید (به عنوان مثال، فهرست هزینه‌ها بر اساس ذی‌نفع، جریان نقدی برای یک دوره) - اساساً دفتر کل را مانند یک پایگاه داده در نظر بگیرید. این کار حتی با هزاران تراکنش نیز سریع است و می‌تواند به CSV یا حتی مستقیماً به Excel/LibreOffice خروجی دهد (با افزونه‌های اختیاری).
  • قابلیت گسترش از طریق پلاگین‌ها: Beancount به زبان پایتون نوشته شده است و به پلاگین‌های سفارشی اجازه می‌دهد تا عملکرد آن را گسترش دهند. پلاگین‌ها می‌توانند هنگام پردازش فایل، قوانین یا محاسبات اضافی را اعمال کنند. (به عنوان مثال، پلاگین‌هایی برای رسیدگی به لات های مالیاتی یا اطمینان از عدم وجود هزینه برای هیچ خریدی وجود دارد.) سیستم پلاگین و API پایتون به کاربران پیشرفته اجازه می‌دهد رفتارهای سفارشی را اسکریپت کنند یا Beancount را با سایر سیستم‌ها ادغام کنند.
  • واردکننده‌ها برای داده‌های خارجی: یک ویژگی کلیدی عملی، چارچوب ingest Beancount برای وارد کردن داده‌ها (به عنوان مثال، از صورت‌حساب‌های بانکی) است. می‌توانید پلاگین‌های واردکننده‌ای را بنویسید یا از آنها استفاده کنید که عبارات CSV، OFX، PDF و غیره را تجزیه کرده و آنها را به ورودی‌های Beancount تبدیل می‌کنند. این برای اتوماسیون ضروری است (در این مورد بعداً بیشتر توضیح خواهیم داد).
  • قابل ممیزی و سازگار با کنترل نسخه: از آنجایی که متن ساده است، می‌توانید دفتر کل خود را در Git یا سایر کنترل نسخه‌ها نگهداری کنید. هر تغییری شفاف است و شما سابقه کاملی از ویرایش‌ها دارید. این کار ممیزی‌ها یا بررسی تغییرات را آسان می‌کند (بسیاری از کاربران تغییرات هر روز را در یک مخزن Git commit می‌کنند و یک گزارش دستکاری‌نشدنی از تمام ورودی‌های مالی ارائه می‌دهند). این سطح از شفافیت یک تمایز عمده از نرم‌افزارهای حسابداری بسته است - “بدون قفل شدن در SaaS - فقط حسابداری تمیز و شفاف با گزارش‌گیری قدرتمند.”

Fava (رابط وب برای Beancount)

  • رابط کاربری وب تعاملی: Fava یک سرور وب محلی ارائه می‌دهد که دفتر کل Beancount شما را به یک رابط کاربری غنی تبدیل می‌کند. این رابط، گزارش‌های اصلی (صورت سود و زیان، ترازنامه و غیره)، دفاتر حساب و ژورنال‌ها را در مرورگر با کنترل‌های تعاملی نمایش می‌دهد. این رابط کاربری در مقایسه با خط فرمان، پویا و کاربرپسند است. شما آن را با یک دستور ساده fava yourfile.beancount شروع می‌کنید و یک برنامه وب برای دفاتر خود دریافت می‌کنید.
  • نمودارها و چارت‌های داخلی: Fava نمودارهایی را برای کمک به تجسم داده‌های شما تولید می‌کند. به عنوان مثال، شامل یک نمودار خطی خالص دارایی در طول زمان، نمودارهای میله‌ای برای درآمد در مقابل هزینه‌ها در ماه و نمودارهای دایره‌ای/درختی برای تجزیه و تحلیل هزینه‌ها است. این تصاویر با داده‌های شما به‌روز می‌شوند و از نماهای مختلف پشتیبانی می‌کنند (به عنوان مثال، «به قیمت تمام شده» در مقابل «ارزش بازار» برای سرمایه‌گذاری‌ها). بعداً این قابلیت‌های تجسم را با جزئیات بررسی خواهیم کرد.
  • فیلتر کردن و جستجو: در بالای صفحات Fava، یک نوار فیلتر به شما امکان می‌دهد داده‌های خود را در زمان واقعی برش داده و خرد کنید. می‌توانید بر اساس زمان (به عنوان مثال، سال، فصل، ماه)، بر اساس عبارت منظم حساب، بر اساس ذی‌نفع، بر اساس شرح یا بر اساس برچسب‌ها/پیوندها فیلتر کنید. این کار، بازرسی داده‌ها در زمان واقعی را آسان می‌کند - به عنوان مثال، به سرعت به «Tag=Travel» و «Year=2025» فیلتر کنید تا تمام هزینه‌های سفر در سال 2025 را با مجموع‌ها مشاهده کنید. این رابط از طریق این نوار فیلتر یا از طریق صفحه پرس و جو (جایی که می‌توانید مستقیماً پرس و جوهای BQL را اجرا کنید) از پرس و جوهای پیچیده پشتیبانی می‌کند.
  • پشتیبانی از چند فایل و ادغام: Fava می‌تواند چندین فایل Beancount را به طور همزمان بارگیری کند (اگر دفاتر کل را جدا کنید مفید است) و بین آنها جابجا شود. در صورت نیاز می‌تواند آنها را ادغام کند (به عنوان مثال، دفاتر کل شخصی و تجاری که با هم مشاهده می‌شوند).
  • ورود و ویرایش داده‌ها: به طور منحصربه‌فرد، Fava فقط خواندنی نیست - دارای یک ویرایشگر و فرم ورود تراکنش است. می‌توانید تراکنش‌های جدید را از طریق یک فرم وب اضافه کنید (ورودی را در فایل beancount. شما درج می‌کند). همچنین می‌توانید فایل منبع را در یک ویرایشگر خارجی از Fava باز کنید. Fava حتی از میانبرهای صفحه‌کلید “به سبک Gmail” پشتیبانی می‌کند (برای مشاهده آنها، ? را در رابط کاربری فشار دهید) برای کاربران قدرتمند. این Fava را به یک سیستم حسابداری سبک تبدیل می‌کند که در آن می‌توانید داده‌ها را از همان رابط وارد و مشاهده کنید.
  • گزارش‌ها و بررسی جزئیات حساب: Fava گزارش‌های حسابداری استاندارد را ارائه می‌دهد: صورت سود و زیان (سود و زیان)، ترازنامه، تراز آزمایشی و فهرست دارایی‌ها برای سرمایه‌گذاری‌ها. ترازنامه و صورت سود و زیان تعاملی هستند - می‌توانید برای بررسی جزئیات آن، روی یک حساب کلیک کنید یا بین مشاهده ارزش به قیمت تمام شده و ارزش بازار برای دارایی‌ها جابجا شوید. Fava همچنین در صورت داشتن داده‌های قیمت، «سودهای تحقق نیافته» را برای سرمایه‌گذاری‌ها نشان می‌دهد. این رابط یک نمای ژورنال از تمام ورودی‌ها ایجاد می‌کند و به شما امکان می‌دهد آن ژورنال را بر اساس معیارهای مختلف فیلتر کنید (برای یافتن تراکنش‌های خاص عالی است).
  • مدیریت اسناد: اگر رسید یا صورت‌حسابی را پیوست کنید، Fava به سازماندهی آنها کمک می‌کند. Beancount مفهومی از پوشه اسناد دارد و Fava به شما امکان می‌دهد فایل‌ها را روی حساب‌ها یا تراکنش‌ها بکشید و رها کنید - آنها را ذخیره می‌کند و یک ورودی سند در دفتر کل شما اضافه می‌کند. این برای نگه‌داشتن اسناد پشتیبانی مرتبط با داده‌های دفتر کل شما مفید است.
  • سفارشی‌سازی از طریق افزونه‌ها: Fava را می‌توان با پلاگین‌ها (نوشته شده به زبان پایتون) گسترش داد تا گزارش‌ها یا عملکردهای جدید اضافه شود. برخی از افزونه‌ها به‌صورت بسته‌بندی شده ارائه می‌شوند (به عنوان مثال، یک گزارش فهرست پورتفولیو برای سرمایه‌گذاری‌ها). بعداً در مورد افزونه‌های سفارشی بحث خواهیم کرد، اما اساساً طراحی Fava به شما امکان می‌دهد صفحات جدید و حتی جاوا اسکریپت سفارشی را از طریق API افزونه خود تزریق کنید. این بدان معناست که اگر تجزیه و تحلیل یا داشبورد خاصی داخلی نباشد، یک کاربر پیشرفته می‌تواند آن را اضافه کند.
  • عملکرد: Fava کارآمد است - داده‌ها را در حافظه دوباره بارگیری می‌کند و صفحات را به سرعت ارائه می‌دهد. تجزیه زیربنایی Beancount بسیار سریع است (در آخرین نسخه در C++ بهینه شده است)، بنابراین حتی دفاتر کل بزرگ نیز در یک یا دو ثانیه بارگیری می‌شوند. در عمل، Fava می‌تواند دفاتر کل شخصی را برای سال‌های زیادی مدیریت کند، اگرچه فایل‌های بسیار بزرگ (ده‌ها هزار تراکنش) ممکن است از بهینه‌سازی بهره‌مند شوند (به عنوان مثال، بایگانی ورودی‌های قدیمی).
  • دسترسی وب و قابلیت جابجایی: با اجرای Fava بر روی یک سرور یا حتی لپ‌تاپ خود، می‌توانید از هر مرورگری به امور مالی خود دسترسی داشته باشید. برخی از کاربران Fava را روی یک سرور خصوصی یا Raspberry Pi میزبانی می‌کنند تا بتوانند امور مالی خود را در حال حرکت بررسی کنند (احتمالاً آن را پشت یک رمز عبور یا VPN ایمن می‌کنند، زیرا Fava دارای تأیید هویت داخلی نیست). این اساساً یک «برنامه وب» خود میزبانی شده برای امور مالی شما به شما می‌دهد، بدون اینکه داده‌های خود را به شخص ثالثی بدهید.

به طور خلاصه، Beancount یک پایه قوی برای حسابداری شفاف و مبتنی بر متن با قوانین دقیق دوبل و پشتیبانی از چند ارز ارائه می‌دهد. Fava با ارائه یک رابط قابل دسترس با بینش‌های فوری (گزارش‌ها، نمودارها) و توانایی تعامل با داده‌های شما، بر این اساس بنا می‌شود. این دو با هم یک سیستم حسابداری و تجزیه و تحلیل بسیار انعطاف‌پذیر را تشکیل می‌دهند که شما آن را به طور کامل کنترل می‌کنید.

تجزیه و تحلیل بلادرنگ (یا تقریباً بلادرنگ) با Beancount و Fava

دستیابی به تجزیه و تحلیل بلادرنگ یا تقریباً بلادرنگ با Beancount و Fava شامل خودکارسازی جریان داده‌ها به دفتر کل شما و اطمینان از نمایش اطلاعات به‌روز توسط ابزارها است. به‌طور پیش‌فرض، Beancount یک فرآیند دسته‌ای است (ورودی‌ها را به فایل اضافه می‌کنید، سپس گزارش‌ها را مشاهده می‌کنید) و Fava تغییرات را تشخیص می‌دهد و نیاز به تازه‌سازی دارد. با این حال، با راه‌اندازی صحیح، می‌توانید به‌روزرسانی‌ها را ساده کنید تا تراکنش‌ها و تغییرات جدید تقریباً فوراً ظاهر شوند.

تشخیص تغییر فایل: Fava فایل دفتر کل را برای تغییرات نظارت می‌کند. اگر فایل .beancount (یا فایل‌های شامل) را در یک ویرایشگر ویرایش کنید، Fava یک بنر «تغییرات شناسایی شد - برای بارگیری مجدد کلیک کنید» نشان می‌دهد. پس از کلیک (یا فشار دادن بارگیری مجدد)، داده‌ها را دوباره بارگیری می‌کند و نما را به‌روز می‌کند. در عمل، این بارگیری مجدد بسیار سریع است (معمولاً برای دفاتر کل معمولی کمتر از یک ثانیه). این بدان معناست که Fava می‌تواند به عنوان یک داشبورد زنده در صورتی که فایل دفتر کل شما به طور مکرر به‌روزرسانی شود، عمل کند. (در حالت اشکال‌زدایی، Fava حتی می‌تواند با تغییرات فایل، به‌طور خودکار دوباره بارگیری شود، اگرچه به‌طور پیش‌فرض منتظر تأیید کاربر است تا از مختل کردن نمای شما جلوگیری کند.)

خط لوله واردات/به‌روزرسانی مداوم: برای دریافت داده‌های بلادرنگ، باید اضافه کردن تراکنش‌ها به فایل Beancount را خودکار کنید. چند استراتژی رایج وجود دارد:

  • مشاغل واردات زمان‌بندی شده (Cron): بسیاری از کاربران یک کار cron (یا کار برنامه‌ریزی‌شده) را برای واکشی تراکنش‌های جدید از مؤسسات مالی به‌صورت دوره‌ای (مثلاً هر شب یا هر ساعت) و پیوست کردن آنها به دفتر کل تنظیم می‌کنند. به عنوان مثال، ممکن است از پلاگین‌های واردکننده Beancount برای گرفتن آخرین تراکنش‌های بانکی از طریق API یا دانلود OFX استفاده کنید. یکی از کاربران Beancount یک خط لوله اتوماسیون ساخته است که دفاتر او خود را به‌روزرسانی می‌کنند: “دیدن اینکه دفتر حسابداری من بدون دست زدن من به آن در یک فرمت باز به‌روزرسانی می‌شود، لذت خالصی به من می‌دهد”. این امر با اتصال به APIهای بانکی و برنامه‌ریزی به‌روزرسانی‌های منظم به دست آمد. ابزارهایی مانند bean-fetch (برای OFX) یا اسکریپت‌های پایتون سفارشی با استفاده از APIهای بانکی (به عنوان مثال، Plaid) می‌توانند طبق یک برنامه اجرا شوند و ورودی‌های جدید را در دفتر کل بنویسند. پس از هر واردات برنامه‌ریزی‌شده، اگر Fava را در حال اجرا دارید، می‌توانید به سادگی Fava را تازه‌سازی کنید تا داده‌های جدید را ببینید.

  • ناظران فایل و محرک‌ها: به جای برنامه‌های زمان‌بندی‌شده، می‌توانید از ناظران فایل برای واکنش نشان دادن به رویدادها استفاده کنید. به عنوان مثال، اگر بانک شما می‌تواند هر روز یک صورت‌حساب را برای شما ایمیل کند یا یک CSV را در یک پوشه رها کنید، یک اسکریپت می‌تواند آن فایل را تشخیص دهد (با استفاده از inotify در لینوکس یا مشابه آن) و بلافاصله روال واردات را اجرا کند، سپس به Fava سیگنال دهد تا دوباره بارگیری شود. در حالی که Fava هنوز از فشار دادن یک بارگیری مجدد زنده به مرورگر پشتیبانی نمی‌کند، حداقل داده‌ها را به‌روزرسانی کرده‌اید تا دفعه بعد که صفحه را بررسی می‌کنید یا روی بارگیری مجدد کلیک می‌کنید، جاری باشد. برخی از پروژه‌های انجمن فراتر می‌روند: برای ledger (یکی از بستگان Beancount)، یک کاربر یک سرور کوچک ایجاد کرد که داده‌های ledger را در زمان واقعی به Grafana نمایش می‌دهد، و نشان می‌دهد که یک رویکرد مشابه را می‌توان با Beancount اتخاذ کرد - اساساً یک دیمون ساخت که به‌طور مداوم داده‌ها را به داشبوردهای شما تغذیه می‌کند.

  • ادغام مستقیم API: به جای عبور از فایل‌ها، کاربران پیشرفته ممکن است مستقیماً به APIهای بانکی (مانند Plaid یا APIهای بانکی باز منطقه‌ای) متصل شوند تا تراکنش‌ها را به طور مکرر بکشند. یک فرد باانگیزه می‌تواند واردات «زنده» را در یک حلقه (با محدودیت نرخ مناسب) اسکریپت کند - به طور موثر هر چند دقیقه یک‌بار بانک را برای داده‌های جدید نظرسنجی کند. هیچ چیز مانع از این نمی‌شود که “با Plaid API ثبت‌نام کنید و همان [اتوماسیون] را به صورت محلی انجام دهید”. هر تراکنش جدید را می‌توان هنگام رسیدن به فایل Beancount پیوست کرد. با این رویکرد، Fava واقعاً به یک داشبورد بلادرنگ برای حساب‌های شما تبدیل می‌شود و با فید به‌روز در برنامه‌های تجاری رقابت می‌کند.

تازه‌سازی داده‌ها در Fava: هنگامی که داده‌های شما به‌روزرسانی می‌شوند، وادار کردن Fava به نمایش آن آسان است: یک تازه‌سازی مرورگر (F5) یا کلیک کردن روی بنر بارگیری مجدد، آخرین وضعیت دفتر کل را بارگیری می‌کند. اگر ترجیح می‌دهید حتی کلیک نکنید، اجرای Fava با --debug یک بارگیری مجدد خودکار را برای توسعه افزونه فعال می‌کند که برخی از آن برای اجبار بارگیری مجدد فوری صفحه در هنگام تغییرات استفاده کرده‌اند. از طرف دیگر، اگر در حال ساخت یک رابط کاربری سفارشی هستید، می‌توانید آن را طوری تنظیم کنید که یک API کوچک را نظرسنجی کند که آخرین تراز را از دفتر کل طبق یک برنامه برمی‌گرداند.

محاسبات فوری: تجزیه سریع Beancount به این معنی است که حتی اگر فایل دفتر کل خود را هر چند دقیقه یک‌بار به‌روزرسانی کنید، بازه زمانی از واکشی داده‌ها ← به‌روزرسانی فایل ← بارگیری مجدد Fava سریع است. به عنوان مثال، یک کاربر اشاره می‌کند که بارگیری مجدد Fava پس از ویرایش فایل «به سختی قابل توجه است... قطعاً کمتر از یک ثانیه» برای دفاتر کل با اندازه معقول است. بنابراین، می‌توانید یک پنجره Fava را باز نگه دارید و به طور دوره‌ای روی تازه‌سازی ضربه بزنید تا یک داشبورد زنده را تقلید کنید. (برای یک تجربه واقعاً زنده، می‌توان یک اسکریپت کوچک برای تازه‌سازی خودکار مرورگر یا استفاده از ویژگی تازه‌سازی هر N ثانیه مرورگر ایجاد کرد.)

تطبیق و هشدارها: برای اعتماد به داده‌های بلادرنگ، می‌خواهید ترازها را نیز به طور مکرر تطبیق دهید. Beancount این کار را با ادعاهای تراز و یک نشانگر «به روز» آسان می‌کند. در واقع، Fava نشانگرهای رنگی را در کنار حساب‌ها ارائه می‌دهد اگر آنها را با فراداده خاصی علامت‌گذاری کنید (به عنوان مثال، می‌توانید یک حساب را با فراداده fava-uptodate علامت‌گذاری کنید و Fava بسته به اینکه آخرین ورودی یک بررسی تراز اخیر باشد، آن را قرمز/زرد/سبز می‌کند). این می‌تواند برای دیدن سریع اینکه آیا تراز یک حساب در دفتر کل با آخرین صورت‌حساب از بانک مطابقت دارد یا خیر استفاده شود. در یک تنظیم تقریباً بلادرنگ، ممکن است بررسی تراز روزانه را خودکار کنید (بنابراین هر روز صبح، دفتر کل تراز اختتامیه دیروز را از بانک برای هر حساب داشته باشد). سپس نشانگر Fava به شما می‌گوید که آیا واردات خودکار شما چیزی را از دست داده است یا اینکه اختلافی وجود دارد، و به شما اطمینان می‌دهد که داده‌های «زنده» که می‌بینید دقیق هستند.

نمونه اتوماسیون: فرض کنید به‌روزرسانی‌های روزانه جریان نقدی می‌خواهید. می‌توانید یک کار cron را طوری تنظیم کنید که هر شب ساعت 3 صبح اجرا شود: یک اسکریپت پایتون را اجرا می‌کند که از API بانک شما برای واکشی تراکنش‌های روز گذشته استفاده می‌کند، آنها را در import_today.beancount می‌نویسد و سپس آن فایل را به دفتر کل اصلی شما پیوست می‌کند. همچنین یک ادعای تراز را برای پایان روز می‌نویسد. وقتی از خواب بیدار می‌شوید، Fava را باز می‌کنید - همه تراکنش‌ها را تا دیروز نشان می‌دهد و درآمد/هزینه‌های ماه جاری به‌روزرسانی شده را می‌بینید. اگر در طول روز هزینه‌ای انجام می‌دهید، می‌توانید آن را به صورت دستی اضافه کنید (به عنوان مثال، از طریق فرم تراکنش جدید Fava در تلفن خود) یا منتظر واردات شبانه بمانید. این رویکرد ترکیبی (بیشتر خودکار، با قابلیت اضافه کردن دستی موردی) یک تصویر نزدیک به زمان واقعی ارائه می‌دهد. یک رویکرد دیگر این است که صفحه Journal Fava را باز بگذارید و از آن به عنوان یک دفتر ثبت استفاده کنید: همانطور که هزینه می‌کنید، تراکنش را به سرعت ثبت می‌کنید (مانند وارد کردن در یک دفتر چک) - سپس شما_ فید زمان واقعی _هستید. این دستی‌تر است، اما برخی از کاربران از آگاهی‌ای که به ارمغان می‌آورد لذت می‌برند. برای به‌روزرسانی‌های واقعاً جریانی بدون مراحل دستی، باید در اسکریپت‌نویسی سرمایه‌گذاری کنید و احتمالاً از APIهای شخص ثالث استفاده کنید که در بالا مورد بحث قرار گرفت.

به طور خلاصه، با ترکیب اتوماسیون واردات Beancount با تازه‌سازی سریع Fava، می‌توانید داده‌های مالی تقریباً بلادرنگ دریافت کنید. ممکن است دستیابی به همان سطح از فید زنده مانند سرویسی مانند QuickBooks (که به طور خودکار فیدهای بانکی را می‌کشد) "آسان با فشار یک دکمه" نباشد، اما امکان‌پذیر است - و مهمتر از آن، شما کنترل و شفافیت کامل فرآیند را حفظ می‌کنید. همانطور که یکی از مدافعان حسابداری متن ساده اشاره کرد، کمی تلاش در ابتدا می‌تواند یک سیستم خودکار ایجاد کند که “بسیار بهتر از راه حل‌های تجاری و بسیار انعطاف‌پذیرتر و قابل گسترش‌تر” است. در بخش بعدی، خواهیم دید که چگونه قابلیت‌های تجسم Fava به شما این امکان را می‌دهد که فوراً این داده‌های به‌روز را درک کنید و تراکنش‌های خام را به بینش تبدیل کنید.

قابلیت‌های تجسم در Fava (جریان‌های نقدی، روندها، بازرسی بلادرنگ)

(GitHub - beancount/fava: Fava - رابط وب برای Beancount) گزارش صورت سود و زیان Fava (در رابط کاربری وب) از تجسم‌های غنی مانند درختواره‌ها (تصویر) و نمودارهای سانبرست برای بینش سریع در مورد ترکیب درآمد و هزینه‌ها پشتیبانی می‌کند. در این درختواره، هر مستطیل نشان دهنده یک دسته هزینه است که اندازه آن بر اساس مقدار آن است - می‌توانید فوراً ببینید که اجاره (بلوک سبز بزرگ) بر هزینه‌ها غالب است. نوار و کنترل‌های فیلتر بالا (بالا سمت راست) به شما امکان می‌دهد ارز، نوع نمودار و دوره زمانی را تغییر دهید (به عنوان مثال، مشاهده داده‌های ماهانه). Fava همچنین نمودارهای خطی (به عنوان مثال، خالص دارایی در طول زمان) و نمودارهای میله‌ای (به عنوان مثال، درآمد در مقابل هزینه‌ها بر اساس ماه) را برای کمک به شناسایی روندها در داده‌های مالی شما ارائه می‌دهد.

یکی از بزرگترین نقاط قوت Fava تبدیل داده‌های دفتر کل به گزارش‌های بصری و تعاملی به صورت فوری است. به محض بارگیری دفتر کل، Fava نمودارهایی را تولید می‌کند که درک جریان‌های نقدی و روندها را در یک نگاه آسان می‌کند:

  • درختواره/سانبرست درآمد و هزینه‌ها: در صفحه صورت سود و زیان، Fava می‌تواند درآمد و هزینه‌های شما را به صورت یک درختواره یا نمودار سانبرست نمایش دهد. اینها برای تجسم جریان نقدی "در یک نگاه" عالی هستند. به عنوان مثال، اگر هزینه‌های ماهانه شما به صورت یک درختواره نشان داده شوند، مساحت هر مستطیل مربوط به مقدار هر دسته هزینه است. بلوک‌های بزرگ بلافاصله نشان می‌دهند که بیشتر پول شما کجا رفته است (به عنوان مثال، اجاره یا وام مسکن، مالیات و غیره)، در حالی که بلوک‌های کوچکتر هزینه‌های جزئی را نشان می‌دهند. این برای شناسایی روندها در هزینه‌ها بسیار مفید است - اگر بلوک "غذا خوردن در بیرون" هر ماه در حال افزایش باشد، آن را به صورت بصری متوجه خواهید شد. می‌توانید به یک نمودار سانبرست جابجا شوید تا تجزیه و تحلیل‌های سلسله مراتبی را ببینید (به عنوان مثال، حلقه بیرونی ممکن است زیرشاخه‌هایی مانند مواد غذایی در مقابل رستوران‌ها را در دسته غذا نشان دهد). این نمودارها برای هر دوره‌ای که فیلتر کرده‌اید (یک ماه، سال به تاریخ و غیره) به‌روز می‌شوند و تجسم فوری جریان نقدی را برای آن دوره به شما می‌دهند. یک کاربر در انجمن حسابداری متن ساده اشاره کرد: “من استفاده زیادی از درختواره‌های درآمد و هزینه می‌کنم. آنها حس بصری خوبی از حرکات مالی ما می‌دهند.” - این نوع درک فوری دقیقاً همان چیزی است که نمودارهای Fava هدف آن هستند.

  • خالص دارایی و تراز در طول زمان: Fava یک نمودار خطی برای خالص دارایی در طول زمان ارائه می‌دهد (در صفحه «ترازنامه» یا «آمار»). این نمودار مجموع دارایی‌های شما منهای بدهی‌ها را در هر نقطه زمانی (بر اساس روز، هفته یا ماه) ترسیم می‌کند. برای شناسایی روندها بسیار ارزشمند است - می‌توانید مسیر امور مالی خود را ببینید (به عنوان مثال، به طور پیوسته رو به بالا، یا کاهش در زمان‌های خاص). اگر سرمایه‌گذاری دارید، می‌توانید بین نشان دادن ارزش به قیمت تمام شده در مقابل ارزش بازار جابجا شوید (اگر داده‌های قیمت ثبت شده باشند) - به عنوان مثال، ممکن است ببینید خالص دارایی شما به ارزش بازار با قیمت سهام نوسان می‌کند، در حالی که به قیمت تمام شده هموارتر است. Fava همچنین می‌تواند تراز حساب‌ها را در طول زمان نمایش دهد. اگر روی یک حساب (مثلاً Assets:Bank:Checking) کلیک کنید، صفحه حساب نموداری از تاریخچه تراز آن حساب را نشان می‌دهد. می‌توانید فوراً بررسی کنید که چگونه حساب نقدی شما در حال حرکت است - که در واقع یک نمودار جریان نقدی است (شیب خط تراز نشان دهنده جریان نقدی خالص است). اگر روند آن رو به پایین باشد، می‌دانید که در آن دوره بیشتر از درآمد خود هزینه می‌کنید. با بررسی این روندها، ممکن است الگوهایی مانند "هر دسامبر پس انداز من کاهش می‌یابد (هزینه‌های تعطیلات)" یا "سرمایه‌گذاری‌های من در این سه ماهه به شدت رشد کرده است" را شناسایی کنید.

  • نمودارهای میله‌ای برای مقایسه دوره‌ای: در نمای صورت سود و زیان، Fava دارای برگه‌هایی برای "سود ماهانه"، "درآمد ماهانه"، "هزینه‌های ماهانه" و غیره است. انتخاب این موارد نمودارهای میله‌ای را بر اساس ماه نشان می‌دهد. به عنوان مثال، سود خالص ماهانه مازاد/کسری هر ماه را به صورت یک میله نشان می‌دهد و مقایسه عملکرد بین ماه‌ها را آسان می‌کند. می‌توانید به سرعت نقاط پرت را شناسایی کنید (به عنوان مثال، یک میله منفی بزرگ در آوریل به این معنی است که آن ماه ضرر/هزینه غیرعادی داشته است). به طور مشابه، نمودار میله‌ای «هزینه‌های ماهانه» هزینه‌ها را بر اساس دسته در هر ماه جمع می‌کند یا گروه‌بندی می‌کند، بنابراین می‌توانید ببینید کدام دسته‌ها نوسان دارند. این برای شناسایی روندها در طول زمان عالی است - به عنوان مثال، ممکن است متوجه شوید که هزینه‌های "سفر" شما هر تابستان افزایش می‌یابد، یا قبوض "آب و برق" در زمستان بیشتر است. Fava اساساً برخی از قابلیت‌های یک برنامه بودجه‌بندی (ردیابی روندها) را به شما می‌دهد، اما با قابلیت سفارشی‌سازی کامل (از آنجایی که شما دسته‌ها و نحوه جمع‌آوری آنها را تعریف می‌کنید).

  • فیلتر کردن بلادرنگ و بازرسی داده‌ها: تجسم‌ها در Fava ثابت نیستند. آنها در کنار فیلتر Fava کار می‌کنند. فرض کنید می‌خواهید یک سناریوی خاص را بررسی کنید: "جریان‌های نقدی سه ماهه من برای حساب‌های تجاری من چگونه به نظر می‌رسند؟" می‌توانید فیلتر زمانی را روی Q1 2025 تنظیم کنید و حساب‌ها را به سلسله مراتب کسب و کار خود فیلتر کنید - Fava فوراً نمودارها را به‌روز می‌کند تا سود خالص، درختواره هزینه‌ها و غیره را نشان دهد، اما فقط برای آن زیر مجموعه. این برش تعاملی به این معنی است که می‌توانید تجزیه و تحلیل موردی را به سرعت انجام دهید، بدون نوشتن پرس و جو. نمای Journal نیز از فیلتر کردن زنده پشتیبانی می‌کند: می‌توانید بر اساس ذی‌نفع یا زیررشته شرح جستجو کنید و بلافاصله یک لیست فیلتر شده از تراکنش‌ها را ببینید. اگر به داده‌های بلادرنگ نگاه می‌کنید (به عنوان مثال، اخیراً تراکنش‌های هفته گذشته را وارد کرده‌اید)، می‌توانید بر اساس برچسبی مانند #uncategorized فیلتر کنید تا تراکنش‌های جدیدی را ببینید که ممکن است نیاز به دسته‌بندی داشته باشند، یا بر اساس @pending (اگر ورودی‌های در حال انتظار را علامت‌گذاری کنید) تا ببینید چه چیزی هنوز تسویه نشده است. این قابلیت بازرسی بلادرنگ به اطمینان از کیفیت داده‌ها نیز کمک می‌کند - زیرا می‌توانید ناهنجاری‌ها را در پرواز جدا کرده و به آنها رسیدگی کنید.

  • صورت جریان نقدی (غیر مستقیم): در حالی که Beancount/Fava یک صورت جریان نقدی رسمی (تجزیه و تحلیل عملیاتی/سرمایه‌گذاری/تامین مالی) خارج از جعبه تولید نمی‌کند، می‌توانید آن را با پرس و جوهای سفارشی یا با ساختاربندی حساب‌ها تقلید کنید. به عنوان مثال، می‌توانید تراکنش‌های خاص را برچسب‌گذاری کنید یا از حساب‌های خاص برای سرمایه‌گذاری و تامین مالی استفاده کنید، سپس مجموع‌ها را پرس و جو کنید. رابط پرس و جو Fava به شما امکان می‌دهد یک پرس و جو BQL مانند: SELECT sum(amount) WHERE account ~ "Assets:Bank" AND year = 2025 را برای دریافت جریان نقدی برای سال و غیره اجرا کنید. گفته می‌شود، اکثر کاربران شخصی ترکیب روندهای تراز و نمودارهای درآمد/هزینه را برای درک جریان‌های نقدی کافی می‌دانند.

  • نگه داری و تجسم پورتفولیو: در صفحه Holdings، Fava لیست نگه داری‌های فعلی شما از کالاها (به عنوان مثال، سهام، اوراق قرضه، رمز ارزها) را با مقادیر، هزینه، ارزش بازار و سودهای تحقق نیافته فهرست می‌کند. در حالی که این یک جدول است، نه یک نمودار، برای بازرسی بلادرنگ وضعیت پورتفولیو شما بسیار مفید است. برخی از افزونه‌ها (مانند fava-investor، که بعداً مورد بحث قرار می‌گیرد) تصاویر بیشتری را برای پورتفولیوها اضافه می‌کنند، مانند نمودارهای دایره‌ای تخصیص یا نمودارهای عملکرد. حتی بدون افزونه‌ها، می‌توانید به عنوان مثال ببینید که ارزش پورتفولیو سهام شما از آخرین قیمت‌ها چگونه تغییر می‌کند - اگر قیمت‌ها را به طور منظم به‌روزرسانی کنید (که می‌تواند روزانه خودکار شود)، نمودارهای Fava ارزش بازار به‌روز سرمایه‌گذاری‌های شما را منعکس می‌کنند.

در عمل، گزارش‌های تصویری Fava به همان سرعتی که داده‌های زیربنایی به‌روز می‌شوند. به محض اضافه شدن یک تراکنش جدید و بارگیری مجدد صفحه، نمودارها دوباره محاسبه می‌شوند. هیچ پردازش مجدد طولانی مورد نیاز نیست. این بدان معناست که اگر یک خط لوله نیمه خودکار دارید که در طول روز داده‌ها را تغذیه می‌کند، می‌توانید Fava را باز نگه دارید و به طور دوره‌ای روی تازه‌سازی ضربه بزنید تا نمودارهای به‌روز شده را دریافت کنید - به طور موثر نظارت مالی بلادرنگ.

به عنوان مثال، تصور کنید که یک کسب و کار کوچک را اداره می‌کنید و می‌خواهید وجه نقد در دسترس و هزینه‌های روزانه را نظارت کنید. می‌توانید Fava را در یک داشبورد سفارشی باز کنید (شاید با استفاده از یک افزونه یا صفحه پرس و جو) که "تراز حساب نقدی امروز" و "هزینه‌ها - امروز در مقابل دیروز" را نشان می‌دهد. هر بار که پس از ورود داده‌های جدید تازه‌سازی می‌کنید، آن اعداد را به‌روزرسانی شده می‌بینید. این شبیه به چیزی است که داشبوردهای بلادرنگ گران قیمت ارائه می‌دهند، اما با استفاده از ابزارهای متن باز. تفاوت این است که ممکن است نیاز به تازه‌سازی دستی یا برنامه‌ریزی تازه‌سازی داشته باشید، در حالی که آن ابزارها به‌طور خودکار به‌روزرسانی‌ها را فشار می‌دهند. اما از نظر عملکردی، بینشی که به دست می‌آورید یکسان است، با این مزیت که می‌توانید در هر شماره‌ای در Fava جزئیات بیشتری را بررسی کنید (روی آن کلیک کنید تا تراکنش‌های زیربنایی را ببینید) - چیزی که بسیاری از داشبوردهای BI فاقد آن هستند.

به