{"id":1134,"date":"2016-10-22T15:57:09","date_gmt":"2016-10-22T19:57:09","guid":{"rendered":"http:\/\/www.craigperler.com\/blog\/?p=1134"},"modified":"2024-06-06T23:25:56","modified_gmt":"2024-06-07T03:25:56","slug":"tracking-personal-finances","status":"publish","type":"post","link":"https:\/\/www.craigperler.com\/blog\/2016\/10\/22\/tracking-personal-finances\/","title":{"rendered":"Tracking Personal Finances"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignleft\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"700\" src=\"https:\/\/i0.wp.com\/www.craigperler.com\/blog\/wp-content\/uploads\/2016\/10\/pexels-photo.jpg?resize=1024%2C700&#038;ssl=1\" alt=\"pexels-photo\" class=\"wp-image-1135\" srcset=\"https:\/\/i0.wp.com\/www.craigperler.com\/blog\/wp-content\/uploads\/2016\/10\/pexels-photo.jpg?resize=1024%2C700&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.craigperler.com\/blog\/wp-content\/uploads\/2016\/10\/pexels-photo.jpg?resize=300%2C205&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.craigperler.com\/blog\/wp-content\/uploads\/2016\/10\/pexels-photo.jpg?resize=768%2C525&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.craigperler.com\/blog\/wp-content\/uploads\/2016\/10\/pexels-photo.jpg?resize=1440%2C985&amp;ssl=1 1440w, https:\/\/i0.wp.com\/www.craigperler.com\/blog\/wp-content\/uploads\/2016\/10\/pexels-photo.jpg?w=2320&amp;ssl=1 2320w, https:\/\/i0.wp.com\/www.craigperler.com\/blog\/wp-content\/uploads\/2016\/10\/pexels-photo.jpg?w=3480&amp;ssl=1 3480w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>I spend a few hours every month, neurotically tracking personal finances for me and my family. \u00a0At the end of every month, I go through each of our accounts and move each transaction to a spreadsheet that holds every\u00a0penny, aggregated by category, organized into balances, and that shows how we&#8217;re doing month-to-month. \u00a0I&#8217;ve been doing this for 8 years.<\/p>\n\n\n\n<p>Yes, it takes a long time to do this &#8211; a few hours each month. &nbsp;I&#8217;ve tried the alternatives though: Quicken, Mint, and Personal. &nbsp;None of these&nbsp;products does everything I want. &nbsp;In particular, none of them seamlessly connects to all of my accounts electronically. &nbsp;My family has several checking and savings accounts, retirement accounts, credit cards, etc&#8230; While most personal finances connect without any issues to Chase, not all consistently can pull back, for example, my wife&#8217;s NYC Teachers Retirement balances.<\/p>\n\n\n\n<p>It&#8217;s been&nbsp;a while since I used Quicken, but I recall it was pain dealing with dividends and anything investment related. &nbsp;With Mint, I was never able to get all of my accounts in sync. &nbsp;There&#8217;s a particular way I want to look at my balances, and the only way to get there is to control it directly myself.<\/p>\n\n\n\n<h2 id=\"nothing-beats-excel\" class=\"wp-block-heading\">Nothing Beats Excel<\/h2>\n\n\n\n<h3 id=\"transactions\" class=\"wp-block-heading\">Transactions<\/h3>\n\n\n\n<p>So I have a big-ass spreadsheet. &nbsp;On one tab are transactions. &nbsp;Each transaction from each account gets put here.&nbsp;Each transaction is categorized into one of a few high-level buckets: Food, Entertainment, Clothing, Mortgage, etc&#8230; Once a transaction is categorized, the spreadsheet learns (via VLOOKUP) how to categorize that payee\/payer thereafter. &nbsp;A pivot table overlays the transactions enabling a view of&nbsp;spending by category, month-to-month.<\/p>\n\n\n\n<h3 id=\"balances\" class=\"wp-block-heading\">Balances<\/h3>\n\n\n\n<p>A second worksheet holds&nbsp;another pivot table of the transactions, but this time cumulatively aggregated by account, month-to-month. &nbsp;This table shows how much we have, owe, and gained\/lost per account from one month to the next. &nbsp;Each account is categorized as Asset, Liability or Mortgage, which allows the pivot table to group things appropriately.<\/p>\n\n\n\n<p>One perhaps unique thing I do with investments is add dummy entries that mark my holdings to market at end-of-month. &nbsp;If I own some stock that&#8217;s tanked this month, I want my balances to account for this; however, as the balances are entirely driven by the transactions, the only way to reconcile things is to create entries for Unrealized Gains\/Losses. &nbsp; At one point, I was downloading prices directly into the spreadsheet, but I didn&#8217;t gain any value from that.<\/p>\n\n\n\n<h3 id=\"investments\" class=\"wp-block-heading\">Investments<\/h3>\n\n\n\n<p>A third worksheet holds our budget. &nbsp;There are three tables here. &nbsp;The first table is a forecast &#8211; for our fixed and known expenses, it projects out what we can expect to be spending month-to-month. &nbsp;The second table holds our actual spending, for just those transactions relevant to the budget. &nbsp;That is, it doesn&#8217;t make sense to include dividends received in the budget, so each transaction has to know whether it should or shouldn&#8217;t be included in the budget dataset. &nbsp;Lastly, a third table combines the projection with the actual data, showing how far or close we are to meeting our&nbsp;goals.<\/p>\n\n\n\n<p>A fourth worksheet holds some meta-data about the accounts, and a fifth contains&nbsp;a dashboard summarizing the whole thing (Net Worth and Budget vs Spent).<\/p>\n\n\n\n<h2 id=\"scraping-support\" class=\"wp-block-heading\">Scraping Support?<\/h2>\n\n\n\n<p>I&#8217;ve tried replicating this spreadsheet on Google Sheets and on Apple Numbers. &nbsp;Both of these pale in comparison to Excel. &nbsp;If&nbsp;there&#8217;s enough interest in a blank template of this thing, I can put that together.<\/p>\n\n\n\n<p>Along the way I worked on\u00a0automating this whole thing: <a href=\"https:\/\/www.craigperler.com\/blog\/2016\/10\/24\/on-web-scraping\/\">scrape<\/a> my transactions, store them in a database, throw in some visuals, and I don&#8217;t have to deal with the spreadsheet any longer. \u00a0I found that scraping transactions from 30 or so accounts sucks. \u00a0By the time I got my Chase <a href=\"https:\/\/www.craigperler.com\/blog\/2016\/11\/05\/web-scraping-part-4-scrapy\/\">scraper<\/a> working, they changed their website. \u00a0It&#8217;s understandable\u00a0how companies like <a href=\"https:\/\/www.yodlee.com\/\">Yodlee<\/a> can stay in business. \u00a0That said, my code for this process provides a solid framework should anyone want to take a similar stab for themselves. \u00a0The repository is available on github <a href=\"https:\/\/github.com\/cperler\/accounting\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I spend a few hours every month, neurotically tracking personal finances for me and my family. \u00a0At the end of every month, I go through each of our accounts and&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1135,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[149],"tags":[],"powerkit_post_featured":[],"class_list":{"0":"post-1134","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-finance-trading"},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.craigperler.com\/blog\/wp-content\/uploads\/2016\/10\/pexels-photo.jpg?fit=4430%2C3029&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p1SwZ6-ii","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/posts\/1134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/comments?post=1134"}],"version-history":[{"count":3,"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/posts\/1134\/revisions"}],"predecessor-version":[{"id":1614,"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/posts\/1134\/revisions\/1614"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/media\/1135"}],"wp:attachment":[{"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/media?parent=1134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/categories?post=1134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/tags?post=1134"},{"taxonomy":"powerkit_post_featured","embeddable":true,"href":"https:\/\/www.craigperler.com\/blog\/wp-json\/wp\/v2\/powerkit_post_featured?post=1134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}