The FIRE community talks a lot about “your number”—that magic portfolio value where you can retire early. But the math behind it is surprisingly simple: 25x your annual expenses = financial independence.
Why 25x?
The 25x rule comes directly from the famous 4% safe withdrawal rate. If you can safely withdraw 4% of your portfolio each year in retirement, then you need a portfolio that’s 25 times your annual spending (because 1 ÷ 0.04 = 25). The Trinity Study showed this withdrawal rate has historically had a 95%+ success rate for 30+ year retirements.
So if you spend $40,000/year, your FIRE number is $1,000,000.
If you spend $60,000/year, you need $1,500,000.
If you’re lean FIRE at $30,000/year, you’re looking at $750,000.
Why Beancount Is Perfect for This
The challenge isn’t the math—it’s knowing your true annual expenses. Most people dramatically underestimate what they actually spend. That’s where Beancount shines.
I’ve been tracking every transaction in Beancount for 3 years now, and here are the queries I use to track my FIRE journey:
1. Calculate Annual Burn Rate
SELECT
year(date) AS year,
sum(convert(cost(position), 'USD')) AS total_expenses
FROM OPEN ON 2023-01-01 CLOSE ON 2025-12-31
WHERE account ~ 'Expenses:'
GROUP BY year
ORDER BY year;
This shows me exactly what I spent each year, not what I think I spent.
2. Track Progress to 25x
SELECT
date,
convert(value(sum(position)), 'USD') AS net_worth
FROM OPEN ON 2023-01-01 CLOSE ON 2026-03-27
WHERE account ~ 'Assets:' OR account ~ 'Liabilities:'
GROUP BY date
ORDER BY date DESC
LIMIT 1;
With my current annual expenses at $48,000, my FIRE number is $1,200,000. Beancount tells me I’m at $720,000, so I’m 60% of the way there. That’s incredibly motivating.
3. Monitor Lifestyle Inflation
Here’s where it gets interesting. I also track expenses by category over time to catch lifestyle inflation:
SELECT
year(date) AS year,
account,
sum(convert(cost(position), 'USD')) AS total
FROM OPEN ON 2023-01-01 CLOSE ON 2025-12-31
WHERE account ~ 'Expenses:'
GROUP BY year, account
ORDER BY year, total DESC;
This revealed that my restaurant spending crept from $3,600/year to $6,000/year—a 67% increase! That kind of lifestyle inflation can push your FIRE number up by $60,000 (25x the additional $2,400/year). Seeing the data helped me course-correct.
The Beautiful Feedback Loop
What I love about Beancount for FIRE tracking:
- Every transaction affects your FIRE timeline
- Expense optimization directly reduces your FIRE number (spend less = need less to retire)
- Savings accelerates the journey (getting closer to the target faster)
- It’s all in plain text, version controlled, and completely transparent
When you track this way, you start thinking: “Is this $100 purchase worth working 2 extra days?” That’s the mindset shift that accelerates FIRE.
My Current Status
- Annual expenses (trailing 12 months): $48,000
- FIRE number (25x): $1,200,000
- Current net worth: $720,000
- Progress: 60%
- Estimated years to FIRE (at 50% savings rate): ~5.5 years
What about you? How are you tracking your FIRE journey in Beancount? What queries do you use? What surprised you when you started tracking accurately?