ores.refdata.ir_curve_bootstrap_pillar

Table of Contents

One row of a bootstrap config's pillar list: which tenor period, priced/bootstrapped as which curve role (deposit-equivalent, FRA-equivalent, swap-equivalent – see Curve Role), in what order. Same one-parent-many-children shape ir_curve_template_entry uses for ores.synthetic's generation recipe, but source-independent: this names the pillar list a bootstrap reads from the raw instrument grid, not a generation recipe. start_tenor_code=/=end_tenor_code are soft (undeclared) tenor references, matching ir_curve_template_entry's own tenor columns exactly – tenor validation happens through the tenor_resolution machinery at the application layer, not a per-consumer DB-level FK.

The pillar names the market series it reads, as market_series_id: a soft reference to ores.marketdata.market_series, per A pillar names the market series it reads. The dependency is stated where a person reads it, and a pillar can read any series the party holds: a synthetic feed's, a vendor's, an official fixing's, or one seeded for a scenario.

Only the series is named. The term of the point a pillar reads stays derived, because the pillar's end tenor and the parent config's tenor convention are what say where the point falls.

1. Flags

2. Columns

2.1. id

Surrogate UUID uniquely identifying this pillar row.

2.2. party_id

Owning party (legal entity) this pillar's config belongs to.

ctx.generate_uuid()

2.3. bootstrap_config_id

Parent ir_curve_bootstrap_config this pillar contributes to.

ctx.generate_uuid()

2.4. sequence_index

Zero-based ordinal of this pillar within its parent's list (short-end to long-end).

faker::number::integer(0, 20)

2.5. start_tenor_code

Tenor label marking the start of this pillar's period (references tenor.code). 'SPOT' for point instruments (deposits, swaps); the period's own front tenor (e.g. '3M') for interval instruments (FRAs) – same convention as ir_curve_template_entry.

std::string("SPOT")

2.6. end_tenor_code

Tenor label marking the end (maturity) of this pillar's period (references tenor.code, e.g. "1M", "2Y").

std::string("1Y")

2.7. curve_role_code

Instrument-pricing role this tenor bootstraps as (references curve_role.code: DEPOSIT, FRA, or SWAP – see Curve Role) – determines which inverse-pricing derivation the bootstrapping engine applies at this pillar.

std::string("SWAP")

2.8. market_series_id

Soft reference to the market_series (in ores.marketdata) whose observation at the as-of is this pillar's quote. Named by the caller from the series its desk already holds; no operation composes it.

The read resolves the datum's term from end_tenor_code through the parent config's tenor_convention_code, so the named series and the pillar's end tenor together say which observation the pillar reads. One series holds a ladder: every pillar that starts at the same place and stands for the same index reads the same series at its own term.

ctx.generate_uuid()

3. SQL

3.1. Flags

3.2. Checks

expression
"start_tenor_code" <> ''
"end_tenor_code" <> ''
"curve_role_code" <> ''

4. Foreign keys

4.1. bootstrap_config_id

5. Insert trigger

5.1. Validations

column validation_function
curve_role_code ores_refdata_validate_curve_role_fn

6. C++

6.1. Flags

6.2. Repository

6.3. Domain includes

#include <boost/uuid/uuid.hpp>
#include <string>

6.4. Entity includes

#include <string>

6.5. Conventions

6.6. Custom repository methods

7. See also

Emacs 29.3 (Org mode 9.6.15)