The IR curve generation config
Table of Contents
1. Summary
An ir_curve_generation_config describes how to synthesise one interest
rate curve. It is declared in
ores.synthetic.api/domain/ir_curve_generation_config.hpp, it hangs under a
market_data_generation_config through config_id, and its instrument grid
and its short-rate parameters are two separate sets of child rows.
2. Detail
2.1. What identifies the curve
currency_code, a soft foreign key to currencies.index_family, a fixed lower-case token such assofr,estroreuribor. It is the short token and not the full ORE or ISDA code, becausecurrency_codealready carries the currency half of that pair.tenor, which names the floating-rate index's tenor for a term family such as libor or euribor. It is empty for the overnight families, which have no tenor dimension. The literal"FOMC"is valid only forsofr.role, which isdiscount,projectionorself_discounting, withself_discountingas the default. The vocabulary is intrinsic to this record, so it is a plain check constraint and not a lookup table.provider_code, the provider whose curve this config simulates. The vendor instrument of each pillar comes from the catalogue under that provider.
The FOMC tenor is the meeting-dated variant of one currency and index pair.
Its pillars start on meeting dates, so each of them has its own start in the
series it lands in. The config row keeps its own natural key, so it does not
collide with the standard curve's empty-tenor row. What a feed owns is the
series, not the row; see the collision rule below.
2.2. The composite validation
The currency_code and index_family pair is validated as a whole by a
hand-written composite trigger against overnight_index_convention and
ibor_index_convention. Those rows key on the currency plus the upper-case
index family. The codegen single-argument validation mechanism cannot express
a two-column lookup, which is why the trigger is written by hand.
tenor is a soft foreign key to the tenor catalogue and is not validated in
the database. It is resolved at the application layer, matching the precedent
set by the template entry's own tenor columns.
2.3. The process and its parameters
process_type references yield_curve_process_type.code, a real foreign
key. The engine's parameters are not columns on this row. Each parameter is
an ir_curve_generation_config_process_parameter_value row, joined at feed
start onto the yield_curve_process_parameter_definition catalogue. Adding
an engine or a parameter is therefore seed data and not a schema change. See
The IR curve template and its parameters and
The yield curve process type catalogue.
2.4. The initial rate
price_source holds only "fixed": the curve starts from its stored
initial_rate value row. No public source the installation catalogues fixes
a short rate today, so the fixed rate is the stated fallback for every curve.
When a public source covers a curve, the curve takes a "fixing" path the
way The FX spot generation config
does. No curve reads a dated reference observation as its start.
2.5. The collision rule
enabled and auto_start carry the same meaning as they do on the FX spot
config. Starting a curve generator is refused when another generator already runs
that serves one of the same vendor instruments. The pillars of the curve are built
from currency_code and the index tenor, so two configs of one currency and index
tenor serve the same instruments whatever their index_family or their role. The
role says how a consumer uses the curve, and the oresmd grammar does not hold
it; see oresmd: ORE Studio Market Data URI. Switching a running generator is a Stop followed by a Start.
2.6. The fact the code shape does not show
The curve is named by the config and not discovered from the key. The
series it publishes into are built from currency_code and the index tenor in
one place, and The IR curve producer describes how they appear in the stored data.
description carries prose on purpose. It records what regime the
curve targets, and for a discontinued index such as USD LIBOR it records that
the curve is historical and why it is still offered.
3. See also
- The market data path: a public fixing, a curve, a report — the structure note that orders this cluster, and where to read this page in it.
- Market Data Architecture — the structure note that orders this cluster, and where to read this page in it.
- The generation config collection and folders, which owns this row.
- The IR curve template and its parameters, the two sets of child rows.
- The yield curve process type catalogue, the foreign key behind
process_type. - The IR curve producer, which starts from this row.
- The FX spot generation config, the first asset class, whose defaults differ.
- oresmd: ORE Studio Market Data URI — how a curve is a series, and what the grammar leaves to the consumer.
- Term Structure — what a curve is.
- Funding and Projection Curves — the family of curves, one series for each index tenor.
- The synthetic runner — the rule that two generators serving one vendor instrument cannot run together.