Documentation

The Portfolio tab

The home tab. At the top: your value and accounts (your insights and alerts live in the topbar bell, on every tab). Below: the value chart, then cards for holdings, allocation, risk, dividends, events and your own trading activity. Every amount respects the display currency picked in the topbar — converted at each day's historical exchange rate, not today's.

On mobile, the fixed header fades gradually into the scrolled page. Its longer tint and blur transition keeps the lower part transparent.

Value & accounts

The Portfolio value tile shows your total (cash included — hover the value for what counts) and today's change. The refresh icon in the top-right corner fetches fresh prices. Its larger, thicker, lighter gray icon sits close to the card edges, with rounding that follows the card’s corner. Its tooltip shows the last update time and refresh help; the shared circular spinner appears while it works. A mini donut splits the value across your accounts — each named group of hand-added assets one of them; its colors tint the account names below. It keeps the same compact size as the Allocation ring as you resize the panel, with less empty space above it.

P/L is total. It includes realised gains from earlier sells and everything you put in — not just the unrealised gain on what you currently hold. Units that arrive with no purchase behind them (a coin transferred in from a wallet or another exchange) count as money put in, valued at what they were worth on arrival, so the profit shown is what has happened since rather than the whole position. Staking rewards, Earn interest, airdrops and rebates are the exception: nobody paid for them, so all of their value is profit. The figures reconcile — your portfolio value minus your net contributions is your cumulative profit, and the tile differs from that only by the positions you have closed entirely, which it does not count.

The percentage beside it is that profit over the money put into these positions — every buy at its day’s exchange rate, so sale proceeds you re-invested count again — the same basis as the Return column per holding, taken over the whole portfolio (and the figure the Social snapshot shares). It is a simple profit ratio over the whole life of the portfolio, not a yearly rate; the TWR and IRR rows under it are the ones to compare with a fund or an index.

Two dialogs behind the figures. Click the Portfolio value figure — the amount itself opens the dialog, the title above it is plain text — for where it came from: deposits, withdrawals, dividends and interest, fees charged in cash, units transferred in or out, rewards in kind, profit on open positions (the Total P/L tile), profit on closed positions and a balancing “other cash movements” line — adding up to today’s value to the cent, each line with its own ⓘ — plus where the value sits (holdings vs cash) and the money moved into securities (buys including re-invested proceeds, sales, net). An account whose export has no cash history (a DEGIRO file) is named rather than shown as zero — and a deposits or withdrawals line that is zero says so right on the line (“no … rows in the imported data”), in neutral grey rather than a green positive. Click the Total P/L figure for every way to read it: the same profit over the gross money put in (the tile’s percentage), over the net capital in the positions (“value − P/L”), the whole account’s gain over net deposits, the profit including closed positions, and the yearly TWR and IRR — each with a one-line mental model and the full reasoning behind its ⓘ. The assistant can open either (“show me where my portfolio value came from”).

Every coloured number explains itself. Hover a percentage on this tile — or tab to it, the words are the same either way — and it says what it is measured over. Return p.a. (TWR): “Time-weighted return, annualized. +187.1 % in total. Since 2017-12-25 — 8.69 years.” Return p.a. (IRR): “Money-weighted return (IRR), annualized. Your deposit timing counts towards it, unlike TWR. Since 2017-12-25 — 8.69 years.” There is no cumulative IRR to show beside TWR’s: a money-weighted rate is fitted to your dated cash flows rather than compounded from a curve, so the tip names the span instead of borrowing the time-weighted total. Under a year of history there is no yearly rate at all, the row prints the cumulative total itself, and its tip says so. The Total P/L amount above them says what the figure is — the profit over the money put in, and the same Since… line — under its “click for every way to read it” invitation. It does not repeat the time-weighted numbers: those are the TWR row’s own, two lines below it, and that row explains them itself. Until 4 September 2026 this context sat in two small grey lines under the rows; moving it into the numbers gave the tile back two lines and let all three tooltips say it the same way. The friend’s shared copy of this tile on the Social tab gets the same tooltips, written by the same builder, in that sheet’s own date format.

The return rows never break in two. Return p.a. (TWR) and Return p.a. (IRR) stay on one line with their number at every window width, with the assistant docked, maximized or away. The tile has a floor — 196 px, measured as the widest row it can print — and when the band cannot give three tiles that much it lays out two, then one, rather than squeezing the card: the column count gives way, never the row. On a phone that means Cash and Total P/L take the full width one under the other instead of sharing a line, which is where the numbers used to drop under their labels. Same rule, same floor, on the friend’s copy of the tile.

The cash share is measured against the whole portfolio. The percentage beside the Cash balance is that balance over the Portfolio value tile’s own figure — every holding at today’s price plus that same cash — which is also the total each holding’s weight is measured against, so the tile and the Cash slice of the Allocation card’s asset-class donut always agree. One decimal; hover it (or tab to it) and it says so. A portfolio the app values at nothing has no share to show, so the tile prints the balance on its own; a real portfolio you are fully invested in genuinely reads 0.0%, and says it.

This is not the cost basis on the Taxes tab. For tax, moving your own coins between wallets is not a purchase: the original lot’s date and price carry over, and pricing the arrival at market would understate the taxable gain. That tab keeps its own cost, and the Cost column there explains the difference.

Time travel — the tab on a past day

The clock in the Portfolio value tile’s top-right corner, beside the refresh icon, shows the whole Portfolio tab as your portfolio stood at a past day’s close: what you held that day, what it was worth, what it had earned. Click it and a small Time travel popup opens right below it.

Simple view

The whole tab, reduced to only the cards you pick, one under the other, in your order — made for a phone, where the full page is a long scroll past cards a glance does not need. Off by default, and while it is off nothing changes: the tab renders exactly as described on this page, and no other tab is ever affected.

The animated Fortunest logo keeps a soft drop shadow in the header, including when WebGL is unavailable.

On a wide Portfolio view, the top summary runs horizontally: Portfolio value, Cash, Total P/L and Portfolio fundamentals. The three statistics share the space beside Portfolio value and wrap only when needed to keep their figures readable.

Insights & alerts

The Insights & alerts bell in the topbar, immediately left of your account button, is where the app tells you what deserves attention today — and, since 31.08.2026, its only home: the dashboard card it once minimised into is gone, along with the “Expand card” button and the remembered choice between the two. What the feed notices: the biggest mover by portfolio impact, earnings this week, concentration warnings, holdings near their 52-week high or low, idle cash, and a fund you hold that has a materially cheaper line on our shortlist — that last one naming both funds, both fees and the yearly difference, and saying in the same breath that the two were matched on broad asset class and nothing finer, so it is a fee comparison to look into rather than a swap to make (a developed-world fund and a US-only one are the same class and a very different exposure). Once the assistant is connected, up to four ✨ AI insights join — model-found patterns beyond the fixed rules, like correlated exposures or event-risk clustering — and every alert digest delivered by Settings → Alerts lands in the same list. The bell carries a count of everything still new on its corner. (It is the only bell in the app: the Social tab’s Friends & mentions button wears a people glyph, so the two never read as the same thing.) Hover the bell and the feed opens as a classic notification list: newest first, each row its glyph, its sentence, how long ago it arrived, and a dot while it is still new — clicking a row acknowledges an observation, or opens an alert’s digest in a dialog (the first open marks it read). It opens on click and on keyboard focus too (which is what a tap does on a phone, where the list is a bottom sheet), and Escape closes it. The bottom sheet is a phone posture only — screens 600 px and narrower, the same width the bottom control panel appears at. Every desktop window from 601 px up gets the 380 px popover hanging under the bell, with the page still visible and scrolling behind it; before 04.09.2026 the switch happened at 860 px, so a browser window around 800 px wide filled itself edge to edge with the list. The Social tab’s Friends & mentions list is the same component and moved with it. The bell rides every tab, so a delivered alert is one glance away wherever you are, and reading the list marks nothing as read by itself — only clicking a row does.

Every row also carries a small Ask AI button at the right end of its time line — the assistant’s three sparks and the words, “Ask the AI assistant more about this.” under the pointer. It closes the list and asks the assistant to explain that item, as your own message in the current conversation, and the answer starts straight away: an insight is quoted with when it appeared, a delivered alert with its title and when it arrived — plus the digest’s own words for the alerts the app writes from your own portfolio and market data (the brief, earnings, movers, drawdowns, fair value, events). A social or consensus-shift digest carries your friends’ words, and the question goes out as yours, so it is asked about by its title alone. Asking leaves the row as it was — the insight still new, the alert still unread. The same button sits inside every explanatory ⓘ tooltip in the app; Ask AI in the assistant chapter has the details.

The Insights & alerts bell's notification list: rows for the biggest daily mover, a concentration warning and a cheaper fund tracking the same class — each with an outlined glyph, a relative time and a dot while unread
The bell’s list — rule-based observations work immediately; ✨ ones appear once the assistant is connected.

Every mark in the bell’s list is an outlined glyph in the app’s own line style, never an emoji (26.08.2026) — a bar chart for the day’s biggest mover, a calendar for earnings, a warning triangle for concentration, an arrow into a ceiling for a holding at the edge of its 52-week range, a banknote for idle cash, a price tag for a cheaper same-class fund, an hourglass for a stale data source, the bell’s own glyph for a delivered alert, and the three-spark mark for anything the assistant wrote. They take the row’s own ink instead of the platform’s emoji palette, so the list reads as one set on every machine.

An unread row in the bell’s list is marked by its lime dot alone, plus a slightly bolder line — the whole row used to sit on a lime wash, which said the same thing far louder than it needed to and left the hover highlight nothing to say.

The value chart

Seeing a holding on a date you know you didn't own it? Where an import cannot show when a holding arrived — an exchange API hands over only a few years of trades, a CSV only the range you asked for — the dashboard has to date those units by rule rather than invent a purchase, and the chart values them from that date onwards. The rules, what they deliberately get wrong, and how to close the gap are in Getting your data in.

The chart's baseline

Every comparison on this card is measured from one day: the start of the range you picked, or the “from” date when you set one — one or the other, never both. (“All” with no date means your first transaction.) Everything restarts on that day together.

One thing deliberately stays put: a box zoom does not rebase. It explores the window you already chose, and re-running every simulation on each drag would cost a server round-trip per benchmark.

IRR moves with the baseline too, but it is the one line the browser cannot work out for itself. A time-weighted return is a product of daily growth factors, so any window of it is just a ratio — the page rebases it instantly. A money-weighted rate needs your dated cash flows, so the server recomputes it for the window you picked, opening as if the whole portfolio had been bought on the period's first day (the same seeding the benchmark lines use). What you read is therefore a genuine IRR of that period, comparable to the TWR beside it, never the all-time figure relabelled. It is the only thing a range click waits for, and each window is remembered. Windows shorter than a year show no cumulative IRR line — an annualized rate over three months would be a guess — and the row beside the lens switch says "IRR needs a year in view". The Trailing 12M p.a. lens needs no round-trip and no minimum window: the year behind a month is the same year whatever range is on screen, so its pair is drawn from the full history and only cropped.

Benchmarks

Any combination of S&P 500, MSCI World, Nasdaq 100, US bonds (AGG), gold, the US dollar and Bitcoin — all total-return. In the value views they are flow-matched: the line shows what your same deposits on the same dates would be worth in that asset instead, starting from the baseline above. In Return % they follow the lens — their plain cumulative total return, or their own trailing-12-month returns, stepped monthly, under Trailing 12M p.a.

The Portfolio heatmap

The map shows nothing on an empty portfolio — the tile above already says there is no data yet — and appears on its own, without a reload, as soon as holdings arrive: the demo data, a first import, a source switched back on, a connector sync. It follows every later change to the portfolio the same way, re-asking which holdings you have and what they are worth after each one.

Click a sector label to zoom into it; its tiles fill the map and become easier to inspect. Keyboard focus plus Enter or Space works too. The flat All sectors button returns to the whole map. The colour scale, time window and metric stay consistent while zooming. Change and drawdown numbers in tooltips use the same coloured badges as the tiles, including tickers too small to draw. Missing drawdown remains uncoloured.

It shares a row with the value chart when the window is wide enough for both to stay readable, and drops underneath it when it is not — so minimising the assistant pane, or simply working on a wide screen, puts the two side by side. In that row the chart takes two thirds of the width and the map one third. What decides it is the space the cards actually have, not the size of your window: docking the assistant to the side takes width from them without changing the window at all. The pair now joins earlier than it used to — a window about 15% narrower is already enough — and the trade is visible and deliberate: in the narrowest side-by-side widths the chart’s own Portfolio · Benchmarks · Trades · Transfers row wraps onto a second line rather than keeping the map waiting; the controls flow, nothing is cut off, and a slightly wider window puts them back on one. In that row the map is never taller than the chart: it takes its height from the chart beside it and fills exactly the space it is given, so the two cards end in a straight line. Stacked, and on a phone, it sizes itself from its own width as before. Your portfolio as one picture. Every rectangle is a holding, scaled by what the position is worth and coloured by how its price moved; rectangles are grouped into labelled sector boxes, each showing its own size-weighted move, so a cell’s neighbours mean something. The chart above says how the whole thing did over time; this says which parts of it did it.

The colour is the asset’s own price change over the window, in your display currency — the money the Holdings table beside it is in — green up, red down, grey for flat. The map is read against that table, so it measures the way the table does:

The Explore heatmap is the other way round: its grids are instruments, not your positions, so they stay in each listing’s own currency and say that. The scale is printed in the legend, and it adapts where no fixed number could: a quiet day still reads on the familiar ±3% scale, while “Pos” on a book held for years scales to what that book actually did rather than painting everything one flat green. Whatever cap is in force, the legend states it.

The heatmap only paints what it can measure. A holding with no usable price history is left out rather than shown as a grey “flat” cell — no data and no movement are not the same statement. Positions opened after the window began are still shown, counted in the legend’s caption, and say so in their own tooltip. Unless the card is genuinely wide, that caption tucks into a hover tooltip on the colour ramp itself. With nothing imported yet the card does not appear at all.

A position the map cannot show is named under it. A holding worth a tiny fraction of the book gets an honest rectangle — a hairline, or nothing where its sector box has run out of room — so a fine-print line below the grid lists them: “Too small to draw: … · Not placed (no market data): …”. Every ticker there opens that position’s drawer, exactly as clicking its cell would. If the map’s data cannot be loaded (“Market data is unreachable right now”), the card offers ⟳ Retry to load it again at once. Beside the value chart and when maximized, this caption has a stable two-line area with scrolling for longer lists, so its contents cannot repeatedly resize the map. The same line, and the same reasoning, as on the Explore heatmap — it is one card rendered twice.

On the first load the cells stream in behind a real progress bar; after that each window is cached, so flipping back is instant. The assistant can bring you here and set the window for you — “show me the heatmap of my portfolio since I bought”.

The holdings table

Long-table headers remain fixed during scrolling, including their sorting controls and horizontal column alignment. Small tables retain their normal scrolling labels.

Every ticker carries its issuer’s logo. Beside the symbol in the holdings table, in all four Explore tables, in the asset finder’s results, at the top of an asset’s details and on the tickers the assistant mentions in chat. A table of holdings is scanned rather than read — you already know which position you are looking for — and a mark is found faster than four capital letters, which are unusually hard to tell apart at a glance (AMD, AMZN, AMAT). The ticker never goes away; the logo is the fast path, not the name. A listing nobody draws a logo for — a small ETF, a newly listed company — shows a lettered tile instead, which is normal rather than a fault. The marks are fetched once, kept on our own server and served from there: nothing on the page reaches out to a stranger, so opening Explore tells nobody which shares you were looking at.

Last traded shows the latest recorded buy or sell date across accounts and sits before Weight by default. Click its header for newest first, then oldest first. A dash means no recorded trade; these rows stay last in either direction. Transfers, rewards and reconciliation rows do not count as trades.

The card’s own Holdings ⓘ says what the table does with a click — “Click a position to see its history and analysis” — on hover rather than as a permanent grey line above the filters.

The header stays while the rows scroll (since 4 September 2026): on a desktop, wherever the table fits the card’s width, the column labels stick under the top bar as you scroll down a long list. On a phone the Asset column stays put instead — the ticker, its logo and the watchlist star hold the left edge while the numbers scroll sideways under them, and since 10 September 2026 that column is also kept to under half the screen. A holding with a long name — the kind an exchange gives a liquidity token — used to run it across most of a 393 px phone, which pushed Qty off the right edge and Price out of sight behind the sideways scroll. Long names now shorten to an ellipsis earlier, with the full name a tap away in the cell’s own tip, so Asset, Qty, Price and Value are all on screen at once. A portfolio of plain tickers keeps its own narrower column, and nothing changes on a tablet or a desktop.

The Asset column shows the ticker only — hover briefly for the full company name. Every listed row opens with its watchlist star, left of the asset mark and the ticker — the same favourites the asset finder and the Explore tables toggle, kept in sync live, and in the same place they show it — so a holding is starred right where you already read it; the star takes the click for itself, and clicking anywhere else on the row still opens the drawer. Assets without a ticker show their name greyed; the same hover tip says they are unlisted (and whether their value is estimated from your transactions) — an unlisted asset has no market symbol a watchlist could hold, so it shows no star, though its slot stays reserved so every row's mark still starts on the same edge. A rare over-long name is cut off with an ellipsis rather than widening the column — the tip always carries it in full. Account badges show which broker holds each position.

The Drawdown column says how far below its own 52-week high each position trades right now — 0.0% at that high, −31.2% a third below it, with the date of the high on hover. It is where the position stands today, not the worst fall it ever took, and that is the useful one: it answers “what of mine is beaten down?” in a column you can sort. It is measured on the holding’s own price in your display currency, so a currency move counts the way your account feels it, and it shows a dash — never a zero — where no price history covers the year, because a position nobody can price is not a position sitting at its high. The Explore tables ask the same question of any listed stock, measured against the market’s own reported 52-week high — that one is an intraday figure, so the same ticker reads a point or two deeper there than here, where the reference is the highest daily close. Both are honest answers; the column tooltips say which is which. The assistant can rank on it (“what’s most beaten down?”, “good companies that just sold off”).

The Fair value column carries the asset drawer’s Fair value card into the table: the confidence-weighted average of six textbook valuation models (DCF, Graham, Lynch, EV/EBITDA, dividend discount and sector multiples) for every position you hold. It is on by default; behind the ⚙ sit seven more — FV upside, the gap to today’s price as a signed percentage, and one column per model (FV DCF … FV Multiples) — so you can see where the average came from. All eight sort. The fair value is stated in the holding’s own trading currency, the same unit as the Price column beside it, so a euro-listed position shows a euro fair value against its euro price and the row never compares two currencies; the upside is a ratio and reads the same whatever the money. A model the outlier guard left out of the average is still shown, dimmed, with the reason on hover — asking for the DCF and being given a blank would make the column look broken. Anything the models cannot value shows a dash: an ETF trades at the value of what it holds, a coin has no cash flows, and a manually tracked asset has no fundamentals at all. The Explore tables carry the same eight for any listed stock. Illustrative orientation over public fundamentals — not financial advice, and not a price prediction.

Per-asset drill-down

Click any holding to open its detail panel. Its head opens with the watchlist star, left of the asset mark and the name — it says at a glance whether the open asset is already a favourite, and one click stars or unstars it, with the Holdings table, the finder and the Explore tables following instantly (the unowned-stock drawer has the same star; an unlisted holding, having no market symbol, has none). Below that:

On a wide window the panel opens beside the dashboard rather than over it. Given room for three columns it docks as the middle one — dashboard, asset details, assistant chat — with nothing dimmed behind it. The dashboard stays fully usable: it scrolls on its own, and clicking another heatmap cell, holdings row or favourite swaps what the panel shows instead of asking you to close it first. It docks from about 1900 px of window width with the assistant chat docked beside it, and from about 1480 px with the chat closed or floating; narrower than that it is the familiar overlay with its dimmed backdrop. The arrow button next to the panel’s ✕ switches between the two by hand — the same control the assistant chat uses — and your choice is remembered for the rest of the browser-tab session. On a phone there is no such button: a phone screen can never hold the column, so the panel keeps just its ✕. Both buttons look like the assistant chat’s own: plain icons that light up on hover, taking a frosted backing only while the panel is scrolled under them. And with the panel docked, the header’s search box and quick-notes pad stay exactly where they always are — on the row with Feedback, Settings and your account, their right edge on the dashboard’s; only the overlay pulls them out of the bar to clear its ✕. While it is docked, maximizing a card fills the dashboard column only: the ⤢ on a chart card or on the Portfolio heatmap ends the enlarged view exactly where that column ends, just as it already stops short of the assistant chat, and the panel stays beside it at full brightness and still clickable. A chart maximized from inside the panel spreads over the dashboard for the same reason. Esc closes one surface per press there — first the enlarged card, then the column — and the press that closes the column leaves the assistant chat docked beside it exactly as it was.

Keyboard shortcuts

Press ? anywhere no field has focus and the app shows this list in a sheet. Every table row, star and mark that opens on a click opens on Enter or Space too, and every dialog — a holding’s panel, Settings, the maximized chart, a picture — keeps the keyboard focus inside it while it is open and hands it back to what opened it when it closes.

KeysWhat happens
⌘ K or Ctrl K, or /Search any asset — the caret lands in the asset finder. / only counts when no field has focus, so a slash typed into a note stays a slash.
?The shortcut sheet.
EscCloses the open dialog or panel. With nothing open on a desktop, minimises the assistant pane to its button.
Tab / Shift TabMoves between controls. Inside a dialog the focus stays in it and wraps from the last control to the first — the page behind is never reached by accident. Two surfaces stay reachable over an open panel on purpose: the assistant pane and the finder.
Enter / SpaceOpens the focused row — a holding, a dividend line, an event — or presses the focused ★ / ⊞ mark, exactly as a click does.
← →, + −, 0In a chart, once tabbed to: pan, zoom, reset. In a picture opened from the feed: previous and next, zoom, fit.

The holdings table’s sort is remembered in your browser along with its columns and period window, and each sortable header says which way it sorts to a screen reader (aria-sort). Chart range and mode strips are announced as tabs, the correlation heatmap on the Risk card has a View as table fold beside it, and the Insights & alerts count and every “Saved.” line are read out when they change.

Allocation & diversification

The Allocation card leads with verdicts, not sentences. Every takeaway is a check with a colour — ● red a real problem, ● yellow worth a look, ● green fine, grey just a fact — and the card shows only the flagged ones, worst first, at most four, each as a dot, the key number in bold and a few words: ● 0% bonds · target 25%, ● 42% in Technology, ● ~3 independent bets, ● 15% in Bitcoin, each with a tiny bar beside it (the asset-class bar carries a thin strip of your targets, so a missing class is visible as a slice with nothing above it). The fine ones fold behind ▸ N more (all fine); a portfolio with nothing to flag shows one green line, Nothing to flag — N checks passed. The descriptive facts — the asset-class mix ("67% equities · 26% crypto · 7% other"), top currency, top company size, effective number of positions — are a row of small chips under the caption. On a wide card those chips stack into a column of their own with the flagged rows beside them in a second column, so the space beside the diversification dial is used; a narrow card — including a window narrowed by the docked assistant — stacks them one above the other as before. Hover any line or chip for the full sentence; click it and the Full breakdowns open, scrolled to the matching breakdown and ringed for a moment (the lines are buttons, so the keyboard works too) — a line about your positions (the biggest one, the effective number, the independent bets) scrolls to the Value per asset card just above instead. The card’s ⓘ walks it the same way: what shows at a glance (the flagged lines and their colours, the chips, the score), then what Full breakdowns holds, with an Ask AI button for anything it leaves open. What turns a line red: one position over 15% (a broad fund that size is a grey fact — a gold or commodity fund is not broad and stays red), over 40% in one sector, an asset class more than 10 points of the portfolio short of your target, three or fewer correlation-adjusted independent bets, a fund sleeve costing 0.75% a year or more, a sector held at three times the index's weight; yellow is the milder version of each (over 70% in one region, a class under half its target, up to six bets, a TER from 0.40%, any tilt worth a headline). Beside the list sits the diversification score (0–100, category-based). Expand the card for the full breakdowns: segmented bars — one rounded pill per category — over regions, sectors, asset classes (equities / bonds / gold & commodities / real estate / crypto / cash — a bond ETF finally counts as bonds, not just "ETF"; ETFs classify by their fund category with a curated override list for the usual UCITS suspects — the list also catches the European physical-gold ETCs that market data lists as ordinary shares, such as Xetra-Gold (4GLD), so they count as gold rather than equities — and manual assets carry the class you pick in their form), company sizes, asset types and currencies (per-dimension sub-score beside each title, constituent tickers when you hover a segment, color-coded daily P/L per category), then the sector tilt and the drift bars. Crypto is its own bucket; gold and commodity products — US gold ETFs such as GLD and the European gold ETCs on that curated list alike — are the Commodities asset type, so an ETC the market data lists as a share is typed, sectored and sized as the fund it is rather than as a company; manual assets appear as "Other assets".

Value per asset. A card of its own, directly above the Allocation card and always in view: every holding by its current value, colored by asset type, the ones under 0.1% of the portfolio folded into one other bar. The Bars | Pie switch in the card’s top-right corner draws every positive-value holding and cash in a category pie — a color per investing category, shades per holding, categories grouped by their market sector (largest sector first, then its largest category — the same order with or without the Market sector circle) and holdings largest first inside each category. The pie has no legend: every category (and sector) is named on its own wedge, and a name that does not fit is shortened — Consumer Cyclical becomes Cons. Cycl., Communication Services Comm. Serv., Healthcare Health. or Heal. — with the full name in the wedge’s hover readout. Where the card is wide enough the pie stretches from the title’s line down to the Market sector circle checkbox, standing between the title, the switch and the checkbox; its outside labels never run over them. Hover a holding’s bar or slice for its asset card — the week’s mini chart, the price and today’s and the week’s move in the asset’s own currency, and the position’s value and share of the portfolio (of the category, when the pie shows one category); the other group, cash and the category and sector wedges show the asset or group, value and share. The Log scale checkbox under the bars (one line, in the corner under the chart, like every chart’s) — the same one the value chart carries — steps the axis by whole decades, so the small positions in the tail stand tall enough to compare; a bar’s height is then no longer proportional to its value, and the axis starts one decade below your smallest holding, since zero has no place on a log axis. The pie has no Log scale checkbox (a share of a whole has no log version); the bars keep their setting for when you switch back. ⤢ stretches the chart over the whole screen, with the same switch and controls; Esc or ✕ brings it back. The bars carry their tickers slanted underneath, in the card and full screen alike — all of them or none: where they are crowded the labels get smaller and steeper, then every second one drops to a lower row on a thin line up to its bar, and only when even that cannot fit do they go away altogether. A holding with no ticker, shown by its name, is labelled with the name’s first word and … (“Invitae…”); hover it for the full name. With only a few holdings the bars get rounder tops. In the card, the pie writes each wide slice’s ticker inside it — level, or along the ring where it cannot stand level — and the smaller slices’ tickers beside the ring on a thin line, skipping the smallest where they crowd together. Full screen, the bars’ legend moves up beside the title, and the pie slices show their ticker, value and share — inside the slice wherever the label fits in it, on fewer, longer lines if that is what fits, otherwise beside the ring on a thin line leading to it; where the small slices crowd together, the smallest ones go unlabelled rather than have their labels pile up or their lines cross, and hovering one still shows its details. Click any bar or outer holding slice to open that holding’s details (the other bar is several holdings, so it only shows its hover readout). The slices are drawn like the account ring on the Portfolio value tile: a ring of the same thickness, separate slices with its rounded ends and soft shadow, a small gap between each two. The chart remembers bars or pie, and log or not, for as long as the browser tab is open.

The Pie view groups holdings by editable investing categories. Pale rounded category wedges extend behind outer holding slices, with curved labels and colors from your selected chart palette. Categories and their holdings sort largest first within their parent. Cash appears in both levels. Click a category to expand its holdings-only pie; Back to all categories restores the overview. Detail percentages are shares of that category. The regular pie is 348px tall; maximize it for more room.

Market sector circle is unchecked by default. Enable it below the pie to add a third, innermost level: market sector → investing category → holding. Crypto, funds and cash retain their own portfolio buckets. The choice is remembered while the browser tab stays open. Switching it off only takes the sector ring away: every category keeps the colour and the place it had under its sector. Each category refines one market sector; a new assignment that would mix sectors shows an error. Existing cross-sector labels stay saved and appear qualified by sector in the three-level chart.

The small/fast assistant model assigns missing categories during ingestion, with market sectors as context and examples such as Semiconductors, SW, Fintech, Insurance, Health and Aerospace. Categories persist and manual edits survive reimports. Edit them in the last Category column of Holdings; use Category chips under More filters or type a category in search. Custom and market-priced asset add/edit forms also include Category, synchronized with Holdings. Leave it blank for Other; explicit blank choices are not classified again. Existing imported portfolios get a background backfill. If the assistant is unavailable, missing categories appear as Other and remain editable.

Index funds count as what they hold. A broad ETF's value is split proportionally across its real sectors, regions and company sizes (look-through): live fund sector weightings where the provider publishes them, otherwise a static factsheet table for the index the fund tracks (S&P 500, MSCI World, ACWI, FTSE All-World, Nasdaq-100, MSCI EM, EURO STOXX 50, STOXX Europe 600, FTSE 100, MSCI Europe and more — refreshed quarterly, with the as-of date shown). The diversification score, its sub-scores, the score history and the Sector-tilt comparison all use the split view, so a portfolio of index funds scores as diversified as it really is. The fund is recognised from its own name (iShares, Vanguard, UCITS, ETF…) when its market metadata has not arrived yet, so a freshly imported portfolio never shows its biggest fund as "Unknown". More generally, “Unknown” only ever means we asked and nobody has the data: a holding whose market data is still on its way is counted in no category at all, and the card shows a progress bar where the diversification score goes (“Fetching market data 14 / 15”) with the holdings it is waiting for named, refreshing itself until they land. The currency bar is the exception that rarely waits: a holding’s trading currency is taken from the market first and from your broker’s own export second, so a slow market feed no longer empties that bar down to your cash and leaves the card claiming everything you own is cash. If the data never arrives, after about fifteen minutes the card stops and offers a Try again button, and those holdings do move to “Unknown” — by then a genuine answer rather than a wait. Only a fund with no look-through data at all stays lumped as "Funds (diversified)"; bond, gold and real-estate funds keep their own asset-class buckets. The holdings-table filter still shows one stable "Funds (diversified)" chip per fund.

Allocation drift — where you meant to be

Behind the card's Full-breakdowns expander. The drift bars are the last thing the Allocation card's ▸ Full breakdowns row opens, under the six breakdowns and the sector tilt — so the card stays short until you ask for the detail, and the bars stay at its very bottom. The verdicts' ▸ N more row is a different fold and does not show or hide them. Asking the assistant to show the allocation drift opens the expander for you.

The card's last section, under the breakdowns: current weight against your target, one bar per line, biggest miss first, in three groups — Assets, Sectors and Asset classes. Each bar carries a tick at the target and a tolerance band of ±20% of that target (never narrower than one percentage point): inside it the bar is green, outside it turns amber, and the delta is printed in percentage points. Hover a bucket name for its top ten constituents and their weights; hover a bar for current x% · target y% and the tolerance range.

Sector weights are computed with the same fund look-through as the breakdowns above, so an ETF contributes its own sector mix rather than counting as one opaque holding. Edit targets beside the heading jumps straight to ⚙ Settings → Trades → Allocation targets, and the same link sits in the Trade plan card's heading on the Trades tab, where the allocation-drift and sector-drift criteria score every candidate by that gap. Set no targets at all and the section is not there — drift needs something to drift from.

These bars were a card of their own on the Trades tab until 10 September 2026. They belong here: they measure the very weights this card draws. They moved behind the card's expander on 22 September 2026, and their heading lost its Illustrative badge with the move — a bar of your own target against your own weight is not an estimate.

Risk

Compact tiles computed from your daily time-weighted returns — deposits and withdrawals never count as gains or losses. They pack tightly: on a wide screen all seven stand on one row, beside the docked assistant six do, and on a phone two to a row; the best and worst day always share one line.

The methodology is spelled out in the tooltips (√365 annualization on the calendar-day series, 0% risk-free rate).

If the risk figures cannot be fetched the card keeps its heading and says “Data temporarily unavailable.” with a ⟳ Retry beside it — the same one control every card on the dashboard offers (see one Retry, everywhere).

Dividends & income

A monthly income chart, all-time and last-12-month totals, and a forward projection per holding with forward yield and yield-on-cost.

What the card covers — “Dividend cash received across your accounts, and what your holdings should pay going forward” — opens the Dividends & income ⓘ tip beside its title, ahead of where the numbers come from, rather than sitting as a grey line under the title. The Events card does the same.

Events calendar

Earnings reported in the past 4 weeks come first — click a row to read the actual filed report in a side panel (from SEC EDGAR; the 8-K earnings release, or 6-K for foreign US-listed issuers), with a text excerpt, links to the full filing and an ✨ AI summary once the assistant is connected. Below: upcoming earnings, ex-dividend and pay dates for your largest holdings. 🏛 central-bank rows join the calendar: the next scheduled rate decision of each bank relevant to your portfolio, and its rate changes of the last four weeks — clicking one opens the Macro card. The same tier carries 🏛 data-release rows: the next scheduled US CPI, euro-area flash HICP and US payrolls release dates (dates only, from the official BLS/Eurostat schedules — no forecast data), shown when the series' central bank is relevant — clicking one asks the assistant what the print could mean for your portfolio.

The same calendar can come to you instead: ⚙ Settings → Alerts has a Coming up digest that mails what is on it within a window you choose (1 week to 2 months), filtered to the kinds you care about — earnings, dividends, or central-bank and data days. It is the only alert that looks forward rather than reporting something that already happened.

The card’s own Events ⓘ opens with what it lists — “Earnings, dividends, central-bank and data-release days for your holdings” — followed by what each kind of row means; the sentence is no longer a grey line under the title.

The card streams one holding at a time behind a progress bar naming what it's checking, remembers results across reloads, and marks filings that appeared since your last visit with a new badge. Rows are compact — ticker and portfolio weight, full company name on hover. Beside Dividends & income the list scrolls within that card’s height; on a phone, in any window narrower than 900 px and in Simple view, where nothing sits beside it, the list shows about ten rows and scrolls for the rest.

The card never reports a failure as an empty calendar. If the holdings feed cannot be reached it says “The events calendar could not be loaded” and offers ⟳ Retry; if the stream stalls with holdings still outstanding it names them (“N holdings didn’t answer — retry”) rather than leaving the progress bar parked; and a refresh that fails after a good answer keeps the answer you had and labels it (“Couldn’t refresh — showing the last answer”). The rule across the app is the same: a card is pending, empty, failed or stale, and it says which in words instead of disappearing or showing nothing.

One Retry, everywhere

Since 22 September 2026 every way back out of a failed fetch is the same control: a flat ⟳ Retry in the card’s own muted type, with no box around it, tooltipped “Ask the server for this data again”. It asks the one endpoint that failed — not a page reload — and while that request is out it reads ⟳ Retrying… and cannot be pressed twice.

It now appears in the places that had no way back at all: the Risk card, which used to tell you to refresh the browser, and Trading activity. And it replaces the outlined capsule the Events calendar’s “Couldn’t refresh” and “didn’t answer” lines and the Explore tables’ stale line used to draw — three different-looking buttons for one job, sometimes within a single screen.

Trading activity

At the very bottom, a collapsed one-liner expands into a punch card of your buys and sells per month across all years — your own behaviour at a glance.