A financial dashboard, and the three numbers most of them get wrong
The hard part of a financial dashboard is not the layout but deciding what each figure means, how old it is allowed to be, and what to show when the source is unreachable, because a stale number and a current one are visually identical and only one of them is safe to act on.
A financial dashboard puts money on one screen: balances, positions, exposure, profit and loss. The layout is a solved problem and the numbers are not.
Number one: how old is it
Almost no dashboard says. A figure from four seconds ago and one from four minutes ago look the same, and the difference only becomes visible when somebody acts on the second. Putting the read time next to the number, in text, costs nothing and is the single change that most improves how much a dashboard can be trusted.
Number two: what a position is worth
Most dashboards value a holding at the last traded price, which is what one unit sold for rather than what your position would realise. In a deep market the difference is negligible. In a thin one, or a large position, it is the whole point. A dashboard that knows the order book can show what you would actually get; one that does not should at least not imply precision it has not got.
Number three: unrealised profit
It inherits every problem above and adds one: it is computed against an entry price whose definition varies. Average cost, first in first out, or the price of the specific lot, all give different answers on the same holding, and few dashboards say which they used. Worth reading as a direction rather than an amount unless you know.
What to show when the source is down
Nothing, and say so. The tempting behaviour is to keep displaying the last known value, because the screen looks broken otherwise. That is precisely the wrong instinct: an empty panel that says the exchange did not answer is honest and mildly annoying, while a stale panel that looks fine is dangerous and invisible. This is the one design decision in a financial dashboard where the ugly option is correct.
Live, right now, on this page
| Market | Price | Funding | 24h volume |
|---|---|---|---|
| BTC | $76,845.50 | 0.0013% | $512,540,036 |
| ETH | $2,390.55 | 0.0013% | $284,004,266 |
| SOL | $99.06 | 0.0013% | $77,565,578 |
| HYPE | $81.50 | 0.0007% | $12,355,876 |
Read from a live market as this page rendered, through a public endpoint that needs no key. Read at 2026-09-02 09:22 UTC; accurate as of that time and not afterwards.
Describe something and watch it get built.
Open the builder, or start from a working app and change it.