I just had one of those humbling moments where I realized I’ve been lying to myself with numbers for the past two years.
Like many of you, I’ve been obsessively tracking my path to FIRE using the Engaging Data FIRE calculator. It’s a great tool—I’d plug in my estimated annual spending ($45K), estimated investment returns (7%), and watch it tell me I could retire in 12 years. Motivating stuff.
Then last weekend, I decided to actually analyze my Beancount data from the past 3 years instead of guessing. Wrote a quick Python script to extract real numbers from my ledger.
The reality check hurt:
- Estimated annual spending: $45,000
- Actual average spending (36 months): $61,247
- I was off by 36%.
That’s not a rounding error. That’s “retire at 45 vs retire at 52” level of difference.
Why Generic Calculators Have This Problem
Tools like Engaging Data, ProjectionLab, and FIREkit are sophisticated—they do Monte Carlo simulations, factor inflation, model different withdrawal strategies. But they all have the same fundamental weakness: they trust your estimates.
And humans are terrible estimators:
- We forget irregular expenses (that $4K car repair, annual insurance lump sum, Christmas spending)
- We underestimate lifestyle inflation (my “fixed” expenses increased 18% over 3 years)
- We remember aspirational spending, not actual spending (I want to spend $45K, so that’s what I report)
The Beancount Advantage: Truth From Transactions
Here’s what I extracted from my actual ledger:
# Simplified version of my analysis
from beancount import loader
from beancount.query import query
import pandas as pd
entries, errors, options = loader.load_file('main.beancount')
# Get all expenses for trailing 36 months
q = """
SELECT year, month, sum(position) as total
WHERE account ~ 'Expenses' AND year >= 2023
GROUP BY year, month
"""
results = query.run_query(entries, options, q)
# Average monthly spending: $5,104
# Annual projection: $61,247
Even more eye-opening, when I calculated my actual investment returns from my Assets:Investments accounts (using bean-price historical data):
- Estimated returns: 7% annually
- Actual 3-year CAGR: 4.8%
Between spending 36% more than I thought AND earning 31% less than I assumed, my generic FIRE calculator was living in fantasy land.
Questions for the Community
1. Time horizons: I used 36-month average. Is that too long (includes old spending patterns) or too short (vulnerable to one-time events)? How do you handle this?
2. Irregular expenses: My Beancount data shows I spend $8K every other year on vacations, $2K annually on car maintenance, $1200 on gifts in December. Do you annualize these, or track “baseline” vs “irregular” spending separately?
3. Projection methodology: Once you have real data, do you:
- Use simple linear projection (current savings rate = X years to FI)?
- Build Monte Carlo on actual spending variance?
- Factor in planned lifestyle changes (kids, house, downsizing)?
4. Integration with generic tools: Do you still use calculators like Engaging Data, but feed them real numbers from Beancount? Or have you built custom FIRE projections entirely?
My Current Approach
I now run a monthly script that:
- Calculates trailing 12-month and 36-month average spending from Beancount
- Extracts current net worth from balance sheet
- Computes savings rate and years-to-FI using 4% rule
- Outputs to simple CSV that I paste into a Google Sheet for visualization
It’s not fancy, but it’s honest. And honestly, seeing real numbers is more motivating than optimistic guesses—even when they’re worse than I hoped.
Has anyone else done this analysis? Did your actual spending match your estimates, or were you surprised like me?
Curious if there’s appetite for a community-built Fava plugin that shows FIRE metrics (net worth trend, savings rate, years to FI) calculated from actual ledger data rather than user guesses.
Sources:
- Engaging Data FIRE Calculator: FIRE Calculator: When can I retire early? - Engaging Data
- ProjectionLab (Monte Carlo FIRE tool): The Ultimate FIRE Calculator: Build a plan to retire early - ProjectionLab
- FIREkit comparison of calculators: Engaging Data vs FIREkit: Which FIRE Calculator is Better for Your Retirement Plan?
- Beancount scriptable workflows: Scriptable Workflows