DE EN ES FR IT TH
Visualizations · English

Bitcoin Portfolio — Visualizations

Besides the tabular dashboard view, the app offers dedicated visualizations to explore your portfolio history. This page is deliberately kept open-ended — it currently covers the Flow Diagram, the Holdings View, and the Yearly View, and grows with every new visualization.

VISUALIZATION 01

Flow Diagram (Sankey)

Accessible from the dashboard header via “Visualization” → “Flow Diagram” (or directly at /btc-tracking/flow). It draws a Sankey diagram of how your own BTC has moved over time: purchases flow in from the left, sales and external withdrawals flow out to the right, and transfers between your own wallets/exchanges appear as connections between the position nodes. Bookings are grouped by month and by source/target pair so the diagram stays readable even with a long history.

Filters

FilterEffect
From / ToLimit the diagram to a time range
PositionAnchor the diagram to a wallet/exchange — traces its BTC backwards (origin) and forwards (destination)

Color Legend

  • Buy — BTC purchased into a position
  • Sell — BTC sold from a position
  • Transfer — moved between two of your own positions
  • External — deposit from, or withdrawal to, an address outside your tracked positions

Transaction Panel

Alongside the diagram, a panel shows every underlying booking as a card (date, position, type, BTC amount, price, fees, currency, exchange rate, transfer ID, comment). Buy, sell, and transfer in/out each get a small colored badge. A search field above the list filters by any value visible on the cards (position, type, date, amounts, comment, …) — regardless of whether amounts are entered with a dot or a comma. On narrower screens, the panel slides below the diagram instead of sitting next to it.

Interaction in the Diagram

ActionResult
Hover a node or linkTooltip with the exact amount, month, position balance, and the list of individual bookings behind it
Click a node or linkHighlights it and filters the transaction panel to only the related bookings; the panel title switches to “Filtered: …” with a reset button. Clicking the same element again resets it, clicking another one switches immediately.

Interaction in the Transaction Panel

ActionResult
Hover a transaction cardTemporary preview highlight of the matching link/nodes in the diagram (only while no diagram selection is active)
Click a transaction cardPins the highlight for exactly this booking in the diagram — without filtering or shrinking the list, and without changing the panel title/count. Clicking the same card again removes the pin, clicking another card switches the highlight immediately.
Why two different click behaviors? Clicking directly in the diagram is for narrowing down (“show me only what belongs to this node/link”). Clicking an already visible card in the list is for quick visual lookup (“where in the diagram is this one booking?”), without losing your place in the full list.
Flow diagram with color-coded connections and the transaction panel
🖼 Screenshot coming soon
images/flowchart.png
Flow diagram with the transaction panel on the right Click to enlarge ↗
VISUALIZATION 02

Holdings View

Accessible from the dashboard header via “Visualization” → “Holdings View” (or directly at /btc-tracking/holdings). A full dashboard built from individual tiles, centered on portfolio distribution, key metrics, and yearly performance — including a breakdown down to the level of individual purchases. Like on the overview page, tiles can be freely rearranged by dragging the handle (up to 3 per row, arrow buttons on mobile), and “Reset layout” restores the default arrangement.

Allocation & Metrics

A donut chart shows the distribution by wallet/exchange (share of total value), next to a tile with the central metrics: total BTC, total value, performance in %, holdings in satoshi, invested amount, already-realized gain/loss, total gain/loss, and the number of transactions.

Yearly Charts

Three independent bar charts, one bar (or bar group) per year:

ChartShows
BTC holdings per yearTotal BTC holdings across the whole portfolio as of Dec 31 of each year (or now, for the current year), in Bitcoin orange
Buys & sells per yearBuys, stacked by wallet/exchange (each position its own blue/teal shade), next to a separate Sells bar (purple) for the same year
Realized gain/loss per yearSale proceeds minus the weighted average cost basis of the sold BTC — green for gain, red/orange for loss
Unrealized gain/loss per yearHoldings value at year end minus cost basis at that point. Uses the live price for the current year, and the Dec 31 reference price described below for past years — if that's still missing, the bar stays empty

Gain/Loss per Purchase

Two more charts (percentage and absolute amount) with one bar per individual buy transaction, sorted chronologically. The color combines sign and FIFO status — computed portfolio-wide, which purchase has already been (partially) “consumed” by later sales:

  • Held, in profit / held, at a loss — bold color, not yet sold
  • Partially realized — muted shade, part of it already sold
  • Fully realized — palest, fully sold

Large outliers are compressed (symmetric log scale above ±100%, or a threshold automatically derived from the data for the currency chart) so that a single extremely high or low purchase doesn't shrink every other bar on the axis to invisibility — the tooltip and purchase details still show the real value.

Purchase Details

Clicking a bar in either of the two gain/loss-per-purchase charts opens the corresponding Purchase Details tile: date, position, BTC amount, price, total amount, fees, gain/loss in % and amount, comment — for partially/fully realized purchases, also the individual related sales with the BTC portion consumed from each. Use the arrow keys / to browse chronologically to the previous/next purchase while a selection is active.

Reference prices for past years: the app seeds an approximate BTC year-end price (Dec 31) per currency for past years in the background once — that's exactly what drives the unrealized bars for past years above. A dedicated tile lets you inspect and correct these values yourself, and fill in a year the background seed doesn't yet cover (e.g. a year that just ended).
Holdings View with allocation donut, metrics, yearly charts, and gain/loss per purchase
🖼 Screenshot coming soon
images/holdings.png
Allocation donut, metrics, and BTC holdings per year, below that gain/loss per purchase Click to enlarge ↗
VISUALIZATION 03

Yearly View

Accessible from the dashboard header via “Visualization” → “Yearly View” (or directly at /btc-tracking/yearly). A selector at the top switches between the overall view and a single year (the choice persists across reloads) — all tiles below adjust accordingly. Here too, tiles can be freely rearranged (up to 2 per row), including “Reset layout”.

Holdings & Value Over Time

A line chart with two axes: holdings in BTC (orange, left axis) and value in the selected display currency (green, right axis) — for the overall view across the full history (year marks on the X axis), for a selected year broken down into its 12 months.

Bitcoin Price (History)

A standalone line chart (purple) with the pure BTC price history in the selected display currency — independent of the transaction-bound time range of the holdings/value chart above, since it shows the complete available monthly price history (or, for a selected year, just its 12 months). “Edit Prices” opens a year-grouped, collapsible dialog for manually entering/correcting individual monthly prices — the current month there always uses the currently stored price automatically and isn't editable.

Buys & Sells

Every buy/sell transaction in the selected period as its own card, with independent show/hide filters for buys and sells. Buy cards show date, BTC amount, price, total amount, fees, and gain/loss in % and amount (including a “Partially/Fully realized” badge). Sell cards additionally break down the composition from historical purchases (FIFO — oldest open purchases consumed first): per consumed purchase lot, the amount, the original purchase date, the holding period in days, that lot's proportional gain/loss, and a tax-free/taxable badge (holding period ≥ 365 days counts as tax-free, unless a cutoff date set in Settings says otherwise — informational only, not tax advice).

Transfers

Deposits and withdrawals (TRANSFER_IN/ TRANSFER_OUT) of the selected period, also shown as cards with date and BTC amount. Three mutually exclusive filters — All, Paired only (transfer between two of your own positions, the counter-booking is found automatically via the shared transfer ID and shown as “From”/“To”), and Solo only (deposit/withdrawal without a counter-booking — the default filter).

Independent FIFO calculation: the lot breakdown and holding period in this view are calculated independently of the Holdings View — both use the same FIFO logic (oldest purchases consumed first, portfolio-wide across all positions), but are deliberately implemented separately.
Yearly View with holdings & value over time, Bitcoin price history, buys/sells, and transfers
🖼 Screenshot coming soon
images/yearly_view.png
Holdings & value over time and Bitcoin price history, below that buys/sells and transfers Click to enlarge ↗
ROADMAP

What's here — and what's next

This page is deliberately kept open-ended: every visualization gets its own numbered section up top, and the app's “Visualization” menu already reserves a spot for upcoming chart types alongside the Flow Diagram.

  • Flow Diagram (Sankey) — buy/sell/transfer flow over time, with a filterable and searchable transaction panel
  • Holdings View — allocation, metrics, yearly buys/sells, realized/unrealized gain/loss, and gain/loss per individual purchase
  • Yearly View — holdings & value over time, Bitcoin price history, buys/sells with FIFO lot breakdown and tax badges, transfers
  • More visualizations — will be documented here as they become available