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.

Fixing sources and inversion

When a trade has a fixing source (e.g. NDFs, cash-settled options), the fixing record must capture: the currency pair, the quote type, whether the rate is inverted, the fixing zone/time, bid/ask/offer, and the result rounding applied by that source. This lets confirmations and settlement amounts be computed from the correct reciprocal, with the correct rounding, regardless of which direction the fixing source publishes.

If a structured product (e.g. a barrier option) is booked on an inverted pair, the barrier direction must be inverted too — a barrier that is "Up" on USD/JPY becomes "Down" on JPY/USD. The system must apply this transformation consistently, not just invert the rate.

See also

Emacs 29.3 (Org mode 9.6.15)