Bond Position
Table of Contents
A bond position holds a weighted basket of underlying bonds. ORE
models it with the trade type BondPosition. The container node is
BondBasketData. This note records the domain grounding, as ORE
documents it in its product catalogue.
1. Identifiers
What a trader books it as, and what to grep for. The codes are the trade type catalogue's, which is what the database enforces.
| Field | Value |
|---|---|
| Full name | Bond Position |
| Short name | Bond Position |
| ORE Studio product code | BondPosition |
| Asset class | bond |
| Family | Position |
| ORE trade data node | none; the payload is not a per-type node |
| ORE documentation | bondposition.tex |
2. Summary
A bond position represents a position in a weighted basket of
underlying bonds. It can be a stand-alone trade type or a trade
component inside a total return swap. The basket can be built in the
trade or fetched from reference data by an identifier. Only underlying
descriptions of type Bond are allowed.
3. Detail
3.1. What it is
ORE defines the product as follows:
A bond position represents a position in a weighted basket of underlying bonds.
Source: ORE User Guide, Products catalogue, bondposition.tex.
ORE describes the dual role as follows:
A bond position can be used both as a stand alone trade type (TradeType: BondPosition) or as a trade component (BondBasketData) used within the TotalReturnSwap (Generic TRS) trade type.
Source: ORE User Guide, Products catalogue, bondposition.tex.
3.2. In plain terms
A bond position is a list of bonds with weights. It lets a trade hold several bonds as one position. The same block also builds the asset side of a total return swap on a bond basket.
3.3. How it works in ORE
The position is set up using a BondBasketData block. Quantity is
the number of units of the weighted basket held. Identifier is
optional: the underlying data can be retrieved from reference data
through it, when it is not given in the trade itself. Underlying is
optional for the same reason: when the basket lives in reference data,
the underlying data is populated from there. Each Underlying block
carries a Type, a Name, an IdentifierType, a Weight and an
optional BidAskAdjustment. Only underlyings of type Bond are
allowed.
3.4. Mathematical notes
The weighted basket price is:
Basket-Price = Quantity x sum_i Weight_i x B_i x FX_i
where B_i is the price of the i-th bond in the basket. FX_i is the
FX spot converting from the currency of the i-th bond to the return
currency when the position sits in a total return swap, and to the
currency of the first bond in the basket otherwise.
3.5. What moves its value (static sensitivities)
- The price of each bond in the basket.
- The weights of the basket and the quantity.
- The FX rates into the return currency.
- The credit of each issuer.
The position is a linear claim on the basket, so each bond price moves the value by its weight.
3.6. How the profile ages (dynamic sensitivities)
A bond position is a static holding with no cash flows of its own. Its value tracks the bonds as they age toward maturity. As a trade component inside a total return swap, it provides the asset leg whose total return is swapped against funding.
3.7. Why a customer would want it
A bond position bundles several bonds into one tradable unit. It is the natural asset leg of a bond total return swap, where the return of the basket is paid out. In ORE Studio a customer books bond positions to value them and run sensitivities on the ORE engine.
3.8. Example
ORE's catalogue shows a basket of two US bonds, half each, with small bid-ask adjustments:
<Trade id="BondPosition"> <TradeType>BondPosition</TradeType> <Envelope>...</Envelope> <BondBasketData> <Quantity>1000</Quantity> <Identifier>ISIN:GB00B4KT9Q30</Identifier> <Underlying> <Type>Bond</Type> <Name>US69007TAB08</Name> <IdentifierType>ISIN</IdentifierType> <Weight>0.5</Weight> <BidAskAdjustment>-0.0025</BidAskAdjustment> </Underlying> <Underlying> <Type>Bond</Type> <Name>US750236AW16</Name> <IdentifierType>ISIN</IdentifierType> <Weight>0.5</Weight> <BidAskAdjustment>-0.005</BidAskAdjustment> </Underlying> </BondBasketData> </Trade>
Source: ORE User Guide, Products catalogue, bondposition.tex,
listing Bond position data.
4. See also
- Knowledge — the hub of all knowledge notes, with the alphabetical product run.
- Wikipedia: Total return swap. This note follows its general definition.
- ORE User Guide, Product catalogue: products.tex, which inputs bondposition.tex. The upstream project is OpenSourceRisk/Engine.