If you use the default transaction templates provided by LUSID for instrument lifecycle events then you must create transaction types with specific names residing in the default
source.
If you wish to change transaction type names and/or sources then you cannot use the default transaction templates and must instead create custom transaction templates for the events you wish to handle.
The transaction types on this page are suggestions only. You can design a transaction type to have any economic impact you like.
BondCouponEvent
The default transaction template for this instrument lifecycle event specifies one transaction type. Note this event applies to bonds modelled as Bond
, InflationLinkedBond
and ComplexBond
(though excluding MBS).
BondCoupon
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/BondCoupon?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "BondCoupon",
"description": "Transaction type for bond coupon event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Increase cash balance",
"movementTypes": "CashAccrual",
"side": "Side2",
"direction": 1
},
{
"name": "Report income as a flow out of the security",
"movementTypes": "Carry",
"side": "Side1",
"direction": 1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
BondPrincipalEvent
The default transaction template for this instrument lifecycle event specifies one transaction type. Note this event applies to bonds modelled as Bond
, InflationLinkedBond
and ComplexBond
(though excluding MBS).
BondPrincipal
This transaction type is always required. See also: Movement types | Movement options | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/BondPrincipal?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "BondPrincipal",
"description": "Transaction type for bond principal event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Increase cash balance",
"movementTypes": "CashReceivable",
"side": "Side2",
"direction": 1
},
{
"name": "Set cost to zero without reducing units",
"movementTypes": "StockMovement",
"side": "Side1",
"direction": -1,
"movementOptions": ["Virtual"]
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
CreditPremiumCashFlowEvent
The default transaction template for this instrument lifecycle event specifies one mandatory transaction type. Note this event applies to instruments modelled as CdsIndex
and CreditDefaultSwap
.
CreditPremiumCashFlow
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/CreditPremiumCashFlow?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "CreditPremiumCashFlow",
"description": "Transaction type for credit premium cash flow event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Decrease cash balance",
"movementTypes": "CashCommitment",
"side": "Side2",
"direction": -1
},
{
"name": "Record as a flow of value out",
"movementTypes": "Carry",
"side": "Side2",
"direction": -1,
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
ExpiryEvent
The default transaction template for this instrument lifecycle event specifies one transaction type.
Expiry
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/Expiry?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "Expiry",
"description": "Transaction type for expiry event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Set units to zero",
"movementTypes": "StockMovement",
"side": "Side1",
"direction": -1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
FxForwardSettlementEvent
The default transaction template for this instrument lifecycle event specifies three transaction types, all conditional. Note this event applies to instruments modelled as FxForward
and FxSwap
.
FxForwardDomPrincipal and FxForwardFgnPrincipal
These transaction types can be combined into one type with two aliases (see this tutorial). It is required if the FX instrument mastered in LUSID is deliverable. See also: Movement types | Movement options | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/FxForwardDomPrincipal?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "FxForwardDomPrincipal",
"description": "Settle the domestic leg of a FxForwardSettlementEvent",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
},
{
"type": "FxForwardFgnPrincipal",
"description": "Settle the foreign leg of a FxForwardSettlementEvent",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Virtually sell the individual legs to calculate realised gain/loss",
"movementTypes": "StockMovement",
"side": "FxForwardSettlementEventCustomSide", # <--Custom side, see below
"direction": -1,
"movementOptions": ["Virtual"]
},
{
"name": "Manifest the cash holdings",
"movementTypes": "CashCommitment",
"side": "Side2",
"direction": 1,
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
The StockMovement
uses a custom side (see this tutorial):
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/FxForwardSettlementEventCustomSide?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"security": "Txn:LusidInstrumentId",
"currency": "Txn:TradeCurrency",
"rate": "Txn:TradeToPortfolioRate",
"units": "Txn:Units",
"amount": "Txn:TotalConsiderationInTradeCurrency"
}'
NdfSettlement
This transaction type is required if the FX instrument mastered in LUSID is non-deliverable. See also: Movement types | Built-in sides | Calculation types
Coming soon...
MaturityEvent
The default transaction template for this instrument lifecycle event specifies one transaction type. Note this is a generic event that applies to many different types of instrument.
Maturity
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/Maturity?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "Maturity",
"description": "Transaction type for maturity event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Set units to zero",
"movementTypes": "StockMovement",
"side": "Side1",
"direction": -1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
MbsCouponEvent
The default transaction template for this instrument lifecycle event specifies one transaction type. Note this event applies only to bonds modelled as ComplexBond
that are specially configured to be mortgage-backed securities.
MbsCoupon
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsCoupon?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "MbsCoupon",
"description": "Transaction type for MBS coupon event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Increase cash balance",
"movementTypes": "CashAccrual",
"side": "Side2",
"direction": 1
},
{
"name": "Report income as a flow out of the security",
"movementTypes": "Carry",
"side": "Side1",
"direction": 1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
MbsInterestDeferralEvent
The default transaction template for this instrument lifecycle event specifies one transaction type. Note this event applies only to bonds modelled as ComplexBond
that are specially configured to be mortgage-backed securities.
MbsInterestDeferral
This transaction type is always required. See also: Movement types | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsInterestDeferral?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "MbsInterestDeferral",
"description": "Transaction type for MBS interest deferral event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Adjust current face",
"movementTypes": "StockMovement",
"side": "MbsCurrentFaceCustomSide", # <--Custom side, see below
"direction": 1
},
{
"name": "Report adjustment as a flow of value",
"movementTypes": "Carry",
"side": "MbsCurrentFaceCustomSide", # <--Custom side, see below
"direction": 1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
Both movements use the same custom side:
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/MbsCurrentFaceCustomSide?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"security": "Txn:LusidInstrumentId",
"currency": "Txn:TradeCurrency",
"rate": "Txn:TradeToPortfolioRate",
"units": "0",
"amount": "Txn:TotalConsideration",
"currentFace": "Txn:TotalConsideration"
}'
MbsInterestShortfallEvent
The default transaction template for this instrument lifecycle event specifies one transaction type. Note this event applies only to bonds modelled as ComplexBond
that are specially configured to be mortgage-backed securities.
MbsInterestShortfall
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsInterestShortfall?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "MbsInterestShortfall",
"description": "Transaction type for MBS interest shortfall event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Adjust cash balance",
"movementTypes": "CashReceivable",
"side": "Side2",
"direction": -1
},
{
"name": "Report adjustment as a flow of value",
"movementTypes": "Carry",
"side": "Side1",
"direction": -1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
MbsPrincipalEvent
The default transaction template for this instrument lifecycle event specifies one transaction type. Note this event applies only to bonds modelled as ComplexBond
that are specially configured to be mortgage-backed securities.
MbsPrincipal
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsPrincipal?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "MbsPrincipal",
"description": "Transaction type for MBS principal event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Increase cash balance",
"movementTypes": "CashReceivable",
"side": "Side2",
"direction": 1
},
{
"name": "Adjust current face",
"movementTypes": "StockMovement",
"side": "MbsCurrentFaceCustomSide", # <--Custom side, see below
"direction": -1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
The StockMovement
uses a custom side:
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/MbsCurrentFaceCustomSide?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"security": "Txn:LusidInstrumentId",
"currency": "Txn:TradeCurrency",
"rate": "Txn:TradeToPortfolioRate",
"units": "0",
"amount": "Txn:TotalConsideration",
"currentFace": "Txn:TotalConsideration"
}'
MbsPrincipalWriteOffEvent
The default transaction template for this instrument lifecycle event specifies one transaction type. Note this event applies only to bonds modelled as ComplexBond
that are specially configured to be mortgage-backed securities.
MbsPrincipalWriteOff
This transaction type is always required. See also: Movement types | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/MbsPrincipalWriteOff?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "MbsPrincipalWriteOff",
"description": "Transaction type for MBS principal write-off event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Adjust current face",
"movementTypes": "StockMovement",
"side": "MbsCurrentFaceCustomSide", # <--Custom side, see below
"direction": -1
},
{
"name": "Report adjustment as a flow of value",
"movementTypes": "Carry",
"side": "MbsCurrentFaceCustomSide", # <--Custom side, see below
"direction": -1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
Both movements use the same custom side:
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/MbsCurrentFaceCustomSide?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"security": "Txn:LusidInstrumentId",
"currency": "Txn:TradeCurrency",
"rate": "Txn:TradeToPortfolioRate",
"units": "0",
"amount": "Txn:TotalConsideration",
"currentFace": "Txn:TotalConsideration"
}'
OptionExerciseCashEvent
The default transaction template for this instrument lifecycle event specifies one transaction type. Note this event applies to instruments modelled as ExchangeTradedOption
and EquityOption
.
CashSettledOptionExercise
This transaction type is required if the option is cash-settled, whether call or put. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/CashSettledOptionExercise?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "CashSettledOptionExercise",
"description": "Transaction type for cash-settled option event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Adjust cost of option",
"movementTypes": "StockMovement",
"side": "Side1",
"direction": -1
},
{
"name": "Adjust cash balance",
"movementTypes": "CashCommitment",
"side": "Side2",
"direction": 1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
OptionExercisePhysicalEvent
The default transaction template for this instrument lifecycle event specifies three transaction types. Note this event applies to instruments modelled as ExchangeTradedOption
and EquityOption
.
PhysicallySettledOptionExercise
This transaction type is required if the option is physically settled, for both call and put. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/PhysicallySettledOptionExercise?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "PhysicallySettledOptionExercise",
"description": "Transaction type for physically settled option event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Adjust cost of option",
"movementTypes": "StockMovement",
"side": "Side1",
"direction": -1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
CallOptionPhysicalExercise
This transaction type is required if the option is a physically settled call option. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/CallOptionPhysicalExercise?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "CallOptionPhysicalExercise",
"description": "Transaction type for physically settled call option event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Increase cost of underlying",
"movementTypes": "StockMovement",
"side": "Side1",
"direction": 1
},
{
"name": "Decrease cash balance",
"movementTypes": "CashCommitment",
"side": "CallOptionPhysicalExerciseCustomSide", # <--Custom side, see below
"direction": -1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
The CashCommitment
movement uses a custom side:
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/CallOptionPhysicalExerciseCustomSide?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"security": "Txn:SettleCcy",
"currency": "Txn:SettlementCurrency",
"rate": "SettledToPortfolioRate",
"units": "Transaction/default/GrossConsideration",
"amount": "Transaction/default/GrossConsideration"
}'
PutOptionPhysicalExercise
This transaction type is required if the option is a physically settled put option. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/PutOptionPhysicalExercise?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "PutOptionPhysicalExercise",
"description": "Transaction type for physically settled put option event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Decrease cost of underlying",
"movementTypes": "StockMovement",
"side": "Side1",
"direction": -1
},
{
"name": "Increase cash balance",
"movementTypes": "CashReceivable",
"side": "PutOptionPhysicalExerciseCustomSide", # <--Custom side, see below
"direction": 1
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
The CashReceivable
movement uses a custom side:
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/PutOptionPhysicalExerciseCustomSide?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"security": "Txn:SettleCcy",
"currency": "Txn:SettlementCurrency",
"rate": "SettledToPortfolioRate",
"units": "Txn:TotalConsideration",
"amount": "Transaction/default/GrossConsideration"
}'
ProtectionPayoutCashFlowEvent
The default transaction template for this instrument lifecycle event specifies one mandatory transaction type. Note this event applies to instruments modelled as CdsIndex
and CreditDefaultSwap
.
ProtectionPayoutCashFlow
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/ProtectionPayoutCashFlow?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "ProtectionPayoutCashFlow",
"description": "Transaction type for protection payout cash flow event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Set units to zero",
"movementTypes": "StockMovement",
"side": "Side1",
"direction": -1
},
{
"name": "Increase cash balance",
"movementTypes": "CashReceivable",
"side": "Side2",
"direction": 1,
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
SwapCashFlowEvent
The default transaction template for this instrument lifecycle event specifies one mandatory transaction type. Note this event applies to instruments modelled as InflationSwap
and InterestRateSwap
.
SwapCashFlow
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/SwapCashFlow?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "SwapCashFlow",
"description": "Transaction type for swap cash flow event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Pay/receive cashflow",
"movementTypes": "CashCommitment",
"side": "Side2",
"direction": 1
},
{
"name": "Report as a flow of value in/out",
"movementTypes": "Carry",
"side": "Side2",
"direction": 1,
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'
SwapPrincipalEvent
The default transaction template for this instrument lifecycle event specifies one mandatory transaction type.
SwapPrincipal
This transaction type is always required. See also: Movement types | Built-in sides | Calculation types
curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/types/default/SwapPrincipal?scope=default'
-H 'Content-Type: application/json-patch+json'
-H 'Authorization: Bearer <your-API-access-token>'
-d '{
"aliases": [
{
"type": "SwapPrincipal",
"description": "Transaction type for swap principal event",
"transactionClass": "Basic",
"transactionRoles": "AllRoles",
"isDefault": false
}
],
"movements": [
{
"name": "Pay/receive cashflow",
"movementTypes": "CashCommitment",
"side": "Side2",
"direction": 1
},
{
"name": "Report as a flow of value in/out",
"movementTypes": "Carry",
"side": "Side2",
"direction": 1,
}
],
"calculations": [
{
"type": "Txn:TradeToPortfolioRate"
},
{
"type": "Txn:ExchangeRate"
}
]
}'