Currency pair and currency entity fields

Table of Contents

Summary

This is the data-model reference for currency pairs as a first-class reference-data entity: the fields a currency_pair record needs to carry the conventions described elsewhere in this cluster (base/quote, spot days, pip factor, deliverability, classification, cut code), plus the currency-level attributes that feed into pair construction. It exists to ground the later domain/db/codegen task in a single concrete field list rather than re-deriving it from prose each time.

Detail

Currency pair fields

Field Description
pair_code Canonical code (e.g. EUR/USD, USD/JPY), always in base/quote order
base_currency ISO 4217 code of the base (CCY1)
quote_currency ISO 4217 code of the quote (CCY2)
spot_days max(spot_days(base), spot_days(quote)); used to compute the spot date
pip_factor Pip scaling factor; converts pips to absolute rate moves
tick_size Minimum rate increment, in pips
decimal_places Number of decimal places for rate display
business_day_calendar Union of base and quote holiday calendars
settlement_calendar Holiday calendar of the settlement currency (often USD)
deliverable Whether the pair settles physically or cash-only (NDF flag)
settlement_currency For ND pairs: the currency in which cash settlement is made
default_cut_code Default market data cut for this pair
classification Pair category: major, minor, or exotic
fixing_source Default fixing source for cash-settled / NDF trades on this pair

There is deliberately no is_g11 (or similar) field here: G11 membership, and any other desk grouping (Scandies, Antipodeans, commodity currencies, …), is a currency-level, many-to-many currency group membership, not a flag on the pair. A pair's "is this a G11 pair" question is answered by checking both legs' group memberships at query time.

See Deliverability and non-deliverable instruments for deliverable / settlement_currency, Pip, tick size, and pip factor for pip_factor / tick_size / decimal_places, and Currency pair classification for classification.

Currency fields

Individual currencies carry their own attributes that feed into pair construction:

Field Description
currency_code ISO 4217 three-letter code (e.g. EUR, USD)
numeric_code ISO 4217 numeric code (e.g. 978 for EUR, 840 for USD)
spot_days Number of business days to settlement
holiday_calendar Named calendar of public holidays
deliverable Whether cash in this currency can be delivered offshore
day_basis Day-count convention for money market (ACT/360, ACT/365)
base_precedence Ordinal rank in the base-currency precedence table

Currency group memberships (G11, Scandies, …) live in a separate many-to-many currency group junction, not as a field on the currency itself — a currency can belong to several groups at once.

Cut code

Each currency pair has an associated cut code determining which market data cut (time-of-day snapshot) is used for valuation. It defaults from the currency pair but can be overridden at the trade or book level. The system should visually flag when a trade's cut code differs from the pair's default, since it changes which rates feed official valuation.

See also

Emacs 29.3 (Org mode 9.6.15)