Implement IMM_ROLL tenor resolution for credit/CDS conventions
Table of Contents
This page is a capture in the inbox bucket of the product backlog — a pre-sprint idea, not yet pulled into a sprint as a story.
What
Implement the IMM_ROLL branch of the tenor resolver
(ores.marketdata.api::domain::resolve_end_date()), which currently
throws std::logic_error whenever
tenor_convention.resolution_algorithm is IMM_ROLL. This means
stepping through IMM Dates'
quarterly roll schedule by offset_multiplier roll-quarters from the
horizon's most recent roll, rather than the anchor+offset arithmetic the
ANCHOR_OFFSET branch already implements. Also seed the
tenor_convention_resolution rows for the CREDIT_CDS_IMM convention
(offset_unit = 'ROLL_QUARTER', offset_multiplier = the roll-quarter
count per nominal tenor, e.g. 1Y 1RQ) — deliberately not done in the
originating task since the exact roll-quarter-per-tenor mapping was not
sourced anywhere in the knowledge cluster and fabricating it would have
been a hack.
Why
The persisted tenor data model (tenor=/=tenor_anchor=/
=tenor_convention=/=tenor_convention_resolution) was deliberately
designed so credit/CDS's genuinely different resolution algorithm fits
without a schema change: resolution_algorithm and the
offset_unit=/=offset_multiplier columns already accommodate it. Only
the resolver code and CDS-specific seed data are outstanding — this
capture exists so that gap doesn't get silently forgotten once the
["DQ dataset for tenor reference data"] work closes as apparently
complete for two conventions.
References
See also
- ores.marketdata.tenor_convention — where
resolution_algorithmis modeled. - ores.marketdata.tenor_convention_resolution — where the CDS resolution rows would be seeded.