Story: Close the credit loose ends
Table of Contents
This page documents a story in Sprint 28. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
Close the three gaps the credit rework left open. The ORE export keeps every child element a document requires, so the corpus round trip reads back what it wrote. The credit and CDS tenor convention resolves on the IMM roll schedule instead of throwing. A netting set is keyed by the credit limit its analysis names.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 28 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-10-21 |
3. Acceptance
- The directory round trip over
external/ore/examples/Products/Example_Tradesre-reads every document it writes. The seventeen documents that drop a required child element today, across Commodity, Credit, FX worst-of and Exotic, stop dropping it. resolve_end_date()resolves anIMM_ROLLconvention from its roll schedule, and the CDStenor_convention_resolutionrows carry the roll-quarter count of each nominal tenor.- A netting set carries the credit limit that its identity names.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| ORE export drops required elements from 17 example documents | DONE | 2026-10-15 | 2026-10-15 | The directory round trip over external/ore/examples/Products/Example_Trades writes all 132 documents but 17 of them do not re-read: the export drops a required child element (LegData, Quantity, InitialPrice, BarrierData, RangeBound or StrikePrice). The affected products are Commodity, Credit, FX worst-of and Exotic. A test now catches this; this capture tracks the fix. |
| Implement IMM_ROLL tenor resolution for credit/CDS conventions | DONE | 2026-10-16 | 2026-10-16 | The tenor_convention.resolution_algorithm=IMM_ROLL branch and CREDIT_CDS_IMM convention are modeled and seeded, but resolve_end_date() throws std::logic_error for it – the actual roll-schedule stepping algorithm, and the CDS tenor_convention_resolution rows (roll-quarter counts per nominal tenor), are not implemented. |
| Key netting sets by their credit limit | DONE | 2026-10-16 | 2026-10-21 | The netting sets analysis names the credit limit as part of a set's identity, but no credit limit entity exists, so netting_set leaves it out. |
| File the credit loose ends | DONE | 2026-10-16 | Move the three credit gaps out of the product backlog and into this story as its tasks, preserving each capture's UUID. | |
| Carry the accumulator ranges and the worst-of-basket levels in the domain | DONE | 2026-10-16 | 2026-10-16 | Five Example_Trades documents still cannot re-read because a required element has no field in the domain instrument: the range bounds of the equity and fx accumulators, and the initial prices, knock-out levels and fixed trigger levels of the worst-of-basket swap. Add the fields, and the export writes the real values instead of dropping the element. |
5. Decisions
6. Result
All three gaps are closed.
- The ORE export keeps every required child element. No document in the example corpus fails to re-read, and the known export gaps list is empty.
- The credit and CDS tenor convention resolves on the IMM roll schedule. PR 3390 closed the task as already delivered.
- A netting set carries the credit limit its identity names. PR 3499 landed the
credit_limitentity and the key onnetting_set.
7. Out of scope
- The deliberate scope cuts of the credit instrument rework: the
CBOproduct, aCreditDefaultSwapOptionimporter, and the treasury-lock underlying of a risk participation agreement. They are not loose ends of that rework; they were ruled out of it, and they need their own story.