Bond Option (Reference Data)
Table of Contents
A bond option gives the buyer the right to buy or sell a bond at a
fixed price. ORE's catalogue documents the product twice: once with
the full bond data in the trade, and once with the underlying bond
taken from reference data. This note records the reference-data form,
as ORE documents it in its product catalogue. The container node is
BondOptionData.
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 Option (Reference Data) |
| Short name | Bond Option (Reference Data) |
| ORE Studio product code | BondOption |
| Asset class | bond |
| Family | Option |
| ORE trade data node | BondOptionData |
| ORE documentation | bondoption_refdata.tex |
2. Summary
A bond option provides the buyer with the right, but not the
obligation, to buy or sell a given bond at a fixed price either at or
before a specific date. Only vanilla bond options are supported, the
exercise style must be European, and only par redemption vanilla
bonds are supported. The underlying bond is named by its SecurityId
and fetched from reference data. The payoff is the dirty bond value
less the strike, with the strike interpreted as clean or dirty by
PriceType.
3. Detail
3.1. What it is
ORE describes the trade node as follows:
The BondOptionData node is the trade data container for the option part of a bond option trade type. Vanilla bond options are supported, the exercise style must be European. The BondOptionData node includes one and only one OptionData trade component sub-node plus elements specific to the bond option.
Source: ORE User Guide, Products catalogue, bondoption_refdata.tex.
ORE adds a restriction on the bond form:
Note that only par redemption vanilla bonds are supported.
Source: ORE User Guide, Products catalogue, bondoption_refdata.tex.
3.2. In plain terms
A bond option is a vanilla option on a bond that the trade finds in reference data. The buyer names the bond by its identifier, not by a full description. The option is European and the bond must be a plain par bond. The strike can quote a clean or a dirty price.
3.3. How it works in ORE
The BondOptionData node holds one OptionData sub-node plus the
strike, the price type, the default behaviour and the underlying
bond. LongShort takes Long or Short. OptionType takes Call
or Put. A call holder has the right to buy the underlying bond at
the strike. A put holder has the right to sell it. The Style is
European only. Settlement can be Cash or Physical but is
currently ignored. Exactly one ExerciseDate must be given.
Premiums is optional. The StrikeData node represents the strike
price or strike yield. With StrikePrice, the Value field is
expressed per unit notional: a strike of 101 percent of the bond
notional is expressed as 1.01. With StrikeYield, the Yield is
quoted in decimal form. PriceType is mandatory for StrikePrice and
has no impact for StrikeYield. KnocksOut decides the default
behaviour. When true, the option knocks out if the underlying
defaults before option expiry. When false, the option is written on
the recovery value. The BondData block names the bond: SecurityId
is typically the ISIN with the ISIN: prefix, BondNotional is the
notional in the currency of the bond, and the optional CreditRisk
flag decides whether credit risk shows on the product.
3.4. Mathematical notes
The payoff for a bond option is max(B - X, 0), where B is always
the dirty NPV of the underlying bond on the exercise settlement date.
With PriceType Clean, X is (Strike + Underlying Bond Accruals) x
BondNotional. With PriceType Dirty, X is Strike x
BondNotional. When StrikeData uses StrikeYield, PriceType is
omitted because it is not relevant in the yield case.
3.5. What moves its value (static sensitivities)
- The price and yield of the underlying bond.
- The yield volatility of the bond.
- The strike, quoted as price or yield.
- The interest rates that discount the payoff.
- The credit of the issuer, through the default behaviour.
The bond is fetched from reference data, so the valuation depends on the reference data of the issuer and the bond.
3.6. How the profile ages (dynamic sensitivities)
The option is European and ages like a vanilla option. Time value
decays toward expiry. If the issuer fails before expiry, the option
either knocks out or falls back to the recovery value, as KnocksOut
decides. At expiry the payoff is the dirty bond value less the strike,
floored at zero.
3.7. Why a customer would want it
A bond option gives cheap, leveraged exposure to a government bond without buying it. The reference-data form keeps the trade small, because the bond description lives once in the reference data. In ORE Studio a customer books bond options to value them and run sensitivities on the ORE engine.
3.8. Example
ORE's catalogue shows a long European call bond option on a bond from reference data, with the strike per unit notional:
<Trade id="..."> <TradeType>BondOption</TradeType> <Envelope> ... </Envelope> <BondOptionData> <OptionData> <LongShort>Long</LongShort> <OptionType>Call</OptionType> <Style>European</Style> <ExerciseDates> <ExerciseDate>20210203</ExerciseDate> </ExerciseDates> ... </OptionData> <StrikeData> <StrikePrice> <Value>1.23</Value> </StrikePrice> </StrikeData> <PriceType>Dirty</PriceType> <KnocksOut>false</KnocksOut> <BondData> <SecurityId>ISIN:XS1234567890</SecurityId> <BondNotional>100000</BondNotional> </BondData> </BondOptionData> </Trade>
Source: ORE User Guide, Products catalogue, bondoption_refdata.tex,
listing Bond Option data using bond reference data. The source
closes the BondData element without the leading slash; it is
normalised here.
4. See also
- Knowledge — the hub of all knowledge notes, with the alphabetical product run.
- Wikipedia: Option (finance). This note follows its general definition.
- ORE User Guide, Product catalogue: products.tex, which inputs bondoption_refdata.tex. The upstream project is OpenSourceRisk/Engine.