Empower’s Fee Analyzer “Automatically Analyzes Fees on Investment Accounts”—Can We Replicate This with Beancount + BQL Queries?
I’ve been diving deep into FIRE tools lately, and Empower’s (formerly Personal Capital) fee analyzer keeps catching my attention. It automatically tracks investment fees and shows you exactly how much those “tiny” percentages are costing you over time.
The Problem: Fees Are Portfolio Killers
Here’s the brutal math that woke me up: a 1% annual fee might sound trivial, but on a $1M portfolio over 30 years at 7% returns, that 1% fee costs you over $300,000 in lost wealth. Research shows that someone paying 1% annually could end up with 28% less than someone paying just 0.25% over 30 years.
Empower’s fee analyzer makes this visible—it automatically:
- Pulls expense ratios from connected accounts via Plaid
- Calculates total fee burden as a percentage
- Projects long-term impact in actual dollars
- Compares your fees to low-cost benchmarks
The Privacy Trade-off I’m Not Willing to Make
But here’s my problem: to use Empower’s free tools, you have to:
- Share bank/brokerage credentials via Plaid
- Accept their black-box categorization algorithms
- Lock your financial data in their proprietary system
As someone tracking my path to FIRE in Beancount, I own my data. I know every transaction. I can query 5 years of history in seconds. But I don’t have an equivalent to Empower’s fee analyzer.
The Beancount Challenge: Can We Build This?
So here’s my question for the community: Can we replicate Empower’s fee analyzer functionality using Beancount + BQL queries?
Here’s what I think we’d need:
1. Track Investment Fees
- Expense ratios (the 0.04% on my Vanguard index fund)
- Advisory fees (if you use a wealth manager)
- Transaction costs (trade commissions, bid-ask spreads)
- 12b-1 fees (mutual fund marketing fees)
2. Calculate Total Fee Burden
Total Annual Fees / Total Portfolio Value = Fee Percentage
3. Compare to Benchmarks
What’s the low-cost alternative? If I’m paying 1.25% on an actively managed fund when a comparable Vanguard index fund costs 0.04%, that’s a 1.21% drag I could eliminate.
4. Project Long-Term Impact
This is where it gets motivating: show me that my current 0.8% fee burden will cost me $240K over 30 years vs a 0.15% low-cost portfolio.
My Initial Approach
I’m thinking:
- Manual data entry (the privacy-preserving trade-off): Look up expense ratios on fund prospectuses, enter as metadata or transactions, update annually
- Tag all fees with
category: "investment_fee"metadata - BQL queries to sum fees by account and calculate percentages:
SELECT account, SUM(fees) AS total_fees, VALUE(SUM(position)) AS market_value FROM account ~ "Assets:Investments" WHERE metadata.category = "investment_fee" GROUP BY account - Python script to calculate fee percentage and project 30-year impact
The Accuracy Question
Empower shows exact fees to the penny. Do I need that precision, or is “approximately 0.8% total fees” good enough for decision-making?
If I’m choosing between two investment accounts—one at 0.8% and another at 1.5%—knowing the rough percentages is probably sufficient to make the right move.
The Action Trigger
Here’s the real value: once I know Account A costs 1.2% and Account B costs 0.15%, what do I actually do?
- Option 1: Move money from A to B (but this might trigger taxes, early withdrawal penalties)
- Option 2: Stop new contributions to A, redirect to B
- Option 3: Just track it and feel guilty (not helpful)
The psychological impact matters: seeing “$12,450 paid in fees last year” is visceral and motivating. Seeing “1.2% expense ratio” is abstract and easy to ignore.
Questions for the Community
-
Do you track investment fees in Beancount? How granular do you get (every fee as a separate transaction vs quarterly summaries)?
-
Has anyone built fee analyzer queries? BQL scripts, custom reports, dashboards? What insights did you gain?
-
DIY vs Empower: Is manually building a fee analyzer worth the effort (learning + ongoing maintenance) vs just using Empower’s free tool and accepting the privacy trade-off?
-
Has fee tracking changed your behavior? Did seeing the numbers motivate you to switch to lower-cost funds?
I’m planning to build this over the next month. If there’s interest, I’ll share my scripts and queries when they’re working.
TL;DR: Empower’s fee analyzer is powerful but requires sharing bank credentials. Can we replicate the core functionality (fee tracking, percentage calculation, long-term projections) using Beancount + BQL while maintaining data ownership?