ores.trading.inflation_swap_instrument
Table of Contents
Represents an inflation-linked swap where one leg pays a fixed or floating rate and the other is linked to an inflation index (e.g., CPI, RPI).
1. Flags
2. Natural keys
3. Columns
3.1. instrument_id
UUID uniquely identifying this inflation swap instrument.
Surrogate key for the instrument record.
3.2. trade_type_code
Trade type code (soft FK to ores_trading_trade_types_tbl).
std::string("ZeroCouponInflationSwap")
3.3. party_id
Party that owns this instrument.
Set from session variable app.current_party_id.
3.4. trade_id
Optional soft FK to the parent trade.
Links instrument to a trade if applicable.
3.5. start_date
Swap effective start date.
ISO 8601 date string (YYYY-MM-DD).
std::string("2024-01-15")
3.6. maturity_date
Swap maturity date.
Must be after start_date.
std::string("2034-01-15")
3.7. inflation_index_code
Inflation index code.
e.g., UKRPI, USCPI, EUHICPXT.
std::string("UKRPI")
3.8. base_cpi
Optional base CPI value at inception.
Used to calculate the inflation accrual. Must be positive if set.
3.9. lag_convention
Optional CPI lag convention.
e.g., 3M, 2M. Specifies the publication lag for the inflation index.
3.10. description
Optional free-text description.
Human-readable notes about this instrument.
4. SQL
4.1. Flags
4.2. Checks
| expression |
|---|
| "maturity_date" > "start_date" |
| "inflation_index_code" <> '' |
| "base_cpi" is null or "base_cpi" > 0 |
4.3. Indexes
| name | columns | unique | current_only | where_extra |
|---|---|---|---|---|
| party | tenant_id, party_id | false | true | |
| trade_id | tenant_id, trade_id | true | true | trade_id is not null |
5. Insert trigger
5.1. Validations
| column | validation_function |
|---|---|
| trade_type_code | ores_trading_validate_trade_type_fn |
6. C++
The C++ domain class is decomposed into nested sub-structs (the C1202
pattern from PRs #1047/#1071/#1075/#1083/#1085): the implicit scaffolding
columns (version, tenant_id, workspace_id, the primary key) and the
columns marked :group: identity below fold into an
instrument_identity identity; member (see the
ores.trading.instrument_identity field-group model), the implicit audit
columns fold into an ores::dq::domain::audit_record audit; member (see
the ores.dq.audit_record field-group model), and the remaining columns
stay flat in between. The SQL schema, DB entity and column lists are
unaffected — only the domain class and the mapper's domain-side accesses
nest. The entity templates consume these annotations; domain and
repository profiles regenerate correctly.
6.1. Flags
6.2. Repository
6.3. Domain includes
#include <chrono> #include <string>
6.4. Conventions
6.5. Table display
| column | header |
|---|---|
| identity.instrument_id | ID |
| identity.trade_type_code | Type |
| start_date | Start Date |
| maturity_date | Maturity Date |
| inflation_index_code | Index |
| base_cpi | Base CPI |
| lag_convention | Lag Convention |
| audit.recorded_at | Recorded At |
6.6. Custom repository methods
7. See also
- ores.trading — component group overview.