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 new ir_index_convention entity, 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
       

Result

Emacs 29.3 (Org mode 9.6.15)