Conventions journeys

Table of Contents

A convention is the set of market terms an instrument is built on: the day count, the calendars, the payment frequency, the index, and whatever else the instrument family fixes before a trade exists. There are 26 convention kinds, one per instrument family, from the deposit convention up to the cross-currency basis swap. Each kind is its own table with its own term columns, and no two kinds carry the same ones.

ACME holds 10,991 convention rows across those 26 kinds. 2,155 belong to each of the five parties and 216 are held once for the tenant. The rows did not arrive by hand. 25 of the 26 kinds arrived from a data quality publish: 24 on refdata.v1.ops.publish_conventions_from_dq for the dataset ORE Instrument Conventions, and currency_pair on its own subject and its own dataset. The 26th, tenor, has no DQ route at all — there is no ores_dq_tenor_conventions_artefact_tbl — and its 4 rows are copied from the system tenant when the tenant is created.

1. The lifecycle these journeys cover

Five journeys cover the life of these rows, and the order below is the order the life takes.

  1. A party is provisioned. Its conventions arrive inside that run, as the first member of the party_essentials bundle: 2,155 rows for the party, and 33 rows the tenant already held.
  2. A curated correction is published. That path exists and cannot carry a correction to a tenant that already holds the row for 25 of the 26 kinds.
  3. A person asks what a run will read. Today no answer exists: there is no default marker on any kind, no name column to look a document up by, and the conventions configuration a report binds carries no rows.
  4. A person changes one convention of one kind. The change reaches every run of the party, because the export reads the party's whole document and not the bound configuration.
  5. A person authors a term set no curated document states.

Only the third and the fifth are reachable today with what the server offers. The first two are real lifecycle steps that the tree already performs. The fourth cannot be finished: choosing a different document for a kind has nowhere to be written, because no default exists.

2. Journeys

Journey Actor Gist
Onboard a party and verify its conventions tenant administrator Read that the conventions arrive inside provisioning and not as a manual fill, verify the party's 2,155 rows against the tenant's 216, and mark a party the bundle never reached
Publish conventions from data quality data quality operator, tenant administrator Publish the curated dataset into a tenant: 25 of 26 kinds covered, the tenor exception, why 33 rows are skipped on every party after the first, and that a re-publish does not carry a corrected row
See the conventions a party uses market risk, trading desk, tenant administrator What terms the next run reads, kind by kind — and the three reasons it cannot be answered: no default, no name, and a configuration that holds nothing
Change the convention a party uses for one kind operations, tenant administrator Correct one document, or choose a different one, and read the reach: every definition of the party, not the ones bound to the configuration
Author a convention for a kind market risk, tenant administrator, operations Terms no curated document states, written as a new row with a precondition and a change reason, and the bitemporal record it leaves
Find a convention by its terms market risk, trading desk, operations, tenant administrator Which document of a kind states these terms, or the fact that none does, after a search that read every row
Name a convention set market risk owner, tenant administrator A set with a name, a purpose and a description, one document for each kind it covers, and a request that waits for Market Risk
Retire a convention operations, tenant administrator Close a document a run should stop reading, after reading what depends on it
Decide a convention change market risk approver Read a requested change beside the terms it replaces, and approve or decline it

The four journeys after the first five are the management journeys: finding a document by its terms, naming a set, retiring a document and deciding a change. The search is a step that three of the first five journeys name as a gap. The request and its decision are the control that the controls note requires and no request kind exists for. None of the four is reachable today with what the server offers.

The three reading journeys are cheap to build: the rows are stored, the lists are generated and the histories exist. The two that change something are not, and each says in its own What is missing which server gap stops it. The default marker is the one gap that blocks more than one journey.

3. Where the 25 and the 1 come from

Route Kinds Subject Bundle and scope
the 24-kind array 24 refdata.v1.ops.publish_conventions_from_dq party_essentials, once per party
currency pair 1 refdata.v1.ops.publish_currency_pair_conventions_from_dq base, once per tenant
none 1 (tenor) — copied by ores_iam_provision_tenant_fn

Four kinds carry no party_id column and are held once for the tenant: currency_pair 179 rows, overnight_index 23, ibor_index 10 and tenor 4. Two of those four are in the 24-kind array, which is why a publish reports records_skipped 33 on every party after the first.

4. A convention is a lookup that other records point at

A person starts from the instrument they want to trade, never from the entity name, and most of a convention's fields are picks from the reference data lists the classifications journey maintains, so a convention references those lists and never edits them. But no other record points at a convention today: a trade carries its scheduling terms inline, and a report binds a conventions configuration whose contents are empty. So a convention is referenced by the conventions file a run exports, which names every document the party holds, and by nothing finer than that.

5. Related

6. See also

Emacs 29.3 (Org mode 9.6.15)