Task: IR rate display/quoting conventions (basis points, per-index precision)
Table of Contents
This page documents a task in the IR Rates synthetic data: dataset seeding, index cleanup, dual-curve, quoting conventions story. It captures the goal, current status, acceptance, and any notes or results.
Goal
Give IR indices the same data-driven display-convention story FX
already has. currency_pair_convention carries pip_factor,
tick_size and decimal_places per pair because quoting precision
genuinely varies (JPY crosses at 2dp, EUR/USD at 4dp) — it is not
hardcoded in the UI. IR has no equivalent: overnight_index_convention
only holds fixing calendar/day-count/settlement-lag, and
floating_index_type is bare id+description.
This task:
- Researches how real trading systems actually quote IR rates: percent vs basis points, and typical decimal precision by currency/index tier (G10 overnight RFRs vs EM curves), rather than assuming one convention fits all.
- Adds the equivalent convention field(s) to
floating_index_type(or a newir_index_conventionentity, whichever the research points to) capturing that precision/unit choice per index. - Wires a shared Qt formatter so any rate-displaying surface (starting
with
curve-snapshot-builder-viewer's Grid/History tabs) consumes it instead of hardcoding a format.
Raised while designing curve-snapshot-builder-viewer's Grid tab — deliberately split out rather than solved inline there, since it is a genuine reference-data question, not a UI-only concern.
Status
| Field | Value |
|---|---|
| State | ABANDONED |
| Parent story | IR Rates synthetic data: dataset seeding, index cleanup, dual-curve, quoting conventions |
| Now | Superseded before implementation started. |
| Waiting on | Nothing. |
| Next | Nothing – see the superseding story. |
| Last touched | 2026-07-22 |
Acceptance
- Research note (this doc's
* Notes) covering how real trading systems quote IR rates: percent vs basis points, and typical decimal precision per currency/index tier, citing concrete market practice rather than assumption. - A convention field (or new entity) exists giving each IR index its
own display precision/unit, analogous to
currency_pair_convention.decimal_places. - A shared Qt formatter consumes it;
curve-snapshot-builder-viewer(and any future rate-displaying UI) uses the formatter rather than a hardcoded format string.
Superseded, before any implementation started, by
Rate display conventions:
convention-aware formatting across all Qt rate surfaces (FX + IR) —
manual verification of a sibling task surfaced that FX has the exact
same gap (most Qt surfaces don't consume currency_pair_convention
either, despite it existing), and designing the IR side in isolation
would have meant reconciling two independently-built formatter
architectures later rather than one shared design now. See that
story's Goal for the full survey and
its IR-specific task for
this task's continued scope (ir_index_convention=/=ir_rate_formatter,
same acceptance criteria as below).
Plan
(Implementation strategy. Written when work starts; key decisions
are distilled into the parent story's * Decisions at close, but the
plan itself stays — it is the historical record of what we did.)
Notes
Test Scenarios
Manual QA scenarios (scaffolded via compass add test_scenario, run
through the QA Validation Runner panel) that verify this task. Link
new ones here as they're created; the scenario doc itself links back
via its "Verifies task" field.
| Scenario | State | Notes |
|---|---|---|
PRs
| PR | Title |
|---|---|
| #1669 | [agile] Add rate display conventions story, abandon narrower IR-only task |
Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|