Market data comes from Yahoo Finance#
Prices, daily bars, quotes, company fundamentals, sector profiles, and daily FX rates come from Yahoo Finance. Requests carry ticker and currency-pair symbols only. Responses are cached in the app with a time-to-live, so repeated views do not refetch. If a quote implies an implausible day-over-day move, Pyx drops it from the cache and refetches rather than showing a bad number.
Bars are daily. Pyx does not chart intraday data.
If AI agent access is enabled, an agent's market research calls use these same Yahoo Finance endpoints with the same rules. Agents add no data sources and no new hosts.
Brokerage data comes through SnapTrade#
Linked accounts sync positions, cash, and activity through SnapTrade with a read-only connection. The first sync backfills about two years of transaction history (730 days). Anything older will not appear automatically. Import a statement file to cover earlier periods.
Broker connections expire periodically. That is normal. The Accounts panel shows a Reconnect button that repairs the link in place, and Pyx keeps showing the last synced data while the connection is down. After a reconnect, brokers rebuild transaction history on their side over a few hours, so transactions can lag holdings until the backlog lands. Pyx re-syncs until it does.
See Connect a brokerage or import your data for the setup walkthrough.
How often things refresh#
Two mechanisms keep data fresh:
- Background sync. Holdings, transactions, and prices refresh on a schedule. The default interval is 5 minutes, configurable from 30 seconds to 1 hour under Settings > Network.
- Market hours polling. Live price polling runs only while the app window is open and the market is open. The market window defaults to 09:30 to 16:00 ET and is configurable. Outside it, Pyx shows the last prices it has, which is expected behavior, not staleness.
The status bar shows the last sync time. The activity log records every sync step.
Forcing a refresh#
- Press CmdR, or run "Sync Now" from the command palette.
- Click Refresh prices on the Holdings page.
- Settings > Sync has Refresh Prices Now and Resync SnapTrade Now buttons, plus per-account last-synced times.
Importing statement files#
CSV exports import inside the app: run Import CSV from the command palette and pick the file. OFX and QFX files (the standard "download to Quicken" format most brokers offer) import through the bundled pyx command line tool, which runs as a dry run by default and applies with --commit in one atomic step. Nothing is ever half-imported. The account setup guide walks through both.
Files are deduplicated by content hash, so importing the same statement twice does not double your transactions. CSV layouts vary by broker; a short TOML column map handles nonstandard exports. See Configuration.
Every import lands in the activity log.
Where each number comes from#
| Surface | Source |
|---|---|
| Live prices and day change | Yahoo Finance quotes |
| Chart history | Yahoo Finance daily bars |
| Fundamentals, earnings, sector profiles | Yahoo Finance company data |
| Ten-year financial statements, filings index | SEC EDGAR, fetched per ticker and stored locally |
| FX rates for non-base currencies | Yahoo Finance currency pairs, one rate per day, stored locally |
| Positions, cash, activity | SnapTrade sync or your imported files |
| Cost basis and lots | Reconstructed from your transaction ledger |
| Returns and drawdown | Computed locally from valuation history |
Nothing on this list is computed on a server. Every derived number, from time-weighted return to sector drift, is calculated on your machine from data already in the local database.
Known limits#
Stated plainly so you can decide if Pyx fits:
- One base currency. Every portfolio-level figure converts into the base currency you choose (default USD) at that day's FX rate. Native prices and transaction amounts stay in their own currency. A value in a currency with no rate is excluded from totals and flagged in the status bar rather than guessed.
- Daily bars. No intraday charting.
- About two years of brokerage history on first sync. Older history comes in via statement files.
- No options strategies, no crypto asset class. Options positions held at a linked broker import as positions, but Pyx has no options analytics. Crypto exchanges appear in SnapTrade's connection portal, but Pyx has no crypto asset class and does not price exchange balances.
- Offline works. Pyx opens offline and shows last-synced everything. Only new prices and syncs need a connection.