Importing Market Data
Bring your own quotes into the catalog — one row at a time or a whole CSV. Imported values sit alongside the bundle's synthetic demo data, tagged with their source so it's always clear what's yours. Every row is reported back individually, so a partial import tells you exactly which rows landed and which didn't.
Opening the Import screen
Go to Market Data → Import. There are two tabs: Manual entry (an editable table of rows) and CSV upload (a file). Both write to the same shared catalog and both produce the same per-row report.
Manual entry
Add one row per value:
- Canonical ID — pick the series from the dropdown. Only series that already exist appear here.
- As-Of — the date this value applies to (defaults to the header's As-Of; format
YYYY-MM-DD). - Value — the numeric quote.
- Source (optional) — a free-text tag for provenance (e.g.
manual, a desk name).
Use + Add row for more values, then click Import rows. Rows that fail basic checks (missing id, a non-numeric value, a bad date) are flagged before submit; the server has the final say and returns a per-row result.
CSV upload
Switch to the CSV upload tab and choose a .csv file. The expected columns are:
canonical_id, as_of (YYYY-MM-DD), value[, source, meta_json]
A header row is optional — it's auto-detected. source and meta_json are optional
per row. Rows imported via CSV are tagged with source csv unless you supply your own. Example:
canonical_id,as_of,value,source USD.MYDESK.5Y,2025-01-15,0.0412,mydesk USD.MYDESK.10Y,2025-01-15,0.0435,mydesk
Series must exist first
The importer only adds values to series that already exist. If a row names a series that isn't defined, that row is rejected with a per-row error like series X does not exist — create it first. Import never silently creates a new series.
So if you're bringing in a brand-new series, define it first in the Quote Book with + New series (set its canonical id, class, currency, and field), then come back and import its values. The manual-entry tab links straight to this — “Need a new one? Define it in the Quote Book first →”.
Reading the result
After you import, a report appears. Because per-row failures are returned softly, a successful request doesn't mean every row landed — always read the report:
- Imported — how many rows were written.
- Skipped — how many were not.
- Source — the provenance tag applied (
manualorcsv). - Errors — a per-row list with the row number and the reason (e.g. unknown series, non-numeric value), so you can fix just those rows and re-import.
Where imported data goes
Imported values land in the shared market-data catalog next to the synthetic demo data, each tagged by
source. They show up immediately in the Quote Book (with a
manual/csv chip), can be charted in the Time Series Lab, and are resolved into
curves and prices exactly like any other quote — as of your As-Of date.
Honesty by design. The source tag is never dropped. That's how the app keeps you honest about which numbers are the bundle's synthetic demo data and which are quotes you supplied.