Skip to content

Prices aren't updating

What you’d see

A holding’s price (and net worth built on it) hasn’t moved though the market has, or a position shows an obviously stale value.

Why it happens

Prices refresh two ways while the app is running: a live view’s own cache is at most a minute old before it’s re-fetched, and a background scan (~15 minutes by default) walks every holding and watched ticker from Yahoo Finance and CoinGecko independent of anyone looking. The app shows the last-known price immediately and refreshes in the background rather than holding up your screen. A few things stick that price:

  • The backend isn’t running. Nothing refreshes if the app is down; run it only while using it and prices are only as fresh as your last session.
  • The market is closed. A stock’s price legitimately doesn’t move outside trading hours — that’s the actual last trade, not staleness.
  • The provider is rate-limiting or down. A failed fetch keeps showing the last good price rather than blanking it or showing zero — stale-but-real beats wrong.
  • A currency’s exchange rate looks obviously wrong. Every fetched rate is cross-checked against its own reciprocal (USD→VND × VND→USD should equal 1) before trusting it — bad provider data has caused this before (a 1,000x-wrong VND quote slipped through unchecked in 2026-07). A rate that fails that check is corrected using the reciprocal quote instead of the bad one; a rate with no reciprocal to check against that jumps implausibly from the last trusted rate is rejected outright and the previous rate kept.
  • It’s a manually-priced instrument. Gold, real estate, and similar holdings set to a manual price never auto-refresh — update those yourself.

How to fix it

  1. Confirm the backend is running (see The backend won’t start if not).
  2. Manually priced instrument? Expected — update it by hand.
  3. Live-priced and running? Reopening or switching back to the view re-fetches within a minute; otherwise wait for the next background scan (up to ~15 minutes).
  4. Check the app log for fetch errors — a sustained provider outage shows up there.

How to confirm it’s fixed

The price (and its “as of” timestamp, where shown) moves to a current value after the next refresh cycle, with nothing else needed.