Recommended transaction types for instrument lifecycle events

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 a BondCoupon transaction type. Note this event applies to bonds modelled as Bond, InflationLinkedBond and ComplexBond (though excluding MBS).

BondCoupon transaction type

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 a BondPrincipal transaction type. Note this event applies to bonds modelled as Bond, InflationLinkedBond and ComplexBond (though excluding MBS).

BondPrincipal transaction type

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 a CreditPremiumCashFlow transaction type. Note this event applies to instruments modelled as CdsIndex and CreditDefaultSwap.

CreditPremiumCashFlow transaction type

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": "Premium payment",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": 1
    },
    {
      "name": "Record as a flow of value in/out",
      "movementTypes": "Carry",
      "side": "Side1",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'

ExpiryEvent

The default transaction template for this instrument lifecycle event specifies an Expiry transaction type.

Expiry transaction type

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"
    }
  ]
}'

FutureExpiryEvent

The default transaction template for this instrument lifecycle event specifies a FutureCashSettlement transaction type.

FutureCashSettlement transaction type

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/FutureCashSettlement?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "FutureCashSettlement",
      "description": "Transaction type for transactions automatically generated by FutureExpiryEvent",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Set units to 0"
      "movementTypes": "StockMovement",
      "side": "NotionalCustomSide",              # <--Custom side, see below
      "direction": -1
    },
    {
      "name": "Realise contract gain or loss"
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "Txn:GrossConsideration"
    },
    {
      "type": "DeriveTotalConsideration",
      "formula": "Txn:GrossConsideration"
    }
  ]
}'

The StockMovement uses a custom side (see this tutorial):

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/NotionalCustomSide?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:TotalConsideration",
  "notionalAmount": "Transaction/default/NotionalAmount"
}'

FutureMarkToMarketEvent

The default transaction template for this instrument lifecycle event specifies a FutureMarkToMarket transaction type.

FutureMarkToMarket transaction type

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/FutureMarkToMarket?scope=default'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "aliases": [
    {
      "type": "FutureMarkToMarket",
      "description": "Transaction type for transactions automatically generated by FutureMarkToMarketEvent",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Adjust notional cost up or down"
      "movementTypes": "VariationMargin",
      "side": "MTMCustomSide",                   # <--Custom side, see below
      "direction": 1
    },
    {
      "name": "Realise daily gain or loss"
      "movementTypes": "CashReceivable",
      "side": "Side2",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "DeriveTotalConsideration",
      "formula": "Txn:GrossConsideration"
    }
  ]
}'

The VariationMargin movement uses a custom side (see this tutorial):

curl -X PUT 'https://<your-domain>.lusid.com/api/api/transactionconfiguration/sides/MTMCustomSide?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:TotalConsideration"
}'

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 transaction types

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 transaction type

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 a Maturity transaction type. Note this is a generic event that applies to many different types of instrument.

Maturity transaction type

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 a MbsCoupon transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

MbsCoupon transaction type

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 a MbsInterestDeferral transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

MbsInterestDeferral transaction type

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 a MbsInterestShortfall transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

MbsInterestShortfall transaction type

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 a MbsPrincipal transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

MbsPrincipal transaction type

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 a MbsPrincipalWriteOff transaction type. Note this event applies only to bonds modelled as ComplexBond that are specially configured to be mortgage-backed securities.

MbsPrincipalWriteOff transaction type

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 a CashSettledOptionExercise transaction type. Note this event applies to instruments modelled as ExchangeTradedOption and EquityOption.

CashSettledOptionExercise transaction type

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 transaction type

This transaction type is required if the option is physically settled, 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 transaction type

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 a ProtectionPayoutCashFlow transaction type. Note this event applies to instruments modelled as CdsIndex and CreditDefaultSwap.

ProtectionPayoutCashFlow transaction type

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": "Update cash balance",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": 1,
    }
  ],
  "calculations": [
    {
      "type": "Txn:TradeToPortfolioRate"
    },
    {
      "type": "Txn:ExchangeRate"
    }
  ]
}'

SwapCashFlowEvent

The default transaction template for this instrument lifecycle event specifies a SwapCashFlow transaction type. Note this event applies to instruments modelled as InflationSwap and InterestRateSwap.

SwapCashFlow transaction type

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 a SwapPrincipal transaction type.

SwapPrincipal transaction type

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"
    }
  ]
}'