Related resources:




Providing you have suitable access control permissions, you can create a transaction portfolio to store economic activity in a set of instruments.

Once created, you can load economic activity into a transaction portfolio by:

Note that LUSID does not maintain a static record of your holdings in a transaction portfolio but rather replays the history of economic activity on demand to calculate your live positions in affected instruments. This real-time holdings report is the primary input into portfolio valuations and profit and loss reporting in LUSID.

Note: LUSID does not store instruments themselves in a transaction portfolio, but rather resolves transactions and other economic activity to instruments stored in the LUSID instrument master.

To create a transaction portfolio, you must specify a unique identifier, friendly name and base (or reporting) currency. You can optionally:

  • Specify a creation date prior to today (the default). This is important if you intend to load historical activity.
  • Register an instrument scope in order to resolve transactions to instruments mastered in that scope, before falling back to the default scope.
  • Register a transaction type scope in order to restrict transactions to referencing only transaction types domiciled in that scope. If omitted, transactions reference transaction types in the default scope.
  • 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.

To examine the complete set of data fields for a transaction portfolio, examine the API documentation. Note that to subsequently interact you can use the APIs in the Portfolios collection as well as the Transaction Portfolios collection.

There are several ways to create a transaction portfolio:

Once created, you can only change certain characteristics of a transaction portfolio in some circumstances. More information.


  1. Obtain an API access token.
  2. Call the LUSID CreatePortfolio 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 the scope.
    • A baseCurrency to which foreign currency transactions can be normalised upon provision of a trade to portfolio rate. This must be an ISO 4217 currency code, for example GBP or JPY.
    • Optionally, an instrument scope, transaction type scope, sub-holding keys, corporate action sources and/or custom properties.

    For example, to create a GBP-denominated portfolio with a code of Income and a creation date at the start of 2023 in myexamplescope (highlighted in red in the URL; this is created if it does not exist):

    curl -X POST "https://<your-domain>"
    -H "Authorization: Bearer <your-API-access-token>"
    -H "Content-Type: application/json-patch+json"
    -d '{
      "displayName": "Example transaction portfolio",
      "code": "Income",
      "created": "2023-01-01T00:00:00Z",
      "baseCurrency": "GBP",
      "instrumentScopes": ["my-secret-instr-scope"],
      "transactionTypeScope": "my-secret-TT-scope",
      "subHoldingKeys": ["Transaction/Strategy/Signal"],
      "corporateActionSourceId": {
        "scope": "Sources",
        "code": "VendorA"
      "properties": {
        "Portfolio/Manager/Name": {
          "key": "Portfolio/Manager/Name",
          "value": {
            "labelValue": "John Doe"
          "effectiveFrom": "2023-02-05T12:00:00.0000000+00:00"

    Note the response does not contain all the fields, so to confirm the transaction portfolio has been created as specified, call the GetDetails API:

      "originPortfolioId": {
        "scope": "myexamplescope",
        "code": "Income"
      "version": {
        "effectiveFrom": "2023-01-01T00:00:00.0000000+00:00",
        "asAtDate": "2023-03-02T11:17:20.6381780+00:00"
      "baseCurrency": "GBP",
      "corporateActionSourceId": {
        "scope": "Sources",
        "code": "VendorA"
      "subHoldingKeys": [
      "instrumentScopes": ["my-secret-instr-scope"],
      "accountingMethod": "Default",
      "amortisationMethod": "NoAmortisation",
      "transactionTypeScope": "my-secret-TT-scope",

Using the LUSID web app

  1. Sign in to the LUSID web app using the credentials of a LUSID administrator.
  2. From the top left menu, select Data Management > Portfolios.
  3. Click the Create Portfolio button (top right).
  4. On the Basic data screen of the Create Portfolio dialog, choose Transaction from the Type dropdown menu, and specify a Scope, Code and Effective date:
  5. On the Details screen, specify a Base currency using an ISO 4217 currency code, for example GBP or JPY.
  6. Complete the other optional fields if desired and click the Create button.