Open an old transaction in Gold Silver Ledger, and you'll see a Spot at Time figure that doesn't match the current spot price on your Dashboard. That gap is intentional.
The app uses two different spot numbers for two different jobs — one locked in at the moment of the transaction, one live from the market — and this article walks through which is which, why we keep them separate, and where each one shows up.
The short version
There are two spot prices in play.
Locked-in spot: Captured at the moment you saved the transaction and never changes again. It's what drives your cost basis and the over-spot premium recorded on the transaction.
Live spot: Refreshed every minute during market hours. It's what drives the current value of your held inventory on the Dashboard, Holdings, and Analytics.
A transaction recorded two years ago will always show the spot from two years ago. Today's value of the same item is computed separately against live spot. Both figures are correct — they're answering different questions.
What "locked-in spot" means
When you click Save on a buy or a sell, Gold Silver Ledger writes the current spot price into the transaction at that moment. That figure becomes part of the transaction's permanent record. It will appear, unchanged, every time you open that transaction — five minutes from now, five months from now, five years from now.
The locked-in spot does two things, and only two:
Anchors your cost basis: The per-unit price you paid is preserved with its spot context, so the premium calculation stays accurate forever.
Records what "over spot" meant on the day: Your over-spot premium is the price you paid minus the spot at that time. With the spot locked, the premium figure stays meaningful no matter how much the market moves afterward.
If a coin's market value triples a year later, the locked-in spot on the transaction doesn't move with it.
That's a feature, not a bug — the transaction is a historical record of what actually happened on a particular day, and rewriting it to match today's market would silently destroy the premium and cost-basis information that depended on it.
What live spot is for
Live spot is the once-per-minute refreshed feed described in How often spot prices update. Its job is entirely about the present.
Current portfolio value: Weight × live spot, applied at render time, across every held item.
Unrealized gain or loss: Current value minus cost basis (which is itself anchored to the locked-in spot at purchase).
The four Dashboard spot cards: A direct readout of live spot for each metal.
The Analytics Cost vs Current Value chart: The "current value" half of every bar is computed against live spot.
Live spot never gets written into a transaction's permanent record. It exists at render time, refreshes on schedule, and disappears the moment you close the page.
A worked example
Easier with numbers attached. Suppose you bought a 1 oz American Gold Buffalo in January 2024.
At the time of purchase: Spot was around $3,200, you paid a $90 premium, so the per-unit price was $3,290. Save the transaction and the app writes Spot at Time = $3,200 and Premium = $90 into the record.
Today (May 2026): Live spot for gold is around $4,750. That number lives on the Dashboard, on Holdings, and in any current-value calculation across the app.
Your transaction page still shows: Spot at Time $3,200, Premium $90, Total $3,290. None of those numbers have moved since the day you saved them.
Your Holdings page shows the coin's current value: Roughly $4,750, computed against live spot.
Your unrealized gain on the coin: $4,750 − $3,290 = $1,460.
Three numbers, three different jobs. The transaction's $3,200 spot didn't become "wrong" when the market moved — it was correct at the moment of capture, and that's the moment the cost-basis side of the math depends on.
Where you'll see each version
Knowing which spot drives which surface helps when something looks unexpected.
Transactions History (per-row detail): Locked-in spot. The Spot at Time column never moves once saved.
Transaction CSV export: Locked-in spot in the Spot at Time (USD) column. See Exporting your transactions as CSV.
Holdings page (Cost / Premium / Value columns): Cost and premium are locked-in; Value is live.
Dashboard portfolio value card: Live spot, weighted across all held items.
Dashboard spot cards (the four-metal row): Live spot, direct readout. See A tour of your dashboard.
Analytics charts and cards: Cost-basis side is locked-in; current-value side is live.
Annual Report: Locked-in spot is what built the cost-basis side of each sold row; live spot doesn't enter the calculation at all (sales already have a proceeds figure locked in too). See Generating your Annual Report.
If you ever find yourself uncertain whether a number should match live spot or historical spot, the rule of thumb is: anything labelled "cost," "paid," or "premium" is locked-in; anything labelled "value," "current," or "now" is live.
Why we lock spot at the time of the transaction
The alternative — recomputing premium and cost basis against current spot every time you open a transaction — would feel modern, but would silently corrupt the historical record. A few of the reasons we don't do it:
Premium loses meaning if spot moves under it: If you paid $3,290 with $3,200 spot and a $90 premium, recomputing against today's $4,750 spot would show a "premium" of −$1,460 — which is mathematically true and historically meaningless.
Cost basis must stay stable for tax purposes: Your cost basis for a sold item is what you paid, full stop. Drifting it with the market would make every Annual Report a different report depending on when you generated it.
Audit trails depend on locked records: A transaction is a statement of fact about a moment. Rewriting it would erase that fact.
The Analytics premium chart only makes sense with locked spot: Average premium percentage across your purchases is a measure of how the market priced retail bullion at the time you bought. Recomputed against today, it would be noise.
In short: the past is a historical record; the present is a live readout. The app keeps them separate so that each can do its job without contaminating the other.
When live and locked converge
A new transaction is the one place the two numbers briefly agree. When you open the Add Purchase or Record Sale form, the Spot at Time field auto-fills with the current live spot. The moment you save, that number becomes locked-in for that transaction and is never auto-updated again.
You can also override the auto-filled spot at the time of saving — useful if you're entering a transaction after the fact and want to capture the spot that was in effect on the actual purchase or sale date rather than today's spot. See How to record a purchase.
Where to go next
How often spot prices update: The cadence behind the live side.
Where our spot prices come from: The sources behind the feed.
[Bid, ask, and mid prices]: Which part of a quote we use for both locked and live.
Generating your Annual Report: How locked-in spot anchors the tax-year picture.
