- Beancount kullanarak 10 yıl boyunca kişisel finansı düz metin dosyaları halinde kaydetti; yaklaşık 45.000 satır veri ve 10.000 işlemi yönetti
- Her ay 30–45 dakika ayırarak banka ekstresi CSV dosyalarını içe aktarıp manuel ve otomatik olarak düzenledi; okunabilirliği korumak için dosyaları yıllara göre ayırdı
- Alman bankaları için Python tabanlı importer kütüphanelerini bizzat geliştirip Beancount ile entegre etti; bunların bir kısmını hâlâ bakımda tutuyor
- Beancount'a yeni başlayanların yaşadığı zorlukları görerek başlangıç seviyesine yönelik bir giriş rehberi yazdı; toplulukta olumlu değerlendirmeler aldı
- Tüm veriler kendi yerel cihazında ve Git deposunda saklandığı için, belirli bir uygulama ya da hizmete kıyasla daha yüksek süreklilik ve kontrol sağlıyor
10 yıllık Beancount defterinin yapısı
- 2016'dan beri finans verilerini Beancount ile yönetiyor; toplam 45.011 satırlık kayıt 16 adet
.beancount dosyasında tutuluyor
- Merkezde
main.beancount dosyası bulunuyor; yıllık dosyalar include yöntemiyle buna bağlanıyor
- Toplam işlem sayısı yaklaşık 9.895, bunların içindeki posting (muhasebe satırı) sayısı ise 19.743
- Toplam 1.086 hesap (account) var; ancak bunlar gerçek banka hesapları değil, sanal sınıflandırma hesaplarından oluşuyor
- Örnek: süpermarket harcamaları, gelir, abonelik hizmetleri gibi ayrıntılı kalemler için hesap oluşturulabiliyor
- 507 PDF belgesi işlemlere eklenmiş durumda; böylece vergi beyanı sırasında ilgili makbuzlar kolayca bulunabiliyor
- Yıllara göre posting sayısı 2016'da 715 iken 2023'te 2.651'e çıktı; en yoğun yıl 2023 olarak kaydedildi
Aylık yönetim süreci
- Her ay yaklaşık 30–45 dakika ayırarak banka ekstrelerini CSV olarak indirip Beancount'a aktarıyor
- CSV, PDF'ye göre parse edilmesi daha kolay olduğu için tercih ediliyor
- Python tabanlı importer, CSV verisini Beancount biçimine dönüştürüyor
- Dönüştürülen işlemleri
.beancount dosyasına ekledikten sonra, çift taraflı kayıt ilkesine göre bakiyeyi sıfıra getirecek şekilde ayarlıyor
- Bir kısmı otomatik sınıflandırılıyor, bir kısmı ise manuel olarak düzeltiliyor
- Yeni yıl başladığında bir önceki yılın işlemlerini
<year>.beancount dosyasına taşıyor ve main.beancount içine dahil ederek yönetiyor
- Tüm işlem geçmişi tek bir dizin içindeki metin dosyalarında düzenli şekilde tutuluyor
Alman bankaları için Beancount Importer geliştirme
- Beancount, banka ekstresi biçimlerini varsayılan olarak tanımadığı için, dönüştürme işlemi importer sınıfı üzerinden yapılıyor
- Alman banka hesapları kullandığı için birden fazla importer'ı kendisi geliştirdi
- İlk üç kütüphane bugün de aktif olarak korunuyor ve kullanılıyor
Kullanıcıdan yazara
- Beancount dokümantasyonu kapsamlı olsa da, yeni başlayanlar için giriş bariyeri yüksek
- Deneme-yanılma süreciyle edindiği deneyime dayanarak bir giriş rehberi yazdı
- personalfinancespython.com adresinde yayımlandı
- Beancount resmi belgelerindeki external contributions sayfasında anılıyor
- Okuyucu yorumlarında olumlu geri dönüşler aldı
Sonuç
- Tüm finans verileri Git ile sürüm kontrolü yapılan yerel metin dosyaları olarak saklanıyor
- Veriler kendi cihazında bulunuyor ve belirli bir uygulama ya da hizmete bağımlı değil
- Beancount ekosistemindeki araçlarla veriler serbestçe analiz edilebiliyor
- Bu plaintext accounting yaklaşımı, herhangi bir uygulamadan daha uzun ömürlü olabilecek güçlü bir finans yönetimi biçimi
1 yorum
Hacker News yorumları
OP’nin kitabına tamamen katılıyorum. Şimdiye kadar gördüklerim arasında Beancount / plaintext accounting kavramını anlamak için en iyi giriş kitabıydı
Ben de hayatım boyunca çift taraflı muhasebeyi tam anlayamamıştım; ancak Martin Kleppman’ın "Accounting for Computer Scientists" yazısını okuduktan sonra kafamda oturdu. Grafik teorisiyle açıklama biçimi şaşırtıcı derecede sezgiseldi
Eskiden Quicken kullanıyordum ama her sürüm değiştiğinde verileri yeniden girmek zorunda kaldığım için sonunda GNU Cash’e geçtim. Fakat onda da geçiş sorunları vardı
Sonra plaintext accounting (PTA) ile tanıştım ve hledger’ı seçtim (Beancount’ta performans sorunu olabilir diye düşündüm). Çift taraflı muhasebeyi öğrenince beklediğimden daha basit geldi.
PDF olarak gelen yatırım ekstrelerini ve maaş bordrolarını Python betikleriyle ayrıştırıyor, banka/kart CSV’lerini otomatik sınıflandıracak şekilde işliyorum; böylece büyük kısmı otomatikleşti.
Ayda yaklaşık bir saat ayırarak yatırım raporu, bütçe ve vergi özeti üretiyorum.
plain text olduğu için format değişse bile veriler güvende kalıyor ve git ile sürüm kontrolü de yapılabiliyor.
Dezavantajı mobilde çalışmaması ve biraz teknik bilgi gerektirmesi. Ama para akışını önemseyen biri için doğru çözüm bu
Yine de Quicken’ın otomatik senkronizasyon özelliği hâlâ sınıfının en iyisi, bu yüzden yerine bir şey koymak zor. 27 hesabı her gün kontrol edip dolandırıcılık ya da hataları yakalıyorum; CSV’leri her seferinde indirip elle işlemek tam bir kâbus.
Üstelik artık bankalar OFX’i kapatıp aracı merkez olarak Intuit kullanma eğiliminde, bu da kaçışı giderek zorlaştırıyor
Kişisel finansı bir proje derleme sistemi gibi yönetme fikrini full-fledged-hledger sayesinde öğrendim
Finans kurumlarından gelen ham veriyi olduğu gibi saklıyor, betiklerle CSV’ye dönüştürüyor, sonra da bir kural dosyasıyla PTA kayıtlarına eşliyorum.
Böyle yapınca dönüştürme mantığını ya da sınıflandırma kurallarını değiştirirsem bütün geçmiş veriler otomatik olarak güncelleniyor.
Başlangıçta bir aylık veriyle başlayıp zamanla genişletebilirsiniz — örneğin Amazon sipariş geçmişi veya Paypal makbuzları da eklenebilir
Ben birkaç yıldır Beancount kullanıyorum.
Bu yıl OP gibi yıllara göre dosya yapısına geçtim. Eskiden 2 milyon satırlık tek bir dosyam vardı ama Emacs eklentisi yavaşlamaya başlamıştı.
Bu yaklaşımın avantajı her şeyi izleyebilmek — yatırımlar, emeklilik, RSU, banka hesapları vb. Hatta elektrik tüketimini (kWh) bile modelleyebilirsiniz.
Son dönemde LLM kullanan otomasyon araçları da çok geliştiriyorum. Örneğin Claude ile işlem kural motorunu arayüzü olan bir uygulamaya dönüştürdüm. Eskiden günler sürecek bir işti
Sanırım birçok kişi plain text ile çift taraflı muhasebeyi birbirine karıştırıyor.
Beancount ikisini de destekliyor ama çift taraflı muhasebe bilmeden de plain text muhasebe yapılabilir.
Yine de çift taraflı muhasebe bilgiyi sistematik hâle getirmek için harika bir araç, bu yüzden öğrenmeyi öneririm.
plain text’in kendi başına faydası konusunda biraz şüpheliyim. Bu daha çok cloud bağımlılığı ya da vendor lock-in’den kaçınma refleksi gibi geliyor ama yerelde özgür yazılımla çift taraflı muhasebe yapmak zaten yeterli.
Benim vardığım sonuç şu:
Ben GnuCash kullanıyorum; kusursuz değil ama bu felsefeye oldukça uyuyor
Kısa süre önce PTA’ya başladım ama giriş bariyeri epey yüksek.
Önce çift taraflı muhasebeyi öğrenmeniz, sonra da ledger-cli / hledger / beancount arasından birini seçmeniz gerekiyor. Aralarındaki farklar ince ve belirleyici olan çoğunlukla topluluk ya da dokümantasyon kalitesi.
Sonrasında hangi hesaplardan veri alacağınızı, ne kadar geçmiş veriyi dahil edeceğinizi, otomatik içe aktarıcıyı nasıl kuracağınızı düşünmeniz gerekiyor.
hledger DSL kullanıyor, Beancount ise Python kullanıyor. Zamanın büyük kısmı elle düzenlemeye gidiyor.
Sonra bütçe, vergi, eşle paylaşım gibi yeni sorular ortaya çıkıyor.
Ama bu soruları kendiniz fark etmeye başlamanın PTA’nın asıl değeri olduğunu düşünüyorum.
Her yıl emeklilik, sigorta, internet faturası, yeni iş teklifi gibi sayısız finansal karar verirken, kendi ekonomimi ayrıntılı biçimde anlıyor olmak büyük güç sağlıyor
10 yıldır ledger-cli ve Emacs kullanıyorum, daha önce GnuCash de kullandım.
Başlangıç için yazdığım bir çift taraflı muhasebe kitabı da var
2018’den beri PTA kullanıyorum ve deneme-yanılma sürecinden çıkardığım çok ders oldu.
Ticari servisler sadece bazı hesapları gösteriyor ama PTA ile tüm finans akışını eksiksiz anlayabiliyorsunuz.
Örneğin şirketten aldığınız hissenin satılıp banka hesabına yatana kadar olan tüm kökenini (provenance) izleyebilirsiniz
Benim için Excel spreadsheet mükemmel araç. Her hafta sadece ihtiyacım olan sayıları ekliyorum
Literatür çelişkili ve anlaşılması güç, hatta muhasebecilerin bile kavramları bazen yanlış anladığı oluyor
Ben 20 yıldır sade bir yöntemle spreadsheet üzerinden finansımı yönetiyorum.
Ayda yaklaşık 5 dakika güncelliyorum ve elektrik, ısınma, sigorta, birikim gibi temel kalemleri takip ediyorum.
Amacım harcama eğilimlerini görmek ve yıllık bütçeyi garantiye almak. Artan para varsa onu da harcıyorum
Yalnızca $100 üzeri harcamaları ayrıca kaydedip büyük masrafları takip ediyorum
Banka/kart CSV’lerini her ay indirip Python betikleriyle analiz ediyorum.
LLM’in yazdığı kodla mağaza bazlı harcama eğilimlerini inceliyorum ve bir kartı yalnızca düzenli ödemelere ayırarak değişimleri daha kolay fark ediyorum
Beancount için GUI frontend olan Fava’yı öneririm
https://beancount.github.io/fava/
Tüm hesapları görselleştiriyor; arama/sorgu arayüzü ve gerçek zamanlı düzenleme özelliği çok kullanışlı
Bu sistem gerçekten çok havalı görünüyor ama teknik olmayan bir partnerle birlikte finans yönetirken bunun nasıl yapılacağını merak ediyorum.
Biz YNAB kullanıyoruz; arayüzü temiz ve birlikte kullanması kolay. Beancount için de böyle bir arayüz oluşturulabilir mi?
Ben de bir ara PTA’ya sardım ve kayıt tutmaya başladım ama birden fazla bankadan işlemleri elle indirmek fazla zahmetli
Herkes otomasyon çözüm diyor ama pratikte bunu nasıl yaptıklarını merak ediyorum — Plaid benzeri API’ler mi kullanıyorlar, yoksa web scraper ya da PDF parser mı yazıyorlar?
Sonunda YNAB’a yılda 130 dolar ödüyorum. Eş memnuniyeti de yüksek ve her şey otomatik bağlı.
Belki YNAB API ile verileri yedekleyip PTA’yı paralel olarak da sürdürebilirim
Finans sektörü bu konuda gerçekten çok geride. Otomasyon giderek artıyor ama hâlâ harcanan emeğe göre getirisi düşük
Eskiden YNAB kullanıyordum ama yinelenen işlem sorunu sık sık çıkıyordu, sonunda bıraktım.
Üç kez sıfırlamama rağmen hata devam etti ve sonunda yeniden elle takibe döndüm.
Şimdi PTA çok daha stabil ve kontrolün bende olduğu hissini veriyor