I Deleted the Code That Guessed What's Inside Your Funds
On Wednesday I deleted code I had been proud of on Monday.
Here's what I was trying to fix. Most people holding a pension fund or a bank-managed fund have no real idea what sits inside it. Money goes in every month, the provider reports a value back, and the actual composition lives in a PDF nobody opens. So I built a look-through: your funds, opened up. Stocks versus bonds. Industries. Countries. The largest positions underneath yours.
Then coverage got awkward. Real composition data existed for some funds and not for others, and a page full of holes looks broken. So I wrote a classifier that read each fund's name, guessed its category, and applied a sensible preset. "Balanced participation fund" became roughly half stocks. A target-date fund got a glide path by year. Every gap filled. The page looked finished.
Finished and partly invented.
A number that looks like data but is really my keyword matcher having an opinion is worse than no number, because on screen you cannot tell the two apart. So the estimated tier is gone. Not hidden behind a flag. Deleted, along with the presets and the glide paths I was rather fond of.
A fund now either has real, sourced data, or it says Unknown out loud with a percentage next to it.
![]()
This demo household is fully covered on the stocks-versus-bonds split and thinner further down, which the card admits on its own. Plenty of real portfolios will be thinner still.
Where the real numbers come from
Seven fund houses publish composition on their own websites: ČSOB, NN, KB, PKO, PZU, Millennium and Pekao. MFFT reads those pages directly now, the same way it already reads their prices. Of 157 funds pulled that way, 144 came back with a full breakdown. The other thirteen don't publish one, so they don't get one.
Funds with a public market listing take a different route, and that route grew from 54 funds to 159 this week. An audit afterwards threw out three of my own matches for quietly pointing at the wrong sub-fund, which is about the amount of humility this work deserves.
Every composition also shows the date its provider published it. One Polish fund house last refreshed theirs on 31 December 2025, and you'll see that date instead of a comforting "today". You'll find all of it under Net Worth → Pensions & Funds, below your fund list, or in the live demo without signing up.
Your insurance policy is money too
Whole life, endowment, unit-linked, the children's policy someone started for you in 2004: those build a real value over years, and almost every finance app pretends they don't exist. Mine did too, until this week.
There's an Insurance page now. Every policy is a card showing what it's worth today, what you pay into it monthly, and when it matures, and the total flows into your net worth like any other asset. That value is the one you tell me, and the page labels it as such, because an insurer's contract value isn't something I can go and price at 3am. Rather than copying four numbers off your annual statement, you can hand MFFT the statement and let it read the value and the date that value applies to. That part matters more than it sounds. Statements print the surrender value, the sum assured, the premiums paid and the maturity benefit on the same page, and exactly one of those four is what your policy is worth today.
![]()
Sample household, real page: myfinancialfreedomtracker.com/en/demo/insurance.
The net worth page got an honest answer to "am I diversified"
There's a tile now showing where your wealth actually sits by asset class, with a growth-versus-defensive bar and a table of how each class moved over a day, a week, a month, three months and a year. Your history also fills itself in every night rather than waiting for you to log in and be counted.
And the "include in net worth" toggle used to take a few seconds to do something that should feel like flicking a light switch. It's instant now. Nobody is going to email me about that one, which is how I know it was overdue.
What's next, and the thing I keep not finishing
Two weeks ago I wrote that connecting your bank directly was next. Last week I wrote it again. It still isn't done, and I'm not going to keep dressing that up.
Pension sub-accounts did ship, though, which was also on last week's list. If two people share one pension account, you can split it now and each side keeps its own numbers.
Behind the bank connection there's a direct broker connection too, because the honest end state for uploading export files is that you stop uploading export files.
Stay updated
Get notified when we publish new articles.
Ready to apply this?
Start tracking your finances today and put these tips into practice.
- Import bank statements in seconds
- AI-powered categorization
- Beautiful visualizations
- Set and track financial goals
Related posts
MFFT Now Costs Money. Writing That Sentence Was the Hard Part.
MFFT started charging this week. The billing code took an afternoon; the paragraph explaining the price took four days. Plus settings going from eight tabs to four, a delete button that never worked for Google accounts, and 132 more funds.
Someone Emailed: My Fee Numbers Were Wrong. He Was Right.
A user emailed to say MFFT's fund fees looked wrong. He was right: a hand-maintained list I never taught to expire. Plus everything else that shipped this week.
My First Podcast: The MoneyPenny TL;DR
I went on MoneyPenny, the Hospodářské noviny investing podcast. The TL;DR: how it happened, what we covered, and how nervous I actually was.