Show HN: I spent 2 years building a personal finance simulator (projectionlab.com)
TL;DR - ProjectionLab (https://projectionlab.com) is a privacy-friendly personal finance planning tool where you can create financial plans that go beyond the standard online retirement calculators. And by popular request, it now supports self-hosting for Lifetime users!
Something I'm grateful for is that our community here on HN is the difference between PL existing and not. There was actually a time early on when I was one day away from halting work on it. I posted here on a whim, and was shocked to receive some really constructive and energizing feedback that went on to power my indie dev journey over the past two and a half years.
As a quick recap, the story started when I dove head-first down the financial independence rabbit hole. I wanted a hands-on and visual way to explore the trade-offs between different life paths. One thing led to another, and I decided to build ProjectionLab.
After last year's Show HN, I really put my nose to the grindstone, and here are some of the big developments:
- Self-hosting for Lifetime users (spin up your own private deployment, based on Docker Compose, includes support for auth/encryption)
- Cash-flow visualization for each simulated year (sankey charts)
- Tax analytics (detailed breakdowns for projected income, taxes, marginal rates, effective brackets, etc)
- Major redesign of entire app, with landing page and resources now split into separate project
- Filing separately option to improve support for international locations that don't have joint filing
- Roth Conversions and 72t (SEPP) distribution modeling
- Improvements to US tax estimation (Secure 2.0 updates, rental property tax deductions, Medicare + IRMAA, NIIT, principal residence exclusion, etc)
- Better support for planning as a couple
- More modeling options for cash-flow priorities to support different budgeting philosophies and goals
- Extra liquidity + withdrawal options, ability to fund expenses with specific accounts or route income to specific accounts
- Customization options for Monte Carlo simulations (characterization of success rates and outcome types, option to set random seed, etc)
- And a whole bunch more! (https://projectionlab.com/changelog)
The HN community has had a huge role in shaping my overall direction with PL, and I can't wait to hear what you all think of the updates and where you would like to see things go from here.
As always, PL is free to try, with no need to create an account. It does not ask to link your financial accounts, and it has a sandbox mode if you just want to hop in and see how it works.
--Kyle
291 comments
[ 0.27 ms ] story [ 352 ms ] threadI would love the ability to simulate 401k contributions assuming an annual max contribution increase. For example, I will often put into an investment returns calculator that I am contributing $20k per year to retirement, however 10 years from now the annual max will probably be over $30k.
I'm slightly confused by the pricing. Is the free plan persistent only in 1 browser? Have I understood that right?
My thought process was that I wanted to make as much of the planning functionality as I could free to try and low-friction. I'm always open to feedback on pricing model though. Sounds like you would prefer to see a level of persistence in the free tier? If you have more thoughts on how that should work, let me know!
MaxiFi Planner is the best consumer tool I know; my advisor also uses it. A puzzle that's too hard for it, making me want to script scraping its reports: Should I choose an annuity for part of my TIAA-CREF retirement savings? Even if one understands that the answer is generally no, there's always a number that flips the decision. TIAA annuities pay more than market, but enough more? There's an annuity paradox that programs like MaxiFi Planner reveal: Even a poorly priced annuity lets one plan to spend more. On the other hand we want to optimize our daughter's inheritance.
Economists optimize varying notions of "utility". The above is a game, scoring what one gets to spend adapting to market conditions, taking into account the inheritance as one's year of death varies. This is beyond any planning software I've seen, yet it's exactly the game I will instead play out badly by hand.
Using that you can also try out alternate scenarios like "what if I converted x00k of my savings to an annuity in exchange for a predictable cash flow" and see how it affects your withdrawal rate.
I discovered projectionlab (formerly projectfi) on HN a while back and have been loving it. Every other "retirement calculator" I found was a dozen text fields and a simple output graph or two - Projection Lab gave me what I really wanted, which was the ability to do much more involved modeling of various scenarios:
- What happens if I buy a house in X years?
- What happens if my old company IPOs and I get a windfall of $Y in X years?
- What happens if I change assumptions on investment returns or inflation rates?
- What happens if I retire at various different ages?
- What happens if my salary increases by 2, 5, 10, 30% each year?
- What happens if we do this kind of mortgage or that kind of mortgate?
- All of the above, but also modeling my in wife's finances?
- All of the above, but with beautiful, interactive graphs instead of my ugly spreadsheet outputs
- All of the above, but without the several formula typos that I made while building my spreadsheet
Anyway, it's amazing, I love it, and nothing else out there really seemed to compare. I found your free plan more than met my needs, but I wound up subscribing just to support it. I'm quite hoping you're able to make this successful long-term so that I can keep using it until I eventually retire. :)
Is there a particular direction in which you'd like to see me build from here? The public roadmap is overflowing with ideas at this point, and I'm curious how folks would rack and stack them.
Having the abilty to perhaps build our own models and keep them to ourselves, or maybe have them available to share might not be a bad idea.
I'm not sure if this is reporting, or setting up a sequence or frequency of payments, etc. Depends on the backend I suppose.
* Startup9000 Simulator
* ClassicAutosAsInvestments Simulator
* My Personal Stamp Collection API Plug-in (not-public, not-for-sale)
Basically, theres enough weird stuff out there that could be a component of someone's financial hopes and dreams, that communities could sprout on being able to enhance around a topic.
There's also that first step of needing/wanting to be able to API-into the product to explore the idea to see if it's even something that can be modeled.
I think this is because you are conflating "model" and "plan"; whereas the conventional use of plan probably means model, when playing in your Sandbox it looks as if "plan" is model+data.
The grandparent poster is describing sharing models.
Basically setup my own versions of Roth, or other products.
In Canada, TFSA and RRSP are one
I try to offer as much configurability as I can, but if there are other areas where you'd like to see more of that, definitely let me know.
Iirc the last time I was using it heavily, the only issue I was having trouble with was modeling drawdowns of existing funds. It kept drawing down my wife's account to build up mine. It didn't affect the overall outcome (we had the same dollar amount together regardless), but it was a little annoying and made it harder to figure out which account was actually running low. That said, it's extremely possible that I was just doing something wrong and just hadn't configured it correctly. Whenever I get back to it, I'll work up a minimal repro case and ask about it in the discord. :)
What about getting units of work to start working right now, instead of hoping some big company will make people’s money “grow” into the future?
Invest in local economy. Invest in people. Folks thinking about retirement backwards.
You for shit have no idea how bad elder care is in America
For me personally, I fail to understand the point of doing this level of analysis, at lest for some of the things you listed that seem highly hypothetical and uncertain (e.g. raises, IPOs, even future mortgage rates). I guess that's the nature of any financial forecasting, but this just seems like it's taken to a level that I would not find helpful. Take for example the kind of mortgage to choose, a decision that all home buyers face and can be daunting (there's so much mortgage/lender lingo that is foreign to most people). The "right" answer is to go with a shorter-term, variable rate, because on average you'll pay less interest than longer-term/fixed rates. But that's also the wrong answer for some people who don't want, or can't handle variability in their biggest monthly expense. Layering those factors into an overall retirement calculator/projector just seems like overkill and over complicated for that decision. MHO...
1. Track my current expenses (I use https://lunchmoney.app/, but a spreadsheet works fine). Looks like I'm spending $X/month
2. Build a reasonably complete model of my financial life assuming $X expenses per month (I use ProjectionLab)
3. Do I run out of money before the end of my life? If yes, look at my expense breakdown and look for areas to reduce it (fewer ubers, eat out less, cut back on diamond-encrusted tiaras, etc). My new budget is $Y/mo. Goto 2.
4. Do I have a ton of money left at the end of my life? If yes, I can increase my budget a bit for things I like (more ubers, eat out more, more diamond-encrusted tiaras, etc).
I can revisit this over time as my income changes, or my retirement account value changes based on real-world market performance, or I get a windfall, or I get married, etc etc.
My 30 year fixed-rate mortgage at 2.6% begs to differ ;) Yes, I had lucky timing; I was able to refinance right at the start of 2022 when rates were pretty much at their lowest.
But overall, I think your assertion isn't correct. It really just depends on conditions. If rates are in general very low, you probably want that fixed-rate mortgage, even if the variable one is -- at least for now -- a little bit lower. In the US, most people get 30-year mortgages, and it's pretty much impossible to predict what rates will be like in 10, 15, 20, 25 years.
If rates are higher, and you believe the reason for that is temporary (like the inflation reduction measures going on now), a variable-rate mortgage is probably a good gamble. If rates drop, you can always refinance (either into another variable-rate mortgage, or to a fixed rate).
Honestly, the 7% now on a 30-year-fixed isn't that bad, historically. It just feels bad because we had such low rates in recent years.
There are some interesting things about those pensions though (and the related VA compensation metrics). I have a spreadsheet I use to advise veterans who get sent my way because there are no decent tools out there for that population.
Otherwise it looks awesome!
Curious what you feel is missing for modeling military pensions. Have you checked out the configuration options for Custom income streams, the Advanced change-over-time editor, and/or binding the start/end of things to milestones?
I think I'm going to be recommending your tool to the Veteran's I help advise.
Awesome work here. I really mean that.
Oh and to answer your question on DB vs DC -- if you're talking about the workplace pension cash-flow priority, that would be for modeling Defined Contribution pensions. For DB, that's an integrated section within the corresponding income stream.
Also I have to add that your sentences saying, "workplace pension cash-flow priority" and " corresponding income stream" are very confusing.
I think the figures for the UK example are not great. Living expenses, health care, and medical expenses are a lot larger than seems correct.
Also you should probably put a tool tip defining concessional vs non-concessional Australian superannuation. Also that should be in AUD rather than £
Amazing interface BTW
When you add a new account or cash-flow priority for super contributions, the choices should have subtitles distinguishing Concessional from Non-Concessional. But sounds like there are some other places it would be helpful to show those subtitles too?
Always happy to tweak/update the sandbox examples based on what folks would like to see. Any good data sources you'd recommend for more typical UK expense figures?
More typical UK expense figures is a really hard one. I think we've got a crazy wide spread of incomes and expenditures the same as the US but with differences such as almost nobody earning average income will spend any of it on health care.
It just doesn't really make sense as a coupling, if I'm early career with a DB pension or mid-career with DC it's not clear which is the better pick or how much it matters. As far as I can tell having selected one and played with it just briefly, it doesn't matter at all because all it does is set some numbers you can change anyway, there's no built-in knowledge/logic of specific country pension schemes or tax treatments?
Does that help clarify? And/or do you feel like a different approach for the sandbox would have been better?
I like the tool & UI & feature tour though. :)
I’ve been distracted from personal finance stuff for a minute but am circling back to it now that some life stuff has settled out. If this planning cycle works well, I’m planning to buy the lifetime program and start self hosting.
Thanks for all your work on this!
If you run into any trouble modeling things, feel free to reach out any time.
EDIT: Ah I now see that I can do this, it was just sorta hard to discover at the bottom of the form.
I'm interested in a few angles that are leading me to look at your self-hosted option - is there any customizability that is possible?
For example being in Canada, the basic features will work great, but some of the other types of accounts or programs will be different. It would be nice to be able to set it up in the software, and failing that, see if learning how the backend works with a self-host license will allow addition of different items.
I was just thinking about something like this last week - financial literacy can have an outsized impact on anyone's life, and being able to generate so many scenarios can make a huge difference in visualizing things so clearly for the formula of one's own life.
What stood out to me was
Roth, etc are very specific to the US.
Things like RRSP, TFSA, etc are more common in Canada. Maybe it's just configuring one of the flow types as you mentioned.
I don't see why this would be a positive? I'd love an alternative to Personal Capital (since it got bought out), but without a direct connection to my banks/creditcards/etc, that connection just ends up being less secure.
If a (strictly optional) account linking feature is something you'd like to see added though, there's an item on the public roadmap for it that you might like to upvote. It’s currently still in the Suggestions category because it’s a bit of a contentious topic within the PL community, and we’ve had a few discussion threads about that on the discord.
In the past, I’ve tried account linking in some other tools, but always ran into syncing issues (especially on 2FA accounts). From what I understand, that’s still somewhat common even with solutions like Plaid.
With PL, I also wanted to initially steer clear of that support/maintenance tar pit (especially since I’m a solo dev), and design a tool where the focus is more on long-term projection rather than fixating on the latest daily stock price fluctuations.
The tricky thing about a service whose main value prop is aggregating all your account data together is that 99% of them working isn't that much better than 1% of them working. Looking at your financial dashboard is pretty useless if it can't sync one of your 401k accounts, or one of your loans is using 90-day old data.
I think this is actually a positive for the non-aggregators like ProjectionLab. If I spend 10 minutes manually updating everything when I check it once a month (or however often), I know everything is up-to-date and don't need to spot check things.
- I filled in a bunch of data. I closed the window. I then went back to the website, it tells me that it has recovered my previous session, and it gives me the option to either "Remove data" or "Upgrade now". I want to use the recovered session. I guess that's not allowed? It's really jarring to put it on the user to actively click a button that deletes the data that they have painstakingly entered just a few minutes before. Psychologically, it feels like an AH move: "I have your data, but you can't get it." TBH, it would be better to pretend the data wasn't recovered at all. If you really don't want a user to recover their data without paying, I suggest that you put an expiration timer on it: you can recover without paying if you do so within, say, a day, but not after that.
- It's unclear what's expected when entering RSU grants.
- 401k can have a before-tax and an after-tax part. Due to mega-backdoor Roth 401k conversion, I expect a major part of my 401k withdrawals to be tax-free. Is there a way to model that?
- Cash flow: the destination of excess money is not very clear. I can see how excess money is going into savings, but it's not obvious how to tune this. You can say that RSU grants are going to a certain investment account, but that's not how things work in the real world: cash comes in from various sources into a single put (the checking account). Investments are made based on allocation. E.g. Every month, $XXXX goes to an investment account from that checking account. I don't think you can set things up this way?
- Is there a way to way to model a rental investment, where expenses (property tax, insurance, interest, etc.) can be subtracted from rental income and only the difference is added as taxable income?
- After retirement, I see my effective tax rate going up quickly, peaking out at 60%. I have no idea where that's coming from. If that needs debugging, I can, unfortunately, not share the data because I couldn't recover it. ;-)
- For me, the future projections are way lower than other retirement calculators. I find it hard to judge where the discrepancy is coming from, but I assume that the effective tax rate thing is a major contributor. There might just be too many knobs to play with and I probably have some things set up incorrectly.
- Personally, I would no pay $9/month for this. It's a very nice tool, but retirement planning is not a monthly on-going thing, and I already have way too many recurring services that I don't use a whole lot. For me, it would make more sense to be able to enter my info and save it under an account, have limited free functionality, and offer a way to pay for more. Ideally, in a non-recurring way. E.g. I'd be totally fine paying $10 for a day planning. And I might use that once per year. That's obviously much less than paying $9 per month, but at least you'd get something instead of nothing at all? I have no idea how this would change conversion and how many people are in my boat.
And sorry to hear you ran into trouble with the sandbox. It should warn about unsaved data if you try to close the tab. Did that not happen in your case? In the past, if you closed it, that was that. But a couple people slipped through the cracks and said it would have been much better if a recovery mechanism existed. So now it does haha... but maybe there's a way it can strike a better tone? FWIW I also love the idea of a time-based restore system, I just couldn't think of a good way to implement it that wouldn't be easy to tamper with (within the context of the current architecture anyway).
For RSU grants, folks usually model the amounts they expect to vest in each year. The Advanced change-over-time editor may be helpful.
For mega backdoor, would a Roth 401k cash-flow priority with custom limit be helpful? In the long-run though, I'd like to have a more formal option to make this easier.
For rental properties, this is where the Generate Income option on a House asset (real assets column) comes into play. The best experience here is if you have the premium features and set tax estimation to US mode. If you want to kick the tires on that, I do offer extended free trials and/or general discounts on top of the default trial period.
Oh right, and the effective tax rate metric is customizable. Do you currently have that set to include things like local/property taxes?
I didn't get a warning and it's definitely better to have a recovery mechanism... if you can use it.
> I just couldn't think of a good way to implement it that wouldn't be easy to tamper with
I wouldn't initially waste time trying to address those who'd go through the effort of tampering with it. It's something to address when you have proof that it's a real problem.
> this is where the Generate Income option on a House asset (real assets column) comes into play.
I missed that.
> Oh right, and the effective tax rate metric is customizable.
I played around a bit with tax rates, but I definitely did not enter anything close to 60%.
> Do you currently have that set to include things like local/property taxes?
I don't know. I couldn't restore the data!
To clarify what I meant on the recovery mechanism, the current implementation is what folks had asked for. afaik it does work(?), but does currently require signing up for the free trial. No worries if that's not for you though; and FWIW you could be right that perhaps it would be better to have a non-tamper-proof time-based permissive restore system if it would reduce friction in the average case.
My guess on effective tax rate is it was likely including property taxes. Adding those to the numerator during retirement when taxable income is usually lower could drive up that number.
> ... but does currently require signing up for the free trial.
I don't remember the exact working. Did it explicitly mention the free trial in the data recovery dialog?
> My guess on effective tax rate is it was likely including property taxes. Adding those to the numerator during retirement when taxable income is usually lower could drive up that number.
That's possible. I didn't fill anything related to property taxes, so it was probably implied? With CA proposition 13 (which caps the property tax increase), the property tax on rentals will be low compared to property value when you've owned the property for decades (as would be the case when you're in retirement.)
If you did end up jumping for the self-hosted version though and hated it for whatever reason, I could always refund you.
If you dismiss them, they don't reappear do they? They shouldn't at least...
Do you think it would be better to infer from one tour dismissal that a user never wants to see another tour for anything else?
Way back, PL actually started as one of my personal planning spreadsheets as well. I'm sure there are more talented spreadsheet creators out there than me, but I remember that mine ultimately reached a point where the complexity became so difficult to maintain (and trust) that I threw in the towel and decided to build a web app instead.
Love that you support countries other than the US - that's very much appreciated.
What I find when setting up long-term plans like this is that you realize just how much key life decisions affect the outcomes, along with how much uncertainty I have over those life decisions! Being able to explore those permutations is definitely very insightful.
Is there a certain direction you'd like to see me take the tool from here?
Some feedback I have after I signed up and filled out my finances and financial plan:
- It would be nice to somehow get back to the original wizard that I went through when I signed up. Could swear there were some things such as "spend my remaining income" or whatever that I can't seem to find elsewhere in the app. (EDIT: I found this, it's at the bottom of the Plan page, and was a bit hard to find)
- I'd love to be able to export my data even though I agreed to cloud storage. Maybe that conflicts with something about the way that stuff is stored in the cloud, but just being able to download any of the data, even if it isn't all of it, would be nice. Maybe there is a way to do this, but I haven't figured it out.
- Thank you for providing dark mode!
- I don't know what "Starting Cost Basis" is when adding a Roth IRA, and it would be nice to just have a tooltip explaining it; I have a Roth IRA and kinda know what a cost basis is, but honestly have no clue what "starting cost basis" really means or whether it applies to me. Maybe I should know, but this would also be good learning opportunity for users.
Cost basis is irrelevant for Roth IRAs since you don't pay gains tax on them. I wonder why this is being asked?
The sim uses cost basis as how much of the existing $ in there represents your contributions (as opposed to gains), which is useful to know b/c your contributions to a Roth IRA can be withdrawn tax-free and penalty-free. You should see a corresponding category for that in Plan Settings > Drawdown as well.
Edit: Found the taxes tab, but it seemingly didn't apply the income tax rate I provided in the plan creation "wizard"?
If there are any specific mechanics you have trouble modeling, let me know -- would be good to capture them on the roadmap.