Providing you have suitable access control permissions, you can create a derived transaction portfolio that is a live copy of an existing 'parent' transaction portfolio at the moment it is forked.
The derived portfolio automatically inherits all economic activity loaded into the parent portfolio, and also all subsequent changes in most circumstances. Optionally, you can load separate economic activity into the derived portfolio, with transactions impacting the same instruments in the latter taking precedence.
Derived portfolios in conjunction with scopes are a powerful construct. For example, to do pre-trade what-if analysis, you can create a derived portfolio in a new scope linked to the parent portfolio in the ‘official’ scope. You can then book scenario transactions in the derived portfolio and compare the performance of the two without affecting the live book. For a demonstration, see this Jupyter Notebook.
To create a derived portfolio, you must specify a unique identifier, friendly name and the unique identifier of the parent portfolio. Other characteristics are inherited, but you can override the following if desired:
- Register one or more sub-holding keys (SHKs) in order to split holdings into categories. By default, LUSID generates one holding per instrument.
- Subscribe to a corporate action source containing corporate actions affecting instruments transacted in the portfolio.
- Change the default accounting method (Average Cost).
- Add custom properties to store additional information about the portfolio not recorded by the standard set of data fields. These properties must be from the
Portfolio
domain.
Note: While it is possible to change the inherited creation date and instrument scope of a derived portfolio, this is not recommended.
To examine the complete set of data fields for a derived portfolio, examine the API documentation. Note that to subsequently interact you can use the APIs in the Portfolios and Transaction Portfolios collections as well as the Derived Transaction Portfolios collection.
There are several ways to create a derived portfolio:
- Using the LUSID REST API
- Using the LUSID web app
- If you have a Luminesce license, by writing a SQL query.
Note the following:
- Once created, you can only change some characteristics of a derived portfolio in certain circumstances. More information.
- If you ever need to delete the parent portfolio, you must first delete the derived portfolio.
Using the LUSID REST API
- Obtain an API access token.
- Call the LUSID CreateDerivedPortfolio API for your LUSID domain, passing in your API access token, nominating a
scope
in the URL, and specifying in the request body:- A
displayName
. - A
code
unique within thescope
. - The
scope
andcode
of the parent portfolio.
For example, to create a derived portfolio in
myexamplederivedscope
(highlighted in red in the URL; this is created if it does not exist):curl -X POST "https://<your-domain>.lusid.com/api/api/derivedtransactionportfolios/myexamplederivedscope" -H "Authorization: Bearer <your-API-access-token>" -H "Content-Type: application/json-patch+json" -d '{ "displayName": "Example derived transaction portfolio", "code": "Growth", "parentPortfolioId": { "scope": "myexamplescope", "code": "Income" } }'
Providing the request is successful, the response lists the inherited values applied to other data fields. Note the identifier for the derived portfolio entity consists of the
scope
andcode
(highlighted in red):{ "id": { "scope": "myexamplederivedscope", "code": "Growth" }, "type": "DerivedTransaction", "displayName": "Example derived transaction portfolio", "created": "2022-01-01T00:00:00.0000000+00:00", "parentPortfolioId": { "scope": "myexamplescope", "code": "Income" }, "version": { "effectiveFrom": "2022-01-01T00:00:00.0000000+00:00", "asAtDate": "2022-10-14T15:42:29.7166460+00:00" }, "isDerived": true, "baseCurrency": "GBP", "instrumentScopes": [], "accountingMethod": "Default", "amortisationMethod": "NoAmortisation", }
- A
Using the LUSID web app
- Sign in to the LUSID web app using the credentials of a LUSID administrator.
- From the top left menu, select Data Management > Portfolios.
- Find the transaction portfolio you want to derive from and select Create derived portfolio from the menu at the end of the row:
- On the Basic data screen of the Create Derived Portfolio dialog, specify a Scope and Code:
- Override the other inherited characteristics of the parent portfolio if desired and click the Create button on the Property constraints screen.