If a bond issuer defaults on their obligation, you can instruct LUSID to terminate instrument lifecycle events for an instrument of type Bond
, ComplexBond
or InflationLinkedBond
.
To do this, manually load a BondDefaultEvent
into a corporate action source and subscribe each portfolio with a holding in the defaulted bond to that source. Note the following:
A
BondDefaultEvent
has a single mandatoryeffectiveDate
field that represents the datetime from which events should terminate.LUSID terminates instrument lifecycle events of types
BondCouponEvent
andBondPrincipalEvent
from this date. This means no subsequent transactions representing coupon and principal payments are generated.LUSID does still emit a
MaturityEvent
on the original instrument maturity date, and generates a transaction with a cost of zero. You can handle this event in the normal way to reduce your units down to zero on that date, or alternatively take pre-emptive action if you wish.
Step 1: Create a corporate action source
If a suitable corporate action source does not exist, call the CreateCorporateActionSource API to create one. Note if the defaulted bond is stored in a custom instrument scope you should populate the instrumentScopes
object, for example:
curl -X POST 'https://<your-domain>.lusid.com/api/api/corporateactionsources'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"scope": "My-CAS-scope",
"code": "My-CAS-code",
"displayName": "Example corporate action source",
"description": "This is an example corporate action source",
"instrumentScopes": ["My-bond-instrument-scope"]
}'
Step 2: Subscribe a portfolio to the corporate action source
Call the UpsertPortfolioDetails API to retrospectively subscribe an existing portfolio with a holding in the defaulted bond to the corporate action source, for example:
curl -X POST 'https://<your-domain>.lusid.com/api/api/transactionportfolios/growth/uk-equities/details'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"corporateActionSourceId": {
"scope": "My-CAS-scope",
"code": "My-CAS-code"
}
}'
Step 3: Load a bond default event into the corporate action source
Call the UpsertInstrumentEvents API to load a BondDefaultEvent
into the corporate action source, for example:
curl -X POST 'https://<your-domain>.lusid.com/api/api/corporateactionsources/My-CAS-scope/My-CAS-code/instrumentevents'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '[
{
"instrumentEventId": "BondDefault-2024-08-15",
"instrumentIdentifiers": {"Instrument/default/LusidInstrumentId": "LUID_00003E33"},
"description": "Bond default - stop automatic coupon and principal repayments",
"instrumentEvent": {
"instrumentEventType": "BondDefaultEvent",
"effectiveDate": "2024-08-15T00:00:00.0000000+00:00"
}
}
]'
Note the following:
The
instrumentEventId
is a free string field that must uniquely identify this corporate action in the corporate action source.The
instrumentIdentifiers
field uses a LUID to resolve to a bond instrument mastered in the LUSID Security Master, but you csn specify any unique identifier.The
effectiveDate
refers to the settlement date of automatically-generated transactions at midnight (see below).
Examining the impact of a bond default event
Consider the example of a portfolio containing a single bond with an annual coupon payment on 15 August each year from 2020 until 2026. The principal repayment is due on the maturity date, 15 August 2026. LUSID would normally generate the following transactions in response to events emitted for this bond; note the settlement date of transactions is 15 August at midnight:
If we load a BondCouponEvent
with "effectiveDate": "2024-08-15T00:00:01"
(that is, a time component after midnight), then the bond coupon due on 15 August 2024 is paid:
To prevent the coupon on 15 August 2024, load a BondCouponEvent
with "effectiveDate": "2024-08-15"
(that is, exactly midnight):