How do I create a fund?

Providing you have suitable access control permissions, you can create a fund referencing a particular fund configuration module, an underlying ABOR, and optionally any number of share class instruments.

Once created, you can:

  • Add fees to a fund to register expenses such as management or legal fees.

  • Value a fund at a specific point in time, calculating GAV and NAV (which is GAV minus accrued fees) and persisting the data so the result is reproducible.

Using the LUSID web app

  1. Sign in to the LUSID web app as a user with suitable permissions.

  2. From the top left menu, select Data Management > Funds.

  3. Click the Create fund button and follow the instructions. For more information about fields, see the API section below:

Using Luminesce

You can use the Lusid.Fund.Writer provider. More information.

Using the LUSID API

  1. Obtain an API access token.

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

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

    • A displayName and, optionally, a description.

    • In the aborId object, the scope and code of an existing ABOR. Note this ABOR cannot be referenced by any other fund.

    • In the fundConfigurationId object, the scope and code of an existing fund configuration module.

    • A type of either Standalone, Master or Feeder.

    • An inceptionDate.

    • In the yearEndDate object, a month between 1 and 12 and a day number appropriate to that month.

    • Optionally in the shareClassInstruments collection, any number of existing instruments of type FundShareClass, identified by a unique identifier such as a LUID. If share class instruments are not in the default instrument scope, add that scope to the shareClassInstrumentScopes collection. Alternatively, you can add or remove share class instruments independently using the SetShareClassInstruments API.

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

Consider the following example, of a fund with a scope of MyFunds (in the URL) that references two share class instruments identified by LUID, at least one of which resides in a MyShareClassCustomInstrumentScope. Note there is no significance to the order in which share class instruments are specified:

curl -X POST 'https://<your-domain>.lusid.com/api/api/funds/MyFunds'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "code": "Growth",
  "displayName": "Growth Fund",
  "description": "Fund for growth",
  "aborId": {
    "scope": "Abor",
    "code": "Standard"
  },
  "fundConfigurationId": {
    "scope": "Fund",
    "code": "Standard"
  },
  "shareClassInstrumentScopes": [
    "MyShareClassCustomInstrumentScope",
  ],
  "shareClassInstruments": [
    {
      "instrumentIdentifiers": {
        "Instrument/default/LusidInstrumentId": "LUID_00003DTJ"
      }
    },
    {
      "instrumentIdentifiers": {
        "Instrument/default/LusidInstrumentId": "LUID_00003DTI"
      }
    }
  ],
  "type": "Standalone",
  "inceptionDate": "2023-12-31T23:59:59.9999999Z",
  "decimalPlaces": 2,
  "yearEndDate": {
    "day": 31,
    "month": 12
  },
  "properties": {
    "Fund/Managers/FundManagerName": {
      "key": "Fund/Managers/FundManagerName",
      "value": {
        "labelValue": "John Doe"
      },
      "effectiveFrom": "2024-01-03"
    }
  }
}'

Providing the ABOR is not referenced by any other fund, and providing LUSID is able to resolve the share class identifiers to mastered instruments, the response confirms the unique identifier of the fund consists of its scope and code:

{
  "id": {
    "scope": "MyFunds",
    "code": "Growth"
  },
  "displayName": "Growth Fund",
  "description": "Fund for growth",
  "aborId": {
    "scope": "Abor",
    "code": "Standard"
  },
  "fundConfigurationId": {
    "scope": "Fund",
    "code": "Standard"
  },
  "shareClassInstruments": [
    {
      "instrumentIdentifiers": {
        "Instrument/default/LusidInstrumentId": "LUID_00003DTJ"
      },
      "lusidInstrumentId": "LUID_00003DTJ",
      "instrumentScope": "MyShareClassCustomInstrumentScope"
    },
    {
      "instrumentIdentifiers": {
        "Instrument/default/LusidInstrumentId": "LUID_00003DTI"
      },
      "lusidInstrumentId": "LUID_00003DTI",
      "instrumentScope": "default"
    }
  ],
  "type": "Standalone",
  "inceptionDate": "2023-12-31T23:59:59.9999999+00:00",
  "decimalPlaces": 2,
  "yearEndDate": {
    "day": 31,
    "month": 12
  },
  "properties": {
    "Fund/Managers/FundManagerName": {
      "key": "Fund/Managers/FundManagerName",
      "value": {
        "labelValue": "John Doe"
      },
      "effectiveFrom": "2024-01-03T00:00:00.0000000+00:00",
      "effectiveUntil": "9999-12-31T23:59:59.9999999+00:00"
    }
  },
  ...
}