ores.refdata.tenor_convention_resolution

Table of Contents

A tenor does not resolve the same way under every tenor conventionO/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_override references.
  • Tenor — the "Tenor conventions by curve type" domain concept this junction operationalises.
  • IMM Dates — the roll schedule ROLL_QUARTER offsets are counted against.

Emacs 29.3 (Org mode 9.6.15)