Related resources:




The standard way to update the holdings of a portfolio in LUSID is by upserting transactions. However, if you don't have a suitable feed of transactions, LUSID also allows holdings to be loaded directly into the system.

When holdings are loaded into LUSID, their instruments, units, cost values and any additional properties are stored against the specified effective date. Any subsequent transactions (ones with a transaction date after the effective date of the loaded holdings) will continue to adjust the holdings in the normal way.

This capability is available via the SetHoldings and AdjustHoldings APIs:

  • SetHoldings: instructs LUSID to replace the current holdings in the portfolio with the supplied dataset. Any holdings in any instruments that are not included in the dataset are removed (ie. reduced to zero).
  • AdjustHoldings: instructs LUSID to update the current holdings in the portfolio with the supplied dataset. Any holdings in instruments that are not included in the dataset are left untouched.

Whether you set or adjust holdings, there is no profit and loss (P&L) associated with the event. For instance, if your initial holding is 5,000 Acme Anvil shares, at a price of $10 a share, your initial cost is $50,000. If you then adjust the holding of Acme Anvil to 4,000 shares and change the price to $9 a share, your initial cost becomes $36,000; there is no gain or loss associated with this adjustment, even if the adjustment is booked to a different effective date. 

The primary use of this capability is to ensure that holdings in LUSID can match an external system, even if the external system is unable to provide a comprehensive transaction history. Using SetHoldings/AdjustHoldings will ensure that the holdings in LUSID are correct regardless of the transactions.

Note that holdings can be adjusted at the instrument and subholding level within a portfolio, so you can change the tax-lot or strategy holdings.