01
It stays on your computer
No sign-up, no server, no telemetry. Your holdings are written to your own browser's storage and never transmitted anywhere. There is no database with your name in it, because there is no database.
The Holdfast guide
A complete investing workbench — cost base, dividend income, projections, rebalancing and an accountant-ready tax package — that runs entirely inside your browser and sends your holdings to nobody. Including us.
Contents
What you're getting
Most portfolio tools are built for people who trade. They show you today's movers and a percentage since open. Holdfast is built around the numbers that matter over a decade: what you actually paid, what the taxman will want, and what you'll have at the end.
01
No sign-up, no server, no telemetry. Your holdings are written to your own browser's storage and never transmitted anywhere. There is no database with your name in it, because there is no database.
02
Adjusted cost base for Canada, lot accounting for the US. Superficial losses and wash sales are applied automatically. Not an approximation — the actual rules.
03
Schedule 3 for Canada, Form 8949 for the US, income split by how each category is taxed, ready to hand over in April.
Multiple portfolios — with real mandates — Core (Stability), Growth, Income, Dividend Growth, Speculative, or your own.
Real account wrappers — TFSA, FHSA, RRSP, RRIF, RESP, non-registered and corporate for Canada; Taxable, Traditional IRA, Roth, 401(k), HSA and UTMA for the US. Each carries its tax treatment into every calculation downstream.
Dividend and income tracking — yield on cost, income history, and the eligible / non-eligible / foreign split that changes what you actually pay.
Allocation and risk analytics — by asset class, sector, geography, currency and account, with concentration flags.
Projections — contributions, expected return, volatility, retirement drawdown, and goals with target dates.
Rebalancing — drift against targets, and the trades that would close it.
Benchmarking — money-weighted return (XIRR) across every deposit and withdrawal, which is what your money actually earned rather than what the funds returned.
Import and export — CSV in, CSV and JSON out, and a full backup file you control.
The part that matters most
Every other tool in this category asks you to create an account and upload your holdings to their servers. That means your net worth sits in someone else's database, subject to their security, their staff, their breaches and their change of ownership. Holdfast does not work that way, and it can't be quietly changed to.
The one thing that does cross the network is a price lookup — the symbol VFV.TO going out, a number coming back. Never a quantity, never a dollar figure, never a name. And if you'd rather even that didn't happen, you can type prices in by hand and the app will never make a request at all.
Level 1
Masks every dollar figure on screen with a keystroke. For working in a café or sharing your screen on a call.
Level 2
A gate on open that locks itself after a few idle minutes. Keeps a household member or a passer-by out of an open browser.
Level 3
Your data is encrypted with a key derived from your passphrase. What sits in browser storage becomes ciphertext — even someone with developer tools open sees nothing readable.
Level 3 uses AES-GCM with a key stretched through 600,000 rounds of PBKDF2, the current OWASP recommendation. The key lives only in memory while the app is open, and locking the app wipes it. There's also a shared-computer mode that keeps everything in session storage, so it evaporates the moment you close the tab.
Read this before you turn on encryption
Your data lives on your device, under your control. That means your device's security is yours too — the same as a spreadsheet sitting on your desktop. If someone can unlock your computer, they can open whatever you haven't locked.
And there is no password reset, because there is no account to reset it against. A passcode can be cleared (it never encrypted anything). An encryption passphrase cannot. Lose it and the data is gone for good — that's precisely what makes it strong. Write it down somewhere safe and keep a backup file before you switch encryption on. The app will make you download one first.
Walkthrough
You don't need a market-data key, an account, or an internet connection to get a working portfolio and a correct tax report. Here's the order that works.
On the welcome screen, choose Explore. It loads a realistic sample portfolio so every screen has something in it. Nothing is saved as yours, and you can clear it in one click from Settings → Data when you're ready to start for real.
In Settings → General, pick CAD or USD, and in Settings → Tax pick your jurisdiction and marginal rates. This decides which tax engine runs, which account types you're offered, and which forms the Tax Centre produces. Get it right now and everything downstream follows.
Go to Portfolios and add one account per real-world account you hold — your TFSA, your RRSP, your non-registered account, your 401(k). Use the real wrapper type. Holdfast keys every tax calculation off it, so a gain inside a TFSA is correctly treated as tax-free while the same gain in a cash account is not.
Give each a mandate: Core for broad-market ballast, Growth, Income, Dividend Growth, or a Speculative sleeve you ring-fence deliberately. This is what makes the allocation and rebalancing screens meaningful rather than decorative.
This is the one part that takes real effort, and it's worth doing properly — every number in the app is derived from it. On Transactions you can type entries in, or import a CSV from your broker. Include your buys, sells, dividends and fees, with their real dates. If you only have current positions and not full history, enter an opening buy at your known average cost. Your cost base will be right going forward; only the historical return curve will be approximate.
Prices update automatically from the built-in source with nothing to set up. If a symbol won't resolve, Holdings shows a Set price button and you type it in. Prices only affect what your portfolio is worth today. Cost base, realized gains, income and every tax figure come from your transactions.
In Settings → Security, pick the level that matches your situation. A shared family laptop wants a passcode. A work machine wants encryption. A private desktop in a locked house may be fine with neither.
Settings → Data → Export backup writes a single file containing everything. Do this now, and again whenever you've entered a batch of transactions. This is the only safety net that exists.
Reference
Ten screens down the left-hand rail. Here's the job of each, and one thing that isn't obvious.
Total value, gain, income received this year, and your money-weighted return across every account.
Not obvious: The headline return is XIRR, not a simple percentage. It accounts for when you put money in, so it tells you what your money earned — which is usually not what the fund returned.
Your accounts and the mandates you've grouped them under, with target allocations.
Not obvious: The account wrapper you choose here drives the tax treatment of everything inside it, permanently. Changing it later reclassifies history.
Every open position with quantity, average cost, market value, unrealized gain, and weight.
Not obvious: The average cost shown is your true adjusted cost base including reinvested distributions and prior superficial losses — not a simple average of your buy prices.
The ledger. Buys, sells, dividends, fees, splits, transfers. Everything else is computed from here.
Not obvious: The ledger flags items that need a look — a sell with no matching buy, a date out of sequence, a missing exchange rate — rather than silently producing a wrong tax figure.
Dividends and distributions received, by month, by holding, and by category.
Not obvious: Yield on cost is tracked alongside current yield. For a dividend growth strategy held for years, the gap between the two is the whole point.
Allocation by asset class, sector, geography, currency and account, with concentration warnings and benchmark comparison.
Not obvious: Currency exposure is computed on a look-through basis, so a Canadian-listed S&P 500 fund counts as US-dollar exposure.
Where this ends up. Contributions, expected return, volatility, retirement drawdown, and goals with target dates.
Not obvious: Every assumption sits on the same screen as the chart. Change one and the projection redraws immediately — it's built for arguing with, not admiring.
Drift against your targets, and the specific trades that would close it.
Not obvious: It prefers rebalancing inside registered accounts where doing so triggers no tax, before suggesting anything in a taxable one.
Realized gains, income by category, embedded gains, asset-location review, harvesting candidates, and the forms.
Not obvious: It shows the tax bill sitting inside your taxable accounts if you sold everything today — usually a sobering number worth knowing before you plan a sale.
Currency, tax rates, market data, security, assumptions, and import/export.
Not obvious: The tax rates here feed the Tax Centre directly. They ship with sensible defaults, but setting your real marginal rate makes every estimate yours.
The reason most people buy it
Portfolio trackers usually stop at “you made $14,200.” The interesting question is what you owe on it, and that depends on rules most tools quietly skip. Holdfast implements them.
Realized gains by month, with the effective rate on your taxable investment activity.
The embedded gain across your taxable accounts — the bill if you liquidated today.
Asset location review. The same holdings in different accounts produce quite different after-tax outcomes, and the difference compounds silently for decades.
Loss candidates, with the superficial-loss or wash-sale window flagged so you don't accidentally deny your own deduction.
A word on what this is. Holdfast prepares your investment figures accurately and shows its work. It is not a tax filing service or a substitute for an accountant — it's the thing you hand to one so they spend their time on advice instead of your spreadsheet.
Market data
Prices arrive from a built-in source that needs no key and no sign-up. It covers Canadian (.TO) and US listings, London, crypto and currency pairs, and refreshes when you open the app.
You can instead connect your own free account with a data provider — Finnhub, Twelve Data or Alpha Vantage. There are two reasons you might. The first is privacy: with your own key, prices travel directly from the provider to your browser, so not even the request passes through us. The second is reliability: you get your own quota rather than sharing one.
It's free and takes about two minutes. Settings → Market data has a card for each provider explaining what it's good for, a link straight to its sign-up page, and a Test button that confirms the key works before you leave the screen. Note that the free tiers cover US listings well and Canadian listings poorly — if you hold TSX-listed securities, the built-in source is the better option.
Always available, always fine. If a symbol won't resolve — a private holding, a thin preferred share, a delisted position — Holdings offers a Set price button on that row. The only thing a missing price affects is today's market value. Your cost base, realized gains, income and tax figures are unaffected.
Important
The same architecture that keeps your data private also means there is no copy of it anywhere else. No support team can restore your portfolio, because nobody has it.
Your data can be lost if you clear your browser's site data, uninstall the browser, reset the computer, or forget an encryption passphrase. None of these are exotic.
If you forget a passcode
A passcode can be reset from the lock screen. It only gated access; it never encrypted anything, so clearing it loses nothing — and that's also exactly why it's the weaker option.
An encryption passphrase cannot be reset by anyone, including us. The lock screen will offer to start over from a backup file instead. Keep one.
Questions