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_Trades re-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 an IMM_ROLL convention from its roll schedule, and the CDS tenor_convention_resolution rows 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_limit entity and the key on netting_set.

7. Out of scope

  • The deliberate scope cuts of the credit instrument rework: the CBO product, a CreditDefaultSwapOption importer, 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.

Emacs 29.3 (Org mode 9.6.15)