How can I match positions with an external system, even without a transaction history?
The standard way to update the holdings of a portfolio in LUSID is by using 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.
- SetHoldings: instructs LUSID to replace the current holdings in the portfolio with the supplied dataset. Any holdings in instruments which are not included in the dataset are removed (ie reduced to zero).
- AdjustHoldings: instructs LUSID to augment the current holdings in the portfolio with the supplied dataset. Any holdings in instruments which 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.