FX currency conventions

Table of Contents

Summary

The cross-rates matrix depends on market quoting conventions. Currencies split into the highly-liquid G11 majors (EUR, USD, GBP, JPY, AUD, CAD, CHF, DKK, NOK, NZD, SEK) and non-G11 Emerging Markets (EM, the "minors"). A pair CCY1/CCY2 means "quote-currency units (CCY2) per one base-currency unit (CCY1)", with a base-currency precedence fixing the order. Rates may be stored as reciprocals to match non-canonical conventions, which forces a deliberate bounded-context split between exact (Product) and normalised (Valuation) handling.

Detail

Majors, minors, grouping

  • G11 majors: EUR, USD, GBP, JPY, AUD, CAD, CHF, DKK, NOK, NZD, SEK — tight prices 24h.
  • Non-G11 = EM (minors): less liquid, more volatile; often subdivided into liquid EM / illiquid EM / legacy / commodity for filtering.
  • G11 and non-G11 risk are managed by different desks — shaping how crosses are split (see risk routing in CRM risk).
  • Grouping for display/filter: by Block (Majors/Minors/EM…), by pair, by cross (USD crosses, EUR crosses…), or user-defined groups (Scandies, Asians, Latams).

Base and quote

  • CCY1/CCY2 = units of quote CCY2 per one base CCY1, by market convention.
  • Base-currency precedence fixes which is base: usually EUR > GBP > AUD > NZD > USD > others (so EUR/USD, not USD/EUR).
  • Keep base/quote fixed per pair even when inverting for display.

Reciprocals / inverted

  • A rate may be stored as the reciprocal (1/x) to match a non-canonical convention. The reciprocal is saved with the ticket (used for confirmations); rounding means the original cannot always be recovered exactly.
  • Bounded-context split: support reciprocals in the Product context (record exactly as traded — Decimals); normalise everything in the Valuation context (inversion-precision differences are immaterial — Doubles). Risk must handle a pair quoted either way and produce the same valuation.

The pair itself is identified canonically by its ORE key.

See also

Emacs 29.3 (Org mode 9.6.15)