Financial Planner
A system to project finances, layering different accounts, constraints and strategies
Overview
I've always planned my finances in a spreadsheet, which works extremely awesomely (because spreadsheets rule) until it doesn't, and it becomes unworkable to update and 'branch' with different options. I've done lots of fits and starts and making a software package to do the same and this is the next one.
What the software should do
My spreadsheet normally works like this:
First column is a running month/year column, with a row for each month. Each subsequent column has running totals for these months
Net Worth
A section of columns for net worth.. total net worth, then broken down by (Property, Liquid, Retirement, Debt)
Income
A section of columns for income, my takehome, my wife's takehome, and other income rolled up
Spend allocation
A break down of how that takehome gets allocated:
- A configured 'discretionary' spend - this is basically a lump value for month budget not including 'non-discretionary' spend, i.e. debt servicing, required mortgage payments, etc
- A total 'non-discretionary' spend - this is the sum of all the non-discretionary spend, which is broken down in other sections
Surplus allocation
A breakdown of surplus allocation according to some strategy I have encoded, for example I've had schemes such as:
- Prioritize paying off my HELOC (variable APR) up to some maximum amount per month, then put everything in taxable brokerage
- Prioritize paying into my 529 for 6 months, then back to paying off HELOC, then put everything into taxable brokerage from then on
Example Scenarios
Here are some scenarios I have used this for
- Simple check in on whether our family budget is going to lead us to our goals
- Consider big financial decisions such as job changes, 429 investments, decide on things like prepaying a mortgage vs investing in a taxable account, how much to put in tax deferred retirement accounts
- Using net worth at target dates along with target retirement dates and target retirement spend to see how things go
What didn't work well
- Adding new accounts - e.g. what if we bought a second property
- Visibility into where the money was going without reading and holding all formulas in your head
- Debugging errors
- Explaining the results to my wife
- No modeling of taxes, makes that hard to compare
- Inflation sort of washed out, not sure that is valid
So here's what I want
A projection system that lets me configured my current accounts, mortgages, investments, etc, then projects network at different times in the future. I want to be able to make different projections where one is a copy of the other but with some changes, and see the different outcomes easily (graphically)
User-Facing Conceptual Model
Accounts
Income Accounts
- Represents different sources of income
Named Monthly Income
- Have a set amount
- Start and stop on different days,
- Have a growth function
- constant rate
- based on a defined time curve (later functionality)
Spend Accounts
- Represent accounts of spending such as discretionary budgets, mortgages, current lines of credit
Named Monthly Spend
- Have a set amount
- Start and stop on different days,
- Have a growth function
- constant rate
- based on a defined time curve (later functionality)
Asset Accounts
- Values contribute positively to Net Worth
- May appreciate or not
Liability Accounts
- All liability account balances count negative to Net Worth
- Can have a Lien on an Asset
Lien
- A lien is an attachment of a liability to an asset that requires the liability to be paid off when the asset is liquidated
Mortgage
- Debt Balance
- Interest Rate
Game Loop
Generate Income
Generate Spend
Allocate Excess Spend
TODO How?? Ideas..
Idea 1
"SpendAllocationConfig" - list of { account, constraints } in order of priority?
constraints are like MaxAmount, MinAmount, for network
Allocate min amounts first, by order priority, then allocate to accounts in order of list, respecting max amount
Thoughts
Both asset accounts and liability accounts can be drawable, e.g.
- A HELOC can be drawn on
- A Checking/brokerage account