Providing you have suitable access control permissions, you can create a fund configuration module that identifies general ledger accounts in the underlying ABOR responsible for recording activity such as dealing (subscriptions and redemptions) and P&L.

Once created, you can create a fund that references the fund configuration module.

Using the LUSID web app

Coming soon.

Using Luminesce

Coming soon.

Using the LUSID API

  1. Obtain an API access token.

  2. Call the CreateFundConfiguration API, specifying a scope in the URL and, in the body of the request:

    • A code that, together with the scope, uniquely identifies the module in LUSID.

    • A displayName and, optionally, a description.

    • In the dealingFilters collection, a set of rules identifying dealing accounts in the underlying ABOR. Note the order in which rules are specified is significant; LUSID uses the first matching rule found. Each rule must consist of:

    • In the pnlFilters collection, a set of rules identifying P&L account(s) in the underlying ABOR in the same way as above.

    • Optionally in the properties collection, any number of custom properties from the FundConfiguration domain to extend the data model. Alternatively, you can add or remove properties independently using the UpsertFundConfigurationProperties API.

Note: Set backOutFilters to an empty collection for now.

Consider the following request, of a fund configuration module with a scope of MyFunds (in the URL) and a code of StandardFundConfig (in the body):

curl -X POST 'https://<your-domain>.lusid.com/api/api/fundconfigurations/MyFunds'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "code": "StandardConfigModule",
  "displayName": "Standard Fund Configuration",
  "dealingFilters": [
    {
      "filterId": "SUBS",
      "filter": "generalLedgerAccountCode eq '3-Subscriptions'"
    },
    {
      "filterId": "REDS",
      "filter": "generalLedgerAccountCode eq '4-Redemptions'"
    }
  ],
  "pnlFilters": [
    {
      "filterId": "PnL",
      "filter": "generalLedgerAccountCode eq '5-PnL'"
    }
  ],
  "backOutFilters": []
}'

Providing the request is successful, the response confirms the unique ID of the entity consists of its scope and code:

{
  "id": {
    "scope": "MyFunds",
    "code": "StandardConfigModule"
  },
  "displayName": "Standard Fund Configuration Module",
   ...
}

Syntax and allowed values

The syntax of a filter expression is:

<attribute> <operator> <value>

...where:

Note the following:

  • A filter expression is case-insensitive.

  • A string <value> must be enclosed in single straight quote marks (the %27 UTF-8 encoding).

  • You can concatenate expressions using the and and or operators. If you use both, standard boolean operator precedence applies.

<attribute>

Data type

Example expression

Explanation/origin of <value>

An account field

System-defined

Account.type in 'Asset', 'Liabilities'

This can be any of the stored fields for an account, prefixed by Account. Nested fields can be accessed using dot notation.

An account property

User-defined

properties[Account/Type/AssetClass] eq 'Equity'

This can be any property with a 3-stage key in the Account domain.

An ABOR property

User-defined

properties[Abor/Client/Accountant] not in 'Fred Bloggs', 'Sarah Smart'

This can be any property with a 3-stage key in the Abor domain.