Logo

Composite Enrichment

Bring Your Own Data (BYOD) guide

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 can upload this via the BYOD composites endpoint. BYOD data is checked first during enrichment and takes priority over the FundApps ETF library. Importantly, any data supplied via BYOD does not count towards your ETF library usage allowance.

For API details (endpoint, authentication, file validation, and migration from v2), see: BYOD guide – FundApps TechDocs

CSV format

The BYOD composites file is a CSV using a comma , as a separator. All data in this file is case-sensitive.

CompositeId CompositeIdType ComponentId ComponentIdType Weighting WeightingQuantity
.KS100EWI DataProviderId 005930.KS DataProviderId 0.2 1000000
.KS100EWI DataProviderId KR7005930003 Isin 0.3
KOSPI100 Index DataProviderId 005930 KS Equity DataProviderId 4001
BBG000P5WLC5 Figi DK0062498333 Isin 0.1

Examples — Data Adapter CSV positions files

Market indices

The client will need to reference the index identifier (either ISIN or BBG yellowkey/ Refinitiv RIC) in the ComponentISIN or ComponentDataProviderId columns of the relevant derivative asset class held. For example, for an index option, you reference the index's identifier in the Component columns of the option itself.

During the enrichment process, FundApps will use the identifier to call data from the market vendor for that index (for attributes such as Price and Name), and match the constituents from the client's BYOD file.

Positions File

PortfolioId AssetId AssetName ISIN DataProviderId ComponentISIN ComponentDataProviderId Quantity MarketValue SFTType Price InstrumentCurrency AssetClass ULAssetClass IsCashSettled Market MarketsListedIn MaturityDate Delta ContractSize CallOrPut
TEST OTC SPY Option OTC SPY Option US78378X1072 100 2000 Normal 20 USD Option Index TRUE XXXX XXXX 2024-12-01 1 1 Call
TEST AAPL_EQ Apple Equity AAPL US Equity 10 500 Normal 50 USD
TEST Volkswagen_EQ Volkswagen Equity DE0007664039 20 600 Normal 30 USD

BYOD Composites File

CompositeId CompositeIdType ComponentId ComponentIdType Weighting
US78378X1072 ISIN AAPL US Equity DataProviderId 0.3
US78378X1072 ISIN DE0007664039 ISIN 0.7

The derivative held is the same as any other in the file already (so it must meet the standard spec for listed or OTC derivatives). The above examples were truncated here for illustrative purposes.

Proprietary baskets (created by banks, third parties)

The client will need to reference the index identifier (BBG yellowkey/ Refinitiv RIC) in the ComponentDataProviderId column of the relevant derivative asset class held. For example, for an option on a basket, you reference the basket's identifier in the ComponentDataProviderId column of the option itself.

During the enrichment process, FundApps will use the identifier to call data from the market vendor for that index (for attributes such as Price and Name), and match the constituents from the client's BYOD file.

Positions File

PortfolioId AssetId AssetName ISIN DataProviderId ComponentDataProviderId ComponentISIN Quantity MarketValue SFTType Price InstrumentCurrency AssetClass ULAssetClass IsCashSettled Market MarketsListedIn MaturityDate Delta ContractSize CallOrPut
TEST OTC Option Option on GS basket GSABCDEF Index 100 2000 Normal 20 USD Option Index TRUE XXXX XXXX 2024-12-01 1 1 Call
TEST AAPL_EQ Apple Equity AAPL US Equity 10 500 Normal 50 USD
TEST Volkswagen_EQ Volkswagen Equity DE0007664039 20 600 Normal 30 USD

BYOD Composites File

CompositeId CompositeIdType ComponentId ComponentIdType Weighting
GSABCDEF Index DataProviderId AAPL US Equity DataProviderId 0.3
GSABCDEF Index DataProviderId DE0007664039 ISIN 0.7

The derivative held is the same as any other in the file already (so it must meet the standard spec for listed or OTC derivatives). The above examples were truncated here for illustrative purposes.

Custom baskets

These are the most complex instruments as there is no standard identifier that can be used to identify and link instruments between the two files. Instead, for these, FundApps will create a CompositeId by coalescing the AssetId and ULAssetClass columns of your positions file. Generally, the ULAssetClass will be "StructuredProduct" rather than "Index," so you may be able to hard-code these. This will then have the CompositeIdType as "InstrumentId"

The below example would generate a multi-leveled instrument with the following structure: Swap > Structured Product > Apple Equity (.3), Volkswagen Equity (.7)

Positions Composites file

PortfolioId AssetId AssetName ISIN DataProviderId ComponentDataProviderId ComponentISIN ULAssetClass Price ULPrice InstrumentCurrency ULInstrumentCurrency IsCashSettled Market MarketsListedIN MaturityDate
TEST OTC_SP2 Swap on CP StructuredProduct 15 10 USD USD TRUE XXXX XXXX 2024-12-01
TEST AAPL_EQ Apple Equity AAPL US Equity 50 USD
TEST Volkswagen_EQ Volkswagen Equity DE0007664039 30 USD

BYOD Composites file

CompositeId CompositeIdType ComponentId ComponentIdType Weighting
OTC_SP2_StructuredProduct InstrumentId AAPL US Equity DataProviderId 0.3
OTC_SP2_StructuredProduct InstrumentId DE0007664039 ISIN 0.7

Where, CompositeId = AssetId_ULAssetClass from the positions file. Note, you will also need to provice the currency and price of the index via ULPrice and ULInstrumentCurrency

Examples — XML positions files

Market indices

The client will need to reference an index identifier or InstrumentId that they are using for the Index instrument in their positions file (i.e., not being used for the parent derivative). During the enrichment process, FundApps will use the data points sent for that index such as InstrumentName and Price, and integrate the underlying constituents.

Positions file

<Instruments>
<Option InstrumentId="US78378X1072Option" InstrumentName="US Index Option" CallOrPut="Call" IsCashSettled="true" Market="XHEL" ContractSize="100" MaturityDate="2015-12-15" Delta="0.8">
<Component InstrumentId="USIndex"/>
</Option>
<Index InstrumentId="USIndex" ISIN="US78378X1072" InstrumentName="US Index" Price="3120.00" InstrumentCurrency="USD">
</Instruments>
...
<Portfolios>
<Portfolio PortfolioId="11">
<Asset AssetId="US78378X1072Option" AssetName="US78378X1072Option" InstrumentId="US78378X1072Option" Quantity="30000"/>
</Portfolio>
</Portfolios>

Note, the above XML has been abbreviated for brevity so there may be specific fields missing that are unrelated to this aspect of the file build.

BYOD Composites File

CompositeId CompositeIdType ComponentId ComponentIdType Weighting
US78378X1072 ISIN AAPL US Equity InstrumentId 0.3
US78378X1072 ISIN DE0007664039 ISIN 0.7

Proprietary baskets (created by banks, third parties)

While the matching process is the same, we generally expect clients to be using the InstrumentId as the CompositeIdType, as there is not likely to be a public asset identifier for such instruments. Many clients will use the basket identifier created by the vendor, though any value can be used so long as it's consistent across both files.

Positions Composites file

<Instruments>
<Option InstrumentId="Basket Option" InstrumentName="Basket Option" CallOrPut="Call" IsCashSettled="true" Market="XHEL" ContractSize="100" MaturityDate="2015-12-15" Delta="0.8">
<Component InstrumentId="GSABCDEF Index"/>
</Option>
<StructuredProduct InstrumentId="GSABCDEF Index" InstrumentName="basket" Price="3120.00" InstrumentCurrency="USD">
</Instruments>
...
<Portfolios>
<Portfolio PortfolioId="11">
<Asset AssetId="GSIO" AssetName="GS Index Option" InstrumentId="Basket Option" Quantity="30000"/>
</Portfolio>
</Portfolios>

Note, the above XML has been abbreviated for brevity so there may be specific fields missing that are unrelated to this aspect of the file build.

BYOD Composites File

CompositeId CompositeIdType ComponentId ComponentIdType Weighting
GSABCDEF Index InstrumentId AAPL US Equity InstrumentId 0.3
GSABCDEF Index InstrumentId DE0007664039 ISIN 0.7

Custom baskets

This structure is identical to that of the prop baskets above. However, in lieu of having a specific identifier from the vendor as their InstrumentId, clients will generally have an internal value.

Positions file

<Instruments>
<Option InstrumentId="FANCYBASKETOption" InstrumentName="FANCYBASKET Option" CallOrPut="Call" IsCashSettled="true" Market="XHEL" ContractSize="100" MaturityDate="2015-12-15" Delta="0.8">
<Component InstrumentId="FANCYBASKET"/>
</Option>
<Index InstrumentId="FANCYBASKET" InstrumentName="FANCYBASKET Index" Price="3120.00" InstrumentCurrency="USD">
</Instruments>
...
<Portfolios>
<Portfolio PortfolioId="11">
<Asset AssetId="FANCYBASKETOption" AssetName="Vodafone Equity" InstrumentId="FANCYBASKETOption" Quantity="30000"/>
</Portfolio>
</Portfolios>

Note, the above XML has been abbreviated for brevity so there may be specific fields missing that are unrelated to this aspect of the file build.

BYOD Composites File

CompositeId CompositeIdType ComponentId ComponentIdType Weighting
FANCYBASKET InstrumentId AAPL US Equity InstrumentId 0.3
FANCYBASKET InstrumentId DE0007664039 ISIN 0.7