FinPlain simplifies your finances by breaking them down into four categories: Assets, Liabilities (and Payments to them), Incomes, and Expenses. Together, these give you a complete picture of your net worth over time.
Things you own. They contribute positively to net worth and may appreciate or depreciate over time.
Examples include:
Cash and Savings Accounts
Investments
Retirement Accounts (401k, IRA)
Cars
Real Estate
Debts you owe that can be paid off. They reduce net worth and often accrue interest over time.
Examples include:
Mortgages
Student Loans
Credit Card Debt
Auto Loans
Personal Loans
Money paid from an Asset to pay down a Liability.
Examples include:
Monthly Mortgage Payments
Extra Principal Payments on Mortgages
Student Loan Payments
Credit Card Payments
Money that you receive once or on a regular basis. This may go to a cash account or to another asset like a brokerage account if you plan to invest it.
Examples include:
Salary and Wages
Rental Income
Business Income
Money spent from an Asset that does not pay down a Liability.
Examples include:
Rent
Utilities
Groceries
Entertainment
Insurance
Taxes
FinPlain models growth in both Assets and Liabilities. In order to keep things simple, these each grow in the way that represents the most common/most intuitive case.
We model Asset growth with daily Actual/365 compounding, as follows: $$v = v_0 \cdot \left(1 + \mathit{rate}\right)^{\frac{\mathit{days}}{365}} = v_0 \cdot e^{\ln{(1 + \mathit{rate})} \cdot \frac{\mathit{days}}{365}}$$ Values are not rounded when they are compounded. This approach has the following properties: (1) In one (non-leap) year, your assets grow by precisely the percentage rate you've input. (2) An Asset grows the same in $d$ days as it would in two consecutive periods of $d/2$ days. Each of these properties aligns with the way we measure and expect growth to occur in assets like stocks and real estate.
Since home loans are the largest commonly held liability, FinPlain's Liability growth is modeled to match how mortgages are structured. This means that the interest on a Liability is added each month as $\operatorname{round}((previous\ value) \cdot rate/12)$ (rounding to the nearest even number of cents). If you add a Liability and add monthly Payments on the 1st of the third month (i.e., March 1 if the current month is January), then your payment structure will match what any good amortization calculator tells you.
Importantly, FinPlain omits prepaid interest from Liabilities, since including it would violate the expectation that Liabilities match amortization schedules, and complicate the addition of existing loans. As it is, users can add existing loans by inputting a Value equal to their most recent balance plus the proceeding month's interest ($balance \cdot rate/12$). Users who wish to model a loan they haven't yet taken out can add prepaid interest as an Expense on their closing date, along with the other closing costs their lender requires. For reference, prepaid interest is often (but not universally) calculated in the following way (where $\mathit{days}$ is the number of days until the 1st of the month following closing): $$\mathit{prepaid\ interest} = \mathit{principal} \cdot \mathit{days} \cdot \mathit{rate} / 365$$ Volatility simulations use the Monte Carlo method with Geometric Brownian Motion. Between data points with transactions, the growth rate is randomized with the following formula: $$v = v_0 \cdot e^{(\ln(1 + \mathit{rate}) - 0.5 \cdot \mathit{volatility}^2) \cdot \frac{\mathit{days}}{365}\ + \ Z \cdot \mathit{volatility} \cdot \sqrt{\frac{days}{365}}}$$ where $Z$ is a random number taken from a normal distribution centered at 0 with standard deviation 1.
While FinPlain's plot lines show the expected value of each Asset going into the future, shaded areas (with simulations on) show the ranges of likely values that each Asset may have in the future. Notably, the expected value shown by the lines is lower than the median value. In other words, most simulation outcomes (and likely most real outcomes) will be lower than the prediction lines. FinPlain plots the mean instead of the median for three reasons: (1) The mean the same regardless of volatility; (2) It can be calculated deterministically with the exponential growth formula below; (3) It is the kind of average most people are accustomed to using.
For more information on Geometric Brownian Motion, see RunMat's Explainer and Thierry Roncalli's Handbook of Financial Risk Management.
Net worth is calculated at each date as the sum of the values of all Assets and Liabilities. Since it would require assumptions about the covariance between different assets, net worth volatility is not simulated. Generally, a portfolio's volatility will be lower when it comprises assets whose values are either uncorrelated or anti-correlated with one another. For more information on asset correlation, see Elvis Picardo's article on Investopedia.
Why does an asset of DOLLARSIGN100.00 with 10% growth rate grow to DOLLARSIGN110.03 in one year, and not DOLLARSIGN110.00?
If the year your looking at includes a leap day, this is because it's had one extra day to grow. We use the Actual/365 convention, so your asset grows by the following formula: $$v = v_0 \cdot \left(1 + \mathit{rate}\right)^{\frac{\mathit{days}}{365}}$$ That means in 366 days, it will grow by about 10.03%. If the year does not include a leap day, it will grow by exactly 10%.
I've added an existing mortgage loan with my last statement's balance and my scheduled payments. Why does FinPlain show my loan being paid off sooner than my amortization schedule does?
FinPlain's loan model accrues interest only between the 1st and the 2nd of each month. This makes the model match expectations when adding loans that don't exist yet, but comes at the cost of (1) omitting prepaid interest for new loans, and (2) omitting that month's interest for existing loans. If you added the loan on a date other than the 1st of the month, then no interest is calculated for that month. If you want to include accrued interest for that month, multiply your balance by $(1 + \mathit{rate}/1200)$ and round to the nearest even number of cents.
Why doesn't FinPlain model prepaid interest?
When adding a loan, you would immediately see either a new expense created, or your loan balance would have to increase as soon as you hit enter. Both of these add complexity and probably violate user expectations. Since prepaid interest is rolled into closing costs for a loan, which will vary based on your lender anyway, we chose to omit them from the model.
FinPlain provides a framework for modeling your finances based on assumptions you provide. It is not a financial advisor, and nothing created using, generated by, or found within FinPlain constitutes financial advice. Models are imperfect approximations of the real world, and you are responsible for reasoning about the predictions calculated by FinPlain, and for understanding that errors and/or bugs can and do occur even in mature software products. As such, FinPlain and its owner are not liable for any discrepancies between FinPlain models and actual financial outcomes, or for any financial losses resulting from decisions made using FinPlain.