2 puan yazan GN⁺ 2026-01-03 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2026-01-03
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

    • “Quicken tek taraflı bir muhasebe sistemi, bu yüzden para bir anda ortaya çıkabilir ya da kaybolabilir. Çift taraflı muhasebede bir hesaba para koymak için mutlaka başka bir hesaptan çıkarman gerekir” özeti gerçekten meselenin özünü çok iyi yakalıyor. Bu cümleyi quicken2beancount içinde görmüştüm
    • Çift taraflı muhasebeyi zor bulmuş olman ilginç. Aslında bütün işlemler aynı anda iki hesaba dokunur ve borç ile alacağın toplamı eşit olmalıdır; oldukça basit bir ilke. Grafik teorisinin bunu daha da basitleştirdiğini gözümde canlandırmak zor
    • Bahsettiğin için teşekkürler, Michael!
  • 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

    • “Yeniden girmek zorunda kaldım” derken neyi kastettiğini merak ettim. Ben 1992’den beri Quicken kullanıyorum ve sürüm değişse de verileri hiç yeniden girmem gerekmedi
    • Ben de Quicken’dan kurtulmak istiyorum ama Intuit bağımlılığı çok güçlü. 2000’den sonraki tüm işlemler özel bir formata kilitlenmiş durumda.
      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

    • “PTA’nın Veli-Öğretmen Derneği ile ne ilgisi var?” diye şaka yaptı
    • Konut kredisi muhasebeleştirmesi kafamı karıştırmıştı; o bağlantı bu konuda iyi bir açıklama sunuyor. O kod tabanını gerçekten kullanıp kullanmadığını, yoksa sadece prensipleri mi aldığını merak ediyorum. Haskell bilmediğim için ne kadar değişiklik gerektiğini de kestiremiyorum
  • 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

    • Ben de elektrik faturasını kWh bazında takip etmeyi denedim ama dürüst olmak gerekirse pek bir işe yaramadı 😂
    • Ben de LLM ile kişisel finans araçları yapmak istiyorum ama hassas verileri verme konusu beni düşündürüyor. Anonimleştirilmiş yerel bir modelle işlemek daha iyi olabilir
  • 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:

    • Muhasebe: önemli
    • Çift taraflı muhasebe: önemli
    • Cloud/lock-in’den kaçınmak: önemli
    • Özel formatlardan kaçınmak: önemli
    • plain text: önemli değil
      Ben GnuCash kullanıyorum; kusursuz değil ama bu felsefeye oldukça uyuyor
    • Muhasebede otomasyonun şart olduğunu düşünüyorum. Elle yapılan işler hataya çok açık ve doğruluk en yüksek öncelikli (P0) gereksinim
    • Ben de GnuCash’i hem seviyor hem nefret ediyorum. Arayüzü çok eskimiş. Keşke motoru bir kütüphane olarak ayırıp farklı arayüzlerde kullanabilsek
  • 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

    • Ben matematikçiyim, programcıyım ve aynı zamanda finans eğitimi aldım; bu yüzden çift taraflı muhasebeyi erken öğrendim. O soyut ve zarif sistemin gerçekten çok güzel olduğunu düşünüyorum.
      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
    • Çift taraflı muhasebe alışınca kolay ama başta öğrenme eğrisi dik.
      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
    • Kişisel finans için çift taraflı muhasebenin gereksiz ölçüde ağır olduğunu düşünüyorum.
      Benim için Excel spreadsheet mükemmel araç. Her hafta sadece ihtiyacım olan sayıları ekliyorum
    • Muhasebenin kolay göründüğü ama öğrenmesinin zor olduğu fikrine katılıyorum.
      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

    • Ben de benzerini yapıyorum. Aylık olarak hesap bakiyeleri, gelir, vergi, yatırım transferleri, barınma gideri ve sigortayı kaydediyorum. Bu kadarı mali durumumu anlamak için yeterli
    • Ben de eskiden plain text kullanıyordum ama evlendikten sonra ortak yönetim için spreadsheet’e geçtim.
      Yalnızca $100 üzeri harcamaları ayrıca kaydedip büyük masrafları takip ediyorum
    • Ben de hane bütçemi spreadsheet ile tutuyorum ama başkalarının parasını (tröst vb.) yönetirken hledger kullanıyorum. Çünkü çift taraflı muhasebe ve mutabakat gerekiyor
    • Otomasyon istiyorsanız Tiller’ı öneririm. Bankaya bağlanıp işlemleri otomatik olarak spreadsheet’e getiriyor ve bütçe şablonları da sunuyor
    • Ben de çok takıntılı değilim ama özel servisleri ya da ücretli uygulamaları sevmiyorum.
      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?

    • Hemen alttaki yorumda Fava önerilmiş
    • iPhone kullanıyorsanız MoneyStats uygulamasını öneririm. Güzel görünüyor ve kurulumu kolay, bu yüzden birlikte kullanmak için uygun
  • 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

    • Ben PDF ekstre ayrıştırıcılarını kendim yazdım. Bazılarını doğrudan PyMuPDF ile yaptım, bazılarını ise Claude’a örnek ekstre verip ürettirdim.
      Finans sektörü bu konuda gerçekten çok geride. Otomasyon giderek artıyor ama hâlâ harcanan emeğe göre getirisi düşük
    • Ben de bu sabah kurulumu tamamladım. İki haftada bir 18 hesabı gözden geçirmekten keyif aldığım için benim için büyük yük değil.
      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