Currency groups (desk groupings)
Table of Contents
1. Summary
Trading desks group currencies in many overlapping ways beyond the
single-valued market tier (G11 vs Emerging Markets): geographic desks
(Scandies, Asians, Latams), risk-factor groupings (commodity currencies,
Antipodeans), and ad hoc display groupings (a spot screen's "Majors"
tab). A currency can belong to several groups at once — NOK is G11
and a Scandie and arguably a commodity currency — so this cannot be
a single field like market_tier; it needs a many-to-many relationship,
extensible without a schema change every time a desk invents a new
grouping. This is a currency-level concept, not a currency-pair one:
grouping the pair follows from grouping its two legs, not the other way
round.
2. Detail
2.1. Typical desk groupings
Non-exhaustive; new groups should be addable by inserting a row, not by migrating a schema:
- G11:
EUR, USD, GBP, JPY, AUD, CAD, CHF, DKK, NOK, NZD, SEK— the liquid majors taxonomy used for desk allocation (see FX currency conventions). - Scandies:
DKK, NOK, SEK— Scandinavian currencies, often desked together despite being G11. - Antipodeans:
AUD, NZD— correlated Pacific currencies. - Commodity currencies:
AUD, CAD, NZD, NOK, ZAR, ...— currencies whose value correlates with a commodity export (oil, metals, dairy). - Asians:
JPY, SGD, HKD, KRW, THB, ...— regional EM/G11 mix, desked by geography rather than liquidity tier. - Latams:
MXN, BRL, ARS, CLP, COP, ...— Latin American EM currencies, often sharing a desk and IPV process. - Ad hoc display groupings a UI might want (e.g. a spot screen's "Majors" tab) are just another group, not a special case.
2.2. Why not a boolean flag, and why not on the pair
A boolean like "is G11" only expresses membership of one fixed set; it
cannot express "also a Scandie" or "also a commodity currency" without
adding another boolean per group, and every new desk grouping would need
a schema migration. The right shape is a currency group lookup type
plus a many-to-many currency ↔ currency group junction — the same
shape as the existing party_currencies junction
(ores.refdata.currency), just between currency and group instead of
currency and party.
Group membership belongs on the currency, not the currency pair: a pair's "is this a G11 pair" question is answered by checking both legs' group memberships, not by storing a derived flag that could drift out of sync with the currencies' own memberships. See Currency pair and currency entity fields for where this fits (or doesn't) in the entity model.
2.3. Currency groups and CRM topologies are separate
A CRM topology and a currency group both name currencies, but they model different things. The CRM has no foreign key to a group.
| Aspect | Currency group | CRM topology |
|---|---|---|
| Scope | Tenant | Party |
| Shape | A set of currencies | A graph of currency pairs with one pivot currency |
| Membership | A currency is in or out | A currency is a pivot, a driver leg or a derived leg |
| Owns | Nothing but its members | Driver pairs and enabled derived pairs |
A topology belongs to a party. The DQ bundle publishes the topologies to each party, so every party gets its own copy. A group belongs to the tenant and is shared by all its parties.
The names match, but the sets do not. The "scandies" topology uses USD, EUR, SEK, NOK and DKK. USD is the pivot and EUR is not a Scandie. The Scandies group holds only DKK, NOK and SEK. The "majors" topology has eight driver pairs, while G11 has eleven currencies. The "exotics" topology matches no group.
A foreign key from a topology to a group would force the two sets to agree, and they must not. A later feature may offer to seed a topology from the members of a group. That feature reads the group and writes a topology. It does not link them.
3. See also
- Currency pairs — the hub.
- FX currency conventions — the G11/EM market-tier taxonomy this complements.
- Currency pair classification: major, minor, exotic — the independent, pair-level taxonomy.
- Currency pair and currency entity fields — the entity-model reference.