Bring Your Own Data Upload (v3)

How to use Composites in Data Adapter

The composites service is part of the processing pipeline of Data Adapter. It allows you to send a simple CSV of holdings, which will be expanded and enriched based on data coming from your chosen provider, any uploaded constituent weightings (BYOD), and from our ETF library (if enabled).

1. Bring Your Own Data (BYOD)

If you plan on supplying us with constituent data you hold on site, for example, custom baskets or Index data used elsewhere within the business, you should supply this using the endpoint:

Using the endpoint POST https://{environment_name}-api.fundapps.co/v3/data/composites/upload

This endpoint uploads the composites file that will be used in the positions enrichment.

The composites parameter must be the file that you wish to upload. It is required to be a .csv file or a .zip of a csv file.

It is important to note that Weighting or WeightingQuantity must be defined in each line.

  • Weighting can have values ranging from -1 to 1, but not zero.
  • WeightingQuantity must be greater than zero.

Example Composites CSV File

CompositeIdCompositeIdTypeComponentIdComponentIdTypeWeightingWeightingQuantity
.KS100EWIDataProviderId005930.KSDataProviderId0.2
.KS100EWIDataProviderIdKR7005930003Isin0.31.3
46141D203CusipUS912796ZP71Isin2
BNVTS02SedolUS912796ZP71Isin0.086460.0825

Example Upload Script

# Replace <environment_name> with your environment name

# Replace <ZipFileLocation> with the location of your zip file (i.e. C:/BYOD.zip)

# Replace <Token> with your credential token (i.e. Basic xxxx) or you can swap it 
# to how you have authentication set up in your other scripts

import requests

url = "https://<environment_name>-api.fundapps.co/v3/data/composites/upload"

payload = {}
files=[
  ('composites',('composites.zip',open('<ZipFileLocation>','rb'),'application/zip'))
]
headers = {
  'Authorization': 'Basic <Credentials>'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

BYOD File Validation

  • You can specify additional fields within this CSV, they will be ignored for processing
  • WeightingQuantity should be provided as a positive value greater than 0
  • Weighting and/or WeightingQuantity must be set for each row
  • If the file passes validation you should see a return status of 201 with a message:

Example Upload Composites Response

{
    "message": "Upload Successful"
}

2. ETF Library

The ETF Library provides composition data used by the enrichment service. The ETF library is populated with ETFs that track major national indices (Think FTSE, Hang Seng, S&P 500, CAC, Dax, et al) and popular sectoral indices (Think STOXX EUROPE Banks, Healthcare, etc; Dow Jones Industrial Average, MSCI World).

Should you be interested in this service, please contact your Account Manager, as this requires an extra subscription.

We receive updated data from EDI daily, and currently, we will always use the most up-to-date data we have.

Composites in the ETF Library will match only on ISINs. You can match against the ETF ISIN, Index ISIN, or any proxied Index Variant ISINs.