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.

The Import Market Data screen with the manual-entry tab and a row editor
Import Market Data — the manual-entry tab. Each row picks an existing series, a date, a value, and an optional source. The banner notes imports are user-supplied data written to the catalog.

Manual entry

Add one row per value:

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:

expected csv columns
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:

quotes.csv
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:

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.