Properties

Fundpress 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 that we can quickly react and mould to your data requirements as they change.

However, without any checks and balances in place, this freefrom approach could become unmanageable very quickly. In order to ensure data cleanliness, the services governing these tables perform checks on the JSON before it is inserted. These rules can be defined using properties in fundpress.

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

Fund And Share Class Properties

Fund and share class properties are typically things like Inception Date, Asset Class, and Base Currency. They are singular in nature and tend to not change very much. They can be any datatype. Properties are inserted at the following end point.

Parameter Value
End Point https://api.fundpress.io/config/addProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Body
  {
    "code": "wkn",
    "entityType": "CLSS",
    "dataType": "STRG",
    "validationRule": "NONE",
    "label": "wkn",
    "formatCode": "bana"
    "description": "wkn",
    "group": "Core"
  }
Parameter Value
code unique identifier for the property. Lower, snake case.
entityType FUND, CLSS or ACCT
dataType STRG,DCML,DTIM,BOOL,ITGR,DATE
validationRule VALUES will check against allowedValues and prevent insertion if not in the given list
allowedValues An array of strings.
label A human friendly label
formatCode The name of an existing formatCode in the system. Must apply to the given dataType
description A human friendly label
group A string label allowing you to group similar properties together
cardinality Can be N for many values or 1. Using N allows arrays of values to be passed of the given dataType.

Allocation Properties

Allocations are used to track things like top ten holdings, sector allocations, and geographic breakdowns. Properties are used to define what the appropriate groupings are for the funds in question. Given their nature, allocations follow a simple key/value model. They can also be used to extend the data model for more complex breakdowns. For instance, if there is a need to track more than a simple key/value pair (US, 10%). This is useful when considering credit funds, who may want to track credit quality or duration next to positions, as well as simple weights.

To define allocation properties use the end point below.

Parameter Value
End Point https://api.fundpress.io/config/addAllocProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Body
  {
    "code": "top_holdings",
    "entityType": "CLSS",
    "label": "Top Holdings of the class",
    "description": "Top holdings of the fund",
    "formatCode": "number",
    "group": "Core",
    "extended": [
        {
            "label": "number_of_shares",
            "dataType": "DCML",
            "formatCode": "number_0dp"
        }
    ]
  }
Parameter Value
code Unique identifier for the allocations property. Lower, snake case.
entityType FUND, CLSS or ACCT - which does this allocation property apply to
label A human friendly label
description A human friendly label
formatCode The name of an existing formatCode in the system. Applies to each value of the values array.
group A string label allowing you to group similar properties together
extended Each extended entry describes a new key that can be added to a value object in the allocation itself
extended.label The name of the key to be allowed on each value object
extended.dataType STRG,DCML,DTIM,BOOL,ITGR,DATE
extended.formatCode The name of an existing formatCode in the system. Applies to each value of the values array.

In the above example, the existence of this allocation property will allow you to create a new allocation of code top_ten_holdings with a series of values in it. Each of those could also have an additioanl number_of_shares data point associcated with them. Note that the below message would be delivered to the entity loader service when inserting data, and is shown here for illustration purposes.

{
    "entityType": "CLSS",
    "clientCode": "GB123123123",
    "code": "top_holdings",
    "ccy": "N/A",
    "values": [
        {
            "label": "Lyxor MSCI",
            "value": 2,
            "number_of_shares": 1233
        },
        {
            "label": "Formosa Taffeta",
            "value": 2.06
        }
    ]
}

Statistic Properties

Statistics are used to track things like AUM, performance, and risk. Properties are used to define what the appropriate groupings are for the funds in question. Given their nature, statistics follow a simple key/value model. They can also be used to extend the data model for more complex breakdowns. For instance, if there is a need to track more than a simple key/value pair. This is the same model as with allocations, so we will not demonstrate in as much detail - please see allocations for that.

To define statistics properties use the end point below.

Parameter Value
End Point https://api.fundpress.io/config/addStatisticProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Body
{
    "code": "risk_stats",
    "entityType": "CLSS",
    "label": "Risk statistics",
    "description": "Risk Statistics",
    "formatCode": "number",
    "group": "Core",
    "extended": [

    ]
}
Parameter Value
code Unique identifier for the statistics property. Lower, snake case.
entityType FUND, CLSS or ACCT - which does this statistic property apply to
label A human friendly label
description A human friendly label
formatCode The name of an existing formatCode in the system. Applies to each value of the values array.
group A string label allowing you to group similar properties together
extended Each extended entry describes a new key that can be added to a value object in the statistic itself
extended.label The name of the key to be allowed on each value object
extended.dataType STRG,DCML,DTIM,BOOL,ITGR,DATE
extended.formatCode The name of an existing formatCode in the system. Applies to each value of the values array.

Timeseries Properties

Timeseries are used to track things like price and performance over time. Properties are used to define what the appropriate groupings are for the funds in question. Given their nature, timeseries follow a simple date/value model. They can also be used to extend the data model for more complex breakdowns. For instance, if there is a need to track more than single value against each date.

To define statistics properties use the end point below.

Parameter Value
End Point https://api.fundpress.io/config/addTSProperty
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Body
{
    "code": "price",
    "entityType": "CLSS",
    "label": "Price History",
    "description": "Price Histories",
    "labelFormatCode": "date",
    "valueFormatCode": "number",
    "group": "Core",
    "extended": [

    ]
}
Parameter Value
code Unique identifier for the timeseries property. Lower, snake case.
entityType FUND, CLSS or ACCT - which does this timeseries property apply to
label A human friendly label
description A human friendly label
valueFormatCode The name of an existing formatCode in the system. Applies to each value of the values array.
labelFormatCode The name of an existing formatCode in the system. Applies to each date of the values array.
group A string label allowing you to group similar properties together
extended Each extended entry describes a new key that can be added to a value object in the timeseries itself
extended.label The name of the extra key to be allowed on each value object
extended.dataType STRG,DCML,DTIM,BOOL,ITGR,DATE
extended.formatCode The name of an existing formatCode in the system. Applies to each value of the values array.

Listing Properties

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

Parameter Value
Properties https://api.fundpress.io/config/listProperties
Allocations https://api.fundpress.io/config/listAllocProperties
Statistics https://api.fundpress.io/config/listStatisticProperties
Timeseries https://api.fundpress.io/config/listTSProperties
Document MetaData https://api.fundpress.io/config/listDocMetaTypes
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
{
    "entityType": "FUND"
}

As properties can be applied differently to funds and share classes, switch the entityType from FUND, CLSS or ACCT depending on what you want to see.