Transactions and manual vs automatic calculation of amounts

Prev Next

When you book a trade, you can manually set various numeric data points yourself, or ask LUSID to calculate them for you:

  • While you are not required to capture all these data points, certain LUSID downstream features may rely on them, in particular instrument events.

  • If you manually set (for example) a total consideration and ask LUSID to calculate it for you, your manual amount prevails.

In addition, LUSID automatically calculates certain amounts that you cannot override. The full list is as follows:

Amount

Supported instruments

Represents…

Currency

Calculation method

Can user set or override?

Can be automated using transaction type calculation?

Reported on output transaction?

Can be used in side to impact holdings?

Explanation of calculated amount

Gross trade amount

All

Amount before fees

Transaction

Automatic

grossTransactionAmount field

Txn:GrossTradeAmount

  • If instrument is a currency, amount is the number of transaction units.

  • If notional amount is set or calculated, amount is 0.

  • If gross consideration is NOT set or calculated, amount is the same as the gross consideration calculation per instrument type.

  • Otherwise, amount is:
    (Gross consideration - Accrued interest) / Exchange rate

Trade amount

All

Amount after fees

Transaction

Automatic

transactionAmount field

Txn:TradeAmount

Amount is the same as gross trade amount if:

  • The instrument is a currency.

  • Notional amount is set or calculated

  • Total consideration is NOT set or calculated.

Otherwise, the amount is:
(Total consideration - Accrued interest) / Exchange rate

Gross consideration

All

Amount including accrued interest but before fees

Settlement

Manual or automatic

Txn:GrossConsideration

Transaction/default/GrossConsideration system property

Txn:GrossConsideration

See this article

Gross consideration in trade currency

All

Amount including accrued interest but before fees

Transaction

Automatic

Gross consideration / Exchange rate

Total consideration

All

Amount including accrued interest and after fees

Settlement

Manual or automatic

DeriveTotalConsideration

totalConsideration.amount field

Txn:TotalConsideration

See this article

Total consideration in trade currency

All

Amount including accrued interest and after fees

Transaction

Automatic

Txn:TotalConsiderationInTradeCurrency

Total consideration / Exchange rate

Bond interest

Bond, ComplexBond, InflationLinkedBond

Accrued interest bought or sold

Transaction

Manual or automatic

Txn:BondInterest

Transaction/default/BondInterest system property

Txn:BondInterest

See this article

Notional

Future, ContractForDifference

Notional value

Transaction

Manual or automatic

Txn:NotionalAmount

Transaction/default/NotionalAmount system property

Txn:NotionalAmount

See this article

Current face

MBS (asset-backed ComplexBond)

Outstanding notional value

Transaction

Manual or automatic

Transaction/default/CurrentFace system property

Txn:CurrentFace

Coming soon

Example: Comparing manual vs automatic for a bond purchase

Consider the following example of a bond purchase transaction:

  • Number of units purchased: 100000

  • Price: 100

  • Trade commission: £50

  • Bond interest bought: £452.06

The input transactions for the two methods are quite different:

Manual specification of amounts

Automatic calculation by LUSID

You calculate totalConsideration.amount yourself, and record all the data points using a combination of system and custom properties:

james
{
  "transactionRequest-1": {
    "transactionId": "Txn-001",
    "type": "Buy",
    "instrumentIdentifiers": {"Instrument/default/Figi": "BBG000ABC123"},
    "transactionDate": "2024-06-15T00:00:00.0000000+00:00",
    "settlementDate": "2024-06-18T00:00:00.0000000+00:00",
    "units": 100000,
    "transactionPrice": {"price": 100, "type": "CleanPrice"},
    "totalConsideration": {"amount": 100502.06, "currency": "GBP"},
    "properties": {
      "Transaction/default/GrossConsideration": {
        "key": "Transaction/default/GrossConsideration",
        "value": {
          "metricValue": {
            "value": 100452.06,
            "unit": "GBP"
          }
        }
      },
      "Transaction/MyProperties/TotalCapitalisedFees": {
        "key": "Transaction/MyProperties/TotalCapitalisedFees",
        "value": {
          "metricValue": {
            "value": 50,
            "unit": "GBP"
          }
        }
      },
      "Transaction/default/BondInterest": {
        "key": "Transaction/default/BondInterest",
        "value": {
          "metricValue": {
            "value": 452.06,
            "unit": "GBP"
          }
        }
      }
    }
  }
}

You set totalConsideration.amount to 0, and only need record the trade commission using a custom property:

{
  "transactionRequest-1": {
    "transactionId": "Txn-001",
    "type": "Buy",
    "instrumentIdentifiers": {"Instrument/default/Figi": "BBG000ABC123"},
    "transactionDate": "2024-06-15T00:00:00.0000000+00:00",
    "settlementDate": "2024-06-18T00:00:00.0000000+00:00",
    "units": 100000,
    "transactionPrice": {"price": 100, "type": "CleanPrice"},
    "totalConsideration": {"amount": 0, "currency": "GBP"},
    "properties": {
      "Transaction/MyProperties/TotalCapitalisedFees": {
        "key": "Transaction/MyProperties/TotalCapitalisedFees",
        "value": {
          "metricValue": {
            "value": 50,
            "unit": "GBP"
          }
        }
      }
    }
  }
}

The Buy transaction type can have any economic impact you like, but might be defined as follows:

Buy transaction type for manual specification

Buy transaction type for automatic calculation

{
  "aliases": [
    {
      "type": "Buy",
      "description": "Transaction type for purchases",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Increase units",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": 1
    },
    {
      "name": "Decrease cash",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": -1
    }
  ]
}

{
  "aliases": [
    {
      "type": "Buy",
      "description": "Transaction type for purchases",
      "transactionClass": "Basic",
      "transactionRoles": "AllRoles",
      "isDefault": false
    }
  ],
  "movements": [
    {
      "name": "Increase units",
      "movementTypes": "StockMovement",
      "side": "Side1",
      "direction": 1
    },
    {
      "name": "Decrease cash",
      "movementTypes": "CashCommitment",
      "side": "Side2",
      "direction": -1
    }
  ],
  "calculations": [
    {
      "type": "Txn:BondInterest"
    },
    {
      "type": "Txn:GrossConsideration"
    },
    {
      "type": "DeriveTotalConsideration",
      "formula": "Txn:GrossConsideration + Properties[Transaction/MyProperties/TotalCapitalisedFees]"
    }
  ]
}

Note that LUSID generates the same output transaction in both circumstances, so the impact on holdings is identical:

{
      "transactionId": "Txn001",
      "type": "Buy",
      "instrumentIdentifiers": {
        "Instrument/default/LusidInstrumentId": "LUID_00003E75",
        "Instrument/default/Figi": "BBG000ABC123"
      },
      "instrumentScope": "default",
      "instrumentUid": "LUID_00003E75",
      "transactionDate": "2024-06-15T00:00:00.0000000+00:00",
      "settlementDate": "2024-06-18T00:00:00.0000000+00:00",
      "units": 100000,
      "transactionAmount": 100050,
      "transactionPrice": {
        "price": 100,
        "type": "CleanPrice"
      },
      "totalConsideration": {
        "amount": 100502.06,
        "currency": "USD"
      },
      "exchangeRate": 1,
      "transactionToPortfolioRate": 1,
      "transactionCurrency": "USD",
      "properties": {
        "Transaction/Fees/TotalCapitalisedFees": {
          "key": "Transaction/Fees/TotalCapitalisedFees",
          "value": {
            "metricValue": {
              "value": 50
            }
          }
        },
        "Transaction/default/GrossConsideration": {
          "key": "Transaction/default/GrossConsideration",
          "value": {
            "metricValue": {
              "value": 100452.06
            }
          }
        },
        "Transaction/default/BondInterest": {
          "key": "Transaction/default/BondInterest",
          "value": {
            "metricValue": {
              "value": 452.06
            }
          }
        },
        "Transaction/default/ResultantHolding": {
          "key": "Transaction/default/ResultantHolding",
          "value": {
            "metricValue": {
              "value": 100000
            }
          }
        }
      },
      "transactionStatus": "Active",
      "realisedGainLoss": [],
      "sourceType": "InputTransaction",
      "resolvedTransactionTypeDetails": {
        "scope": "default",
        "source": "default",
        "type": "Buy"
      }
}