Properties

The Kurtosys App employs a highly flexible data model. It contains regular database tables with very few columns, instead using a singular JSON column that can be expanded on a client-by-client basis. This means data requirements can be amended efficiently. A freeform approach needs to have strict data rules enforced. The services governing these tables perform checks on the JSON before it is inserted. These rules can be defined using properties in Data.

Properties are used on different data types in different ways, but at a high level they all describe an identifier for the property (a code), a data type (used to validate the type of the incoming data and reject any in non-conformance), as well as formats (so that data leaving our services can be correctly pre-formatted).

Entity Level Properties

Entity level properties are typically things like Inception Date, Asset Class or Base Currency and exist on an entity such as a Fund (FUND), Shareclass (CLSS), Benchmark (BMRK) or Account (ACCT). They are singular in nature and tend to not change very much. They can be any datatype.

Entity Level Property Attributes

Attribute Required Description
code True A unique identifier for the property. Lowercase without spaces, a maximum of 32 characters and no special characters except _
entityType True FUND, CLSS, BMRK or ACCT
dataType True STRG,DCML,DTIM,BOOL,ITGR,DATE
label True A label for the property
description True A description for the property
validationRule False VALUES or NONE. The VALUES option will prevent insertion data not found in the allowedValues list
allowedValues False An array of strings used for validate if validationRule is set to VALUES.
formatCode False The name of an existing formatCode in the system. Applies to each value of the values array. (refer to Formats)
group True A string label allowing you to group similar properties together
subgroup False A string label allowing you to group similar properties together within a group.
disclaimerTypes False
includeIn False
cardinality True Can be N for many values or 1. Using N allows arrays of values to be passed of the given dataType.

Upserting Entity Level Properties

Parameter Value
End Point https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Returns The new/updated Property

Request

{
    "code": "inception_date",
    "entityType": "CLSS",
    "dataType": "DATE",
    "validationRule": "NONE",
    "label": "Inception Date",
    "formatCode": "date",
    "description": "Shareclass Inception Date",
    "group": "core",
    "cardinality": "1"
}

Response

{
    "propertyId": 1,
    "code": "inception_date",
    "entityType": "CLSS",
    "dataType": "DATE",
    "validationRule": "NONE",
    "label": "Inception Date",
    "formatCode": "date",
    "description": "Shareclass Inception Date",
    "group": "core",
    "cardinality": "1"
}

Allocations

Allocations are used to track things like Top Ten Holdings, Sector Allocations, and Geographic Breakdowns of assets belonging to an entity. This data can be grouped under 2 keys - a unique identifier (code) and an optional currency (ccy). Each record has a label and value as default allocation properties. However, this can be extended for more complex breakdowns with extended properties.

Allocation Properties

Properties are used to define an appropriate grouping for Allocation records. Given their nature, Allocations have a values array that follow a label/value model. The label being a string and the value being either a number or null. Allocation Properties can be given a formatCode (refer to Formats) to apply a format to each record's value.

Allocation Property Attributes

Attribute Required Description
code True Unique identifier for the allocation set. Lowercase without spaces, a maximum of 32 characters and no special characters except _
entityType True FUND, CLSS, BMRK or ACCT - the entity this allocation applies to
label True A label for the allocation set
description True A description for the allocation set
formatCode False The name of an existing formatCode in the system. Applies to each value of the values array. (refer to Formats)
group True A string label allowing you to group similar properties together. (default is 'core')
subgroup False A string label allowing you to group similar properties together within a group
extended False Each extended entry describes a key that can be added to a value object in the allocation set. (refer to Extended Properties)
includeIn false Allows configuration of features that the meta can opt-in to
includeIn.translations false Opt-in flag for translations of this extended property. When set to true, the extended string properties may be translated when included in entity and entity facet searches. Defaults to false

Upserting an Allocation Property

Parameter Value
End Point https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addAllocProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Returns The new/updated Allocation Property

Request

{
    "code": "top_ten_holdings",
    "entityType": "CLSS",
    "label": "Top 10 Holdings of the share class",
    "description": "Top 10 holdings of the share class",
    "formatCode": "number",
    "group": "core",
    "extended": [
        {
            "label": "Number of Shares",
            "dataType": "DCML",
            "formatCode": "number_0dp"
        },
        {
            "label": "Acquisition Date",
            "dataType": "DATE"
        }
    ]
}

Response

{
    "allocationPropertyId": 12,
    "code": "top_ten_holdings",
    "entityType": "CLSS",
    "label": "Top 10 Holdings of the share class",
    "description": "Top 10 holdings of the share class",
    "formatCode": "number",
    "group": "core",
    "extended": [
        {
            "label": "Number of Shares",
            "dataType": "DCML",
            "formatCode": "number_0dp"
        },
        {
            "label": "Acquisition Date",
            "dataType": "DATE"
        }
    ]
}

Statistics

Statistics are used to track things like AUM, Performance or Risk belonging to an entity.This data can be grouped under 2 keys - a unique identifier (code) and an optional currency (ccy). Each record has a label and value as default statistic properties. However, this can be extended for more complex breakdowns with extended properties.

Statistic Properties

Properties are used to define an appropriate grouping for Statistic records. Given their nature, Statistics have a values array that follow a label/value model. The label being a string and the value being either a number or null. Statistic Properties can be given a formatCode (refer to Formats) to apply a format to each record's value.

Statistics Property Attributes

Attribute Required Description
code True Unique identifier for the statistic set. Lowercase without spaces, a maximum of 32 characters and no special characters except _
entityType True FUND, CLSS, BMRK or ACCT - the entity this statistic applies to
label True A label for the statistic set.
description True A description for the statistic set
formatCode False The name of an existing formatCode in the system. Applies to each value of the values array. (refer to Formats)
group True A string label allowing you to group similar properties together. (default is 'core')
subgroup False A string label allowing you to group similar properties together within a group
extended False Each extended entry describes a key that can be added to a value object in the statistic set. (refer to Extended Properties)
includeIn false Allows configuration of features that the meta can opt-in to
includeIn.translations false Opt-in flag for translations of this extended property. When set to true, the extended string properties may be translated when included in entity and entity facet searches. Defaults to false

Upserting a Statistic Property

Parameter Value
End Point https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addStatisticProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Returns The new/updated Statistic Property

Request

{
    "code": "calendar_year",
    "entityType": "CLSS",
    "label": "Calendar Year Performance",
    "description": "Calendar Year Performance",
    "group": "core"
}

Response

{
    "statisticPropertyId": 1,
    "code": "calendar_year",
    "entityType": "CLSS",
    "label": "Calendar Year Performance",
    "description": "Calendar Year Performance",
    "group": "core",
    "extended": [],
    "includeIn": {}
}

Timeseries

Timeseries are used to track things like Price History or Performance Over Time of assets belonging to an entity.This data can be grouped under 4 keys - a unique identifier (code), an optional currency (ccy), a periodicity and a classification. Each record has a date and value as default timeseries properties. However, this can be extended for more complex breakdowns with extended properties.

Timeseries Properties

Properties are used to define an appropriate grouping for Timeseries records. Given their nature, Timeseries have a values array that follows a date/value model. The date being a stringified date and the value being either a number or null. Timeseries Properties can be given a valueFormatCode to apply a format to each record's value and a labelValueCode to apply a format to each record's date.

Timeseries Property Attributes

Attribute Required Description
code True Unique identifier for the timeseries set. Lowercase without spaces, a maximum of 32 characters and no special characters except _
entityType True FUND, CLSS, BMRK or ACCT - the entity this timeseries applies to
label True A label for the timeseries set
description True A description for the timeseries set
labelFormatCode False The name of an existing formatCode in the system. Applies to each date of the values array. (refer to Formats)
valueFormatCode False The name of an existing formatCode in the system. Applies to each value of the values array. (refer to Formats)
group True A string label allowing you to group similar properties together (default is 'core')
subgroup False A string label allowing you to group similar properties together within a group
extended False Each extended entry describes a key that can be added to a value object in the timeseries set (refer to Extended Properties)
includeIn false Allows configuration of features that the meta can opt-in to
includeIn.translations false Opt-in flag for translations of this extended property. When set to true, the extended string properties may be translated when included in entity and entity facet searches. Defaults to false

Upserting a Timeseries Property

Parameter Value
End Point https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addTSProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Returns The new/updated Timeseries Property

Request

{
    "code": "ftse_price_history",
    "entityType": "BMRK",
    "label": "FTSE 100 Price History",
    "description": "FTSE 100 Pricing Histories",
    "labelFormatCode": "date_YYYY-MM",
    "valueFormatCode": "number",
    "group": "core"
}

Response

{
    "timeseriesPropertyId": 1,
    "code": "ftse_price_history",
    "entityType": "BMRK",
    "label": "FTSE 100 Price History",
    "description": "FTSE 100 Pricing Histories",
    "labelFormatCode": "date_YYYY-MM",
    "valueFormatCode": "number",
    "group": "core",
    "extended": [],
    "includeIn": {}
}

Historical Datasets

Historical Datasets allow for the storage of data such as Monthly Top Ten Holdings, Dated Sector Allocations or Annual Geographic Breakdowns of assets belonging to an entity. This data can be grouped under 3 keys - a unique identifier (code), a date (asAtDate) and an optional currency (ccy). Each record has a label and value as default historical dataset properties. However, this can be extended for more complex breakdowns with extended historical dataset properties.

Historical Dataset Properties

Properties are used to define an appropriate grouping for Historical Dataset records. Given their nature, Historical Datasets have a values array that follow a label/value model. The label being a string and the value being either a number or null. Historical Data Properties can be given a formatCode to apply a format to each record's value.

Historical Dataset Property Attributes

Attribute Required Description
code True Unique identifier for the historical dataset property. Lowercase without spaces, a maximum of 32 characters and no special characters except _
entityType True FUND, CLSS, BMRK or ACCT - which entity does this dataset apply to
label True A label for the dataset
description True A description for the dataset
formatCode False The name of an existing formatCode in the system. Applies to each value of the values array (refer to Formats)
group True A string label allowing you to group similar properties together (default is 'core')
subgroup False A string label allowing you to group similar properties together within a group
extended False Each extended entry describes a new key that can be added to a value object in the historical dataset
includeIn false Allows configuration of features that the meta can opt-in to
includeIn.translations false Opt-in flag for translations of this extended property. When set to true, the extended string properties may be translated when included in entity and entity facet searches. Defaults to false

Upserting a Historical Dataset Property

Parameter Value
End Point https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addHistoricalDatasetProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Response Historical Dataset Property

Request

{
    "code": "monthly_top_ten_holdings",
    "entityType": "FUND",
    "label": "Monthly Top 10 Holdings",
    "description": "Monthly Top 10 holdings of the fund",
    "group": "core"
}

Response

{
    "historicalDatasetPropertyId": 1,
    "code": "monthly_top_ten_holdings",
    "entityType": "FUND",
    "label": "Monthly Top 10 Holdings",
    "description": "Monthly Top 10 holdings of the fund",
    "group": "core"
}

Extended Properties

Extended properties allows for more complex breakdowns of data to be stored.

E.g. There may be a need to track more than just the label and value pair of a record ("UK", 10.432). This is useful when considering credit funds, for example, to track the credit quality or duration next to positions.

Extended Property Attributes

Attribute Required Description
label True The name of the key to be allowed on each value object
dataType True STRG, DCML, DTIM, BOOL, ITGR or DATE
formatCode False The name of an existing formatCode in the system. Applies to each value of the values array (refer to Formats)

Upserting Extended Properties

Extended properties can be added or updated when inserting or updating a data set's property by including it in the extended section of the property upsert request. A formatCode can be configured to apply a pre-defined format to each value of the extended property's value array. Translations for extended properties can be controlled via the includeIn.translations value.

Request

{
    "code": "monthly_top_ten_holdings",
    "entityType": "FUND",
    "label": "Monthly Top 10 Holdings",
    "description": "Monthly Top 10 holdings of the fund",
    "group": "core",
    "extended": [
        {
            "label": "number_of_shares",
            "dataType": "DCML"
        }
    ],
    "includeIn": {
        "translations": false
    }
}

Response

{
    "historicalDatasetPropertyId": 1,
    "code": "monthly_top_ten_holdings",
    "entityType": "FUND",
    "label": "Monthly Top 10 Holdings",
    "description": "Monthly Top 10 holdings of the fund",
    "group": "core",
    "extended": [
        {
            "label": "number_of_shares",
            "dataType": "DCML"
        }
    ],
    "includeIn": {
        "translations": false
    }
}

Transactions

Transactions are used to record buy, sell or transfer financial agreements related to an entity. A transaction is identified by a unique transactionCode, classified into a property with a unique code used to identify the property group and dated with a timestamp attributed by the dateTime key. As with other property types, transaction records can be assigned an optional currency with the ccy attribute. Due to the nature of a transaction, records are not updatable but should rather be deleted and replaced with the corrected record, however transaction properties are still updatable.

Transaction Properties

Properties are used to define an appropriate grouping for transaction records. Given their nature, transactions have a values object that follow a label/value model, this is different to other property types as it only allows for 1 record and not an array of records. The label being a string and the value being either a number or null. Transaction Properties can be given a formatCode (refer to Formats) to apply a format to the record's value

Transaction Property Attributes

Attribute Required Description
code True Unique identifier for the transaction set. Lowercase without spaces, a maximum of 32 characters and no special characters except _
entityType True FUND, CLSS, BMRK or ACCT - the entity this allocation applies to
label True A label for the transaction set
description True A description for the transaction set
formatCode False The name of an existing formatCode in the system. Applies to the value in the values object. (refer to Formats)
group True A string label allowing you to group similar properties together. (default is 'core')
subgroup False A string label allowing you to group similar properties together within a group
extended False Each extended entry describes a key that can be added to a value object in the transaction set. (refer to Extended Properties)
includeIn false Allows configuration of features that the meta can opt-in to
includeIn.translations false Opt-in flag for translations of this extended property. When set to true, this extended string properties may be translated when included in entity and entity facet searches. Defaults to false

Upserting a Transaction Property

Parameter Value
End Point https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addTransactionProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Returns The new/updated Transaction Property

Request

  {
    "code": "gold_transactions",
    "entityType": "CLSS",
    "label": "Gold Transactions",
    "description": "Transactions for the gold instrument",
    "formatCode": "2_dcml",
    "group": "core",
    "extended": [
        {
            "label": "Transaction Type",
            "dataType": "STRG",
            "acceptedValues": ["BUY", "SELL", "TRANSFER"]
        },
        {
            "label": "Quantity",
            "dataType": "DCML",
            "formatCode": "2_dcml"
        },
        {
            "label": "Total",
            "dataType": "DCML",
            "formatCode": "2_dcml"
        },
        ...
    ],
    "includeIn": {
        "translations": true
    }
  }

Response

  {
    "transactionPropertyId": 12,
    "code": "gold_transactions",
    "entityType": "CLSS",
    "label": "Gold Transactions",
    "description": "Transactions for the gold instrument",
    "formatCode": "2_dcml",
    "group": "core",
    "extended": [
        {
            "label": "Transaction Type",
            "dataType": "STRG",
            "acceptedValues": ["BUY", "SELL", "TRANSFER"]
        },
        {
            "label": "Quantity",
            "dataType": "DCML",
            "formatCode": "2_dcml"
        },
        {
            "label": "Total",
            "dataType": "DCML",
            "formatCode": "2_dcml"
        },
        ...
    ],
    "includeIn": {
        "translations": true
    }
  }

Listing Properties

All properties can be listed for a particular client account, by hitting the following endpoints with a generic JSON message.

Parameter Value
Properties https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listProperties
Allocations https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listAllocProperties
Statistics https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listStatisticProperties
Timeseries https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listTSProperties
Historical Datasets https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listHistoricalDatasetProperties
Transactions https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listTransactionProperties
Document MetaData https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listDocMetaTypes
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST

Generic Request Attributes

Attribute Required Description
entityType True The type of fund or share class: FUND, CLSS, BMRK or ACCT
sort False Sort directive for the result set, not applicable to Properties or Document MetaData
sort.key True if sort is specified Property to sort by: code, label, description, formatCode, group or subgroup
sort.direction False Sort direction: ASC or DESC

Request

{
    "entityType": "FUND"
}

Properties can be applied differently to funds and share classes, select the entityType from FUND, CLSS, BMRK or ACCT according to what you want to see.

Sorting

{
    "entityType": "FUND",
    "sort": {
        "key": "label",
        "direction": "ASC"
    }
}