ores.refdata.tenor_convention_resolution
Table of Contents
A tenor does not resolve the
same way under every tenor
convention — O/N resolves from horizon to tomorrow under the
spot/forward convention, but means "today" (zero offset) under the FX
swap convention — and not every tenor belongs to every convention's set
at all (the swap convention's tenor set stops at S/N; the credit/CDS
convention only uses IMM-quarter labels). This junction records all of
that as one row per valid (convention, tenor) pair: the row's mere
presence is set membership; its optional anchor_override column carries
the per-row exception to the convention's own default anchor; and its
optional offset_unit=/=offset_multiplier columns carry the
convention-specific duration for a SPECIAL tenor, which — unlike a
PERIOD tenor — has no unit=/=multiplier of its own to fall back on
(see Tenor's kind column).
A PERIOD tenor's resolution never needs an offset override — its
duration is fixed by its own unit=/=multiplier regardless of
convention, so only the anchor itself (the convention's measured_from,
or this row's anchor_override) can vary for those rows. For a
convention whose resolution_algorithm is SCHEDULE_STEP rather than
ANCHOR_OFFSET, the row's schedule_code names the
tenor_schedule axis the
tenor walks (ROLL_QUARTER for the IMM rule, FOMC_MEETING for the
event-lookup schedule) and schedule_step_count is the number of steps
to the resolution date (e.g. 1Y 1RQ for the migrated CREDIT_CDS_IMM
rows: one calendar year of offset from spot, then one roll-quarter) —
a tenor resolves as anchor + calendar offset + n steps along the named
schedule. The offset_unit=/=offset_multiplier columns stay the
calendar-axis offset: their ROLL_QUARTER value is gone — the roll
count lives in schedule_step_count now.
Flags
Left
References tenor_convention.code.
std::string("RATES_SPOT_FORWARD")
Right
References tenor.code.
std::string("1M")
Columns
anchor_override
References tenor_anchor.code.
Null for the common case (the tenor resolves from the convention's own
measured_from); set only when this specific tenor resolves from a
different anchor under this specific convention.
std::nullopt
offset_unit
One of DAY, WEEK, MONTH, YEAR. Null when the
referenced tenor is PERIOD (its own unit applies instead); required
when the referenced tenor is SPECIAL, since a SPECIAL tenor has no
duration outside a convention's say-so.
std::nullopt
offset_multiplier
The count paired with offset_unit (e.g. 1 day for O/N under
spot/forward, 0 days for O/N under FX swap, 1 year for a CDS 1Y
1RQ tenor). Same nullability rule as offset_unit.
std::nullopt
schedule_code
The schedule axis the tenor walks, for SCHEDULE_STEP rows.
References tenor_schedule.code.
Null for ANCHOR_OFFSET rows (no schedule involved).
std::nullopt
schedule_step_count
Number of steps along schedule_code axis to the resolution date
(e.g. 1 for a CDS 1Y 1RQ tenor, 8 for the eighth FOMC meeting).
Same nullability rule as schedule_code.
std::nullopt
Foreign keys
schedule_code
SQL
Flags
Repository
C++
Flags
Domain includes
#include <chrono> #include <optional> #include <string>
Entity includes
#include <optional> #include <string>
Conventions
Table display
| column | header |
|---|---|
| convention_code | Convention |
| tenor_code | Tenor |
| anchor_override | Anchor Override |
| offset_unit | Offset Unit |
| offset_multiplier | Offset Multiplier |
| schedule_code | Schedule |
| schedule_step_count | Schedule Step Count |
See also
- Tenor Convention — the left side; the convention's own default anchor and resolution algorithm this row can override or supply values for.
- Tenor (entity model) — the right side.
- Tenor Anchor — the lookup
anchor_overridereferences. - Tenor — the "Tenor conventions by curve type" domain concept this junction operationalises.
- IMM Dates — the roll schedule
ROLL_QUARTERoffsets are counted against.