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 following APIs:
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 (that is, reduced to zero).
Instructs LUSID to update the current holdings in the portfolio with the supplied dataset, all of which must share the same effective date. Any holdings in instruments that are not included in the dataset are left untouched.
AdjustHoldings, except holdings in the supplied dataset can have different effective dates, and you can choose a success mode to decide whether or not the entire operation fails if one holding fails validation.
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.
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.