Skip to content

Curves

The Curves module (/curves) is the hub for curve definitions, calibration snapshots, coupon/dividend schedules, and FX spot context. Data is loaded over REST; when the Atlas WebSocket broadcasts a curves (or related) event, TanStack Query invalidates curve lists so open grids refetch automatically—your view stays current without a full page reload.

For HTTP endpoints and payload shapes, use the Interactive REST reference.

The toolbar lists one tab per “hub”. Each tab changes which rows load in the main grid and how they are filtered:

TabPurpose
All curvesUnfiltered list of curve definitions.
RatesDiscount/OIS, repo, inflation, and other RATE_* (and inflation-bucket) curves.
VolatilityVOL_* surfaces and implied-vol families.
CreditCREDIT_* hazard/spread families.
FXFX_* forward/basis curves plus an FX spot context strip for the control plane.
CouponsCoupon schedules (COUPON_SCHEDULE / coupon family rows).
DividendsDividend rows (DIV_* and equity-dividend buckets).

Coupons and Dividends swap the main grid to schedule-oriented rows (not the standard curve-definition grid). FX still shows the curves grid but also drives the FX spot strip next to the chart when you select a curve.

  • Curve-definition tabs (all hubs except Coupons/Dividends): multi-select rows with checkboxes; the first selected curve drives the right-hand control plane (chart + params). Use Ctrl/Cmd+click to add curves.
  • Coupons / Dividends: single-row selection drives the schedule chart and inline editors.

Saved views attach to the active hub (layout namespace includes the hub id), so column layouts can differ between Rates and Volatility.

Context menu (curve-definition rows):

  • Deprecate curve — removes the selected definition (confirm).
  • Coupons tab: Delete coupon (by schedule_id).
  • Dividends tab: Delete dividend (by div_id).

Click + New curve (wording may include a hub hint on coupon/dividend tabs). The wizard is a single scrollable ticket (no step wizard):

  1. Type — choose curve family (options are filtered by the hub you opened from, e.g. Rates vs Volatility).
  2. Model — set preferred model (choices come from the family’s allowed models).
  3. Metadata — label (required), currency, asset class, description, and underlier via symbol search or pasted instrument id.
  4. Volatility surfaces (VOL_SURFACE, VOL_IMPLIED): after the underlier is set, optionally set a venue filter and use the instrument group picker to choose linked option/expiry instruments. Those ids are sent as linked_instrument_ids on create. The underlier id is stored as underlier_id.
  5. Initial calibration payload — JSON edited in-app, posted to POST /curves/{curve_id}/params after the definition is created.

Submit generates a new curve_id (minted in the UI with an ATLAS:-style prefix), POST /curves, then optional params POST, then invalidates curve queries.

Schedule-focused tabs expose + New curve (coupons) / + New curve (dividends) which open the same wizard with family presets for that hub.

For a selected curve (non-schedule tabs):

  • Inspector — family, allowed model list.
  • Interactive chart — variant depends on hub: pillars/discount, volatility (term + smile stacked when on Volatility hub), coupon/dividend ladder on schedule tabs, or FX mode (forward/discount chart plus FX spot strip fed by FX spot rows).
  • Control plane · params — opens Curve params editor: edit calibration against latest snapshot; preview merges into the chart before save.
  • Duplicate — clone definition + latest params + latest snapshot (see clone dialog).
  • Deprecate — same as grid context menu.

Below the split, when a primary curve is selected, a compact Calibration rows / overrides panel shows recent params and overrides JSON snippets and any query errors.

The Curve params editor (CurveParamsEditor) loads model params rows and applies drafts to the live chart preview. Saved changes go through the curves API (see REST reference).

Overrides are fetched for the primary curve id and displayed in the summary strip; they represent active calibration or marking overrides stored server-side.

Duplicate opens a dialog: new minted curve id, optional label, optional new underlier (symbol combobox or paste id). Clone copies definition, latest params, and latest snapshot; active overrides are not copied by default.

Select two to eight curves on a curve-definition tab, then Open comparison (toolbar or control plane). The comparison view overlays resolved parameters / snapshots for the selected ids (up to eight curves).

  • Add coupon / Add dividend — modal forms for schedule API creates (instrument id, dates, JSON periods for coupons, etc.).
  • Grid grouping/pivot sidebars are enabled on these tabs for exploratory analysis.
  • Right panel: coupon or dividend chart plus schedule editors bound to the selected row.

When the server publishes a WebSocket message with kind curves, the client invalidates the ["curves"] query key so definitions refetch. Related kinds (e.g. coupons/dividends, depending on deployment) follow the same invalidate → refetch pattern for mounted screens.


Related: WebSocket kinds, REST API.