Managing Personal Finances using Python

Managing Personal Finances using Python

94433b33c02f51a7840ba7f2871a147c?s=128

Siddhant Goel

October 24, 2018
Tweet

Transcript

  1. Managing Personal Finances using Python Siddhant Goel  / 

    @siddhantgoel PyMunich October 2018
  2. Let's talk about money.

  3. What is my net worth?

  4. Where is my money going?

  5. How much do I owe others?

  6. Started questioning things earlier this year.

  7. Spend less Track more

  8. Number of solutions = O(∞) Mint.com YNAB Outbank GNUCash ...

  9. Proprietary ... mayyyyybe

  10. -based ... sorry, that's not happening

  11. Requirements Simple No cloud Ideally free Open source Hopefully Python

  12. #plaintextaccounting

  13. Double Entry Bookkeeping

  14. Beancount $ pip install beancount

  15. Big Fat Disclaimers ™ I'm not a nancial advisor Aim

    is to show you the tip of the iceberg Next slide may or may not contain some maths
  16. ∑(postings) = 0

  17. None
  18. None
  19. ; Date format - YYYY-MM-DD option "title" "Mustermann" option "operating_currency"

    "EUR" 2018-10-01 open Assets:DKB 2018-10-01 open Income:BigCorp 2018-10-01 open Expenses:Food 2018-10-01 open Expenses:Rent ; ... ; ... ; ... 2018-10-25 "*" "Überweisung BigCorp" Assets:DKB 3000.00 EUR Income:BigCorp -3000.00 EUR 2018-11-01 "*" "Miete" Assets:DKB -1500.00 EUR Expenses:Rent 1500.00 EUR 2018-11-02 "*" "Essen" Assets:DKB -50.00 EUR Expenses:Food 50.00 EUR 2018-10-26 balance Assets:DKB 3000.00 EUR 2018-11-03 balance Expenses:Food 50.00 EUR
  20. How to get started?

  21. Work ow     

  22. Beancount does not understand your CSV les? Write an importer.

  23. Sample Importer from beancount.core.amount import Amount from beancount.core.number import Number

    from beancount.ingest.importer import ImporterProtocol class SampleImporter(ImporterProtocol): # ... def identify(self, file_): """Check if file_ is from the bank we're supposed to work with """ # ... def extract(self, file_): """Read file_, and emit a list of beancount data structures """
  24. Fava: web UI for Beancount $ pip install fava

  25. None
  26. None
  27. Bean SQL SELECT month, SUM(position) FROM year = 2017 WHERE

    account ~ 'Expenses:Supermarket' GROUP BY month
  28. What's next? Envelope Budgeting Automating Downloads

  29. Resources https://plaintextaccounting.org https://www.reddit.com/r/plaintextaccounting https://aumayr.github.io/beancount-docs-static/ https://beancount.github.io/fava/ Slides https://bit.ly/sg-pymunich-2018

  30. Thank you for your time!  bit.ly/sg-pymunich-2018  / 

    @siddhantgoel  sgoel.org