Lesson 05 · 5 min

TradeLot & PriceQuantity

Economic terms say what the deal is; lots say how much, at what price.

Separating "what" from "how much"

The last two lessons built the what: economic terms and the payout legs inside them. But a real position needs numbers (a notional, a price, a direction in size). The CDM keeps these concerns apart on purpose: the product describes the deal's mechanics, and TradeLot carries its size and price.

Key ideas
  • TradeLot is a bundle of price-quantity pairs

    Each lot holds priceQuantity (one or more PriceQuantity entries) plus optional lot identifiers.

  • PriceQuantity = price + quantity + observable

    Prices and quantities come as schedules (a value that can step over time), and observable names what a floating leg watches: an index, an asset, a benchmark.

  • Lots are a list for a reason

    Trade events that change size (an increase, a partial unwind) add or adjust lots instead of overwriting the original execution. The position's history stays intact.

TradeLot [0]day one executionpriceQuantityPriceQuantity · 1..*price4.25% fixed ratequantityUSD 10,000,000observablefloating legTradeLot [1]USD 5,000,000an Increase adds this one.the original stays put

A lot in the wild

Here is the day-one lot of our fixed/float swap: USD 10 million notional, fixed leg struck at 4.25%.

{} tradeLot[0], execution lot
{  "lotIdentifier": [    {      "assignedIdentifier": [        {          "identifier": {            "value": "LOT-2026-001"          }        }      ]    }  ],  "priceQuantity": [    {      "price": [        {          "value": 0.0425,          "unit": {            "currency": "USD"          },          "perUnitOf": {            "currency": "USD"          },          "priceType": "InterestRate"        }      ],      "quantity": [        {          "value": 10000000,          "unit": {            "currency": "USD"          }        }      ]    },    {      "quantity": [        {          "value": 10000000,          "unit": {            "currency": "USD"          }        }      ],      "observable": {        "index": {          "floatingRateIndex": {            "value": "USD-SOFR-OIS Compound"          }        }      }    }  ]}
Two PriceQuantity entries, one per leg. The fixed leg carries a price (the rate); the floating leg carries an observable instead, because its rate is discovered, not agreed.

Why not just one notional field?

Because positions change. Suppose the parties later increase the swap by USD 5 million. In most systems that means editing the trade record, which destroys what it looked like before. In the CDM, the increase event appends a second lot:

{} tradeLot, after an increase
[  {    "lotIdentifier": [      {        "assignedIdentifier": [          {            "identifier": {              "value": "LOT-2026-001"            }          }        ]      }    ],    "priceQuantity": [      {        "quantity": [          {            "value": 10000000,            "unit": {              "currency": "USD"            }          }        ]      }    ]  },  {    "lotIdentifier": [      {        "assignedIdentifier": [          {            "identifier": {              "value": "LOT-2026-002"            }          }        ]      }    ],    "priceQuantity": [      {        "quantity": [          {            "value": 5000000,            "unit": {              "currency": "USD"            }          }        ]      }    ]  }]
Total position: 15 million, derivable at any time by summing lots, while each execution's own terms remain on record. (Trimmed to quantities for readability.)
Try itBrowse PriceQuantity in the explorer and expand its fields. The schema view shows the exact shapes from this lesson, including cardinalities.
◆ Checkpoint

01A floating leg's PriceQuantity usually has no price entry. Why?

1 / 3