Custom Benchmark Inbound Interface

Overview

Custom Benchmark involves custom index logic which is dependent on certain component values stored on underlying (assigned) constituent entities. These values and assignments are stored in the RULESDBO.CUSTOM_INDEX_ATTRIBUTES table. The table keeps track of any changes to each custom entity by the EFFECTIVE_DATE field. 

In addition to the CUSTOM_INDEX_ATTRIBUTES table, there is a second table called CUSTOM_INDEX_ATTR_DETAIL that stores additional field values needed for certain custom index types (customBenchmark/customIndexType) (the constrained and exclusion type custom benchmarks). 

Please note, that depending on the customBenchmark/customIndexType element value, the incoming message goes thru different steps of resolution:

Benchmark Type

Corresponding Custom Index Type Value

Resolution

Entity

Entity Detail

Security Constrained

Security Exclusion

Floating Weight Blended

FLTB

+

+

 

 

Blended

BLND

+

+

 

 

Linked

LINK

+

+

 

 

Currency Conversion

CONV

+

+

 

 

Hedged

HEDG

+

+

 

 

Constrained

CNST

+

+

+

 

Exclusion

EXCL

+

+

 

+

Entity Resolution Logic

Entity Resolution is specific logic resolving Entity ID for custom index records:

1. If both values are set up in the record:
     a. A lookup in the Entity_xreference table of the Rules database is performed to find matching entity cross reference values:
          - customBenchmark/entityXrefs/entityXref/xrefAccountId/Xref_Account_ID
          - customBenchmark/entityXrefs/entityXref/xrefAccountId/Xref_account_ID_Type

     b. If a match is NOT Found, the record is failed with the following error message: “EntityID is not resolved by XREFs”

     c. If a matching value exists, the interface will use the value from the Entity_id field and processing will move on to the entity detail resolution.

2. In case there were no ENTITY XREF and ENTITY XREF TYPE specified in the record:
     a. It checks for customBenchmark/entityId (CUSTOM INDEX ID) element and if there is no value for it on the record, the logic fails it with “EntityID is not resolved by XREFs” message.

  1. If both values are present in the record, a lookup is performed on the Entity_xreference table in RULESDBO to match the entity cross reference values:
    customBenchmark/entityXrefs/entityXref/xrefAccountId = Xref_Account_ID
    customBenchmark/entityXrefs/entityXref/xrefAccountId = Xref_account_ID_Type

    1. If NO match is found, the record fails with an error message: “EntityID is not resolved by XREFs”

    2. If there is a match, the interface will use its Entity_id value. The logic will move on to entity detail resolution logic.

  2. If there is no ENTITY XREF or ENTITY XREF TYPE in the record:

    1. In case no customBenchmark/entityId (CUSTOM INDEX ID) value is on the record, the logic fails with the error message: “EntityID is not resolved by XREFs”.

    2. In case there is a customBenchmark/entityId (CUSTOM INDEX ID) set on the record, the interface performs a lookup on the Entity table in the RULESDBO to find a match with the value in the CUSTOM INDEX ID tag

customBenchmark/entityId = entity_id.
If a match is found, the interface considers custom index record resolved and the logic will move to entity detail resolution.

Entity Detail Resolution

This specific logic resolves Entity Detail for custom index records:

Resolves underlying/constituent entities associated to Custom Index Entity. If both values exist on the record, the logic will be the following:

  1. Performs a lookup on the Entity_xreference table in the Rules Database and match the entity cross reference values:
    customBenchmark/entityDetail/entityXrefs/entityXref/xrefAccountId = Xref_Account_ID
    customBenchmark/entityDetail/entityXrefs/entityXref/xrefAccountIdType = Xref_account_ID_Type

    1. If there is NO match found, it fails the record with the error message: “EntityID is not resolved by XREFs”

    2. If there is a match, the interface has resolved the Detail index record.

  2. If there is no ENTITY DETAIL XREF and ENTITY DETAIL XREF TYPE on the record:

    1. In case there is no customBenchmark/entityDetail/entityId node (ENTITY DETAIL ID) on the record, it will fail with the error message: “EntityID is not resolved by XREFs”.

    2. In case there is a customBenchmark/entityDetail/entityId element (ENTITY DETAIL ID) with a value set, it performs a lookup on the Entity table in the rules database to find a match for the value in the ENTITY DETAIL ID tag

customBenchmark/entityDetail/entityId = entity_id.
If a match is found, the interface considers the Entity Detail record resolved.

Security Constrained Resolution

If the incoming value in the customBenchmark/customIndexType (CUSTOM INDEX TYPE) tag = ‘CNST’ and this value exists in the SECURITY CONSTRAINED tag, then the custom Index has logic to constrain certain security returns.

SECURITY CONSTRAINED tag, the /customBenchmark/constrainAsset block in the incoming file, as example:

<constrainAsset> <primaryAssetId>RJSD148507</primaryAssetId> <primaryAssetType>INTERNAL</primaryAssetType> </constrainAsset>

and is directly used by security resolution logic.

Logic performs a lookup in the Perf_sec_rollup_relation table in the Perform database.

  1. If no match is found, the record (batch) fails with an error message: “Entity and Security Relation not found”

  2. If a match is found, the logic populates Security_alias in the Custom_index_attr_detail table with the security_alias value obtained above.

Security Exclusion Resolution

If the incoming value in the customBenchmark/customIndexType (CUSTOM INDEX TYPE) tag = ‘EXCL’ and a value exists in the SECURITY EXCLUSION tag, then the custom Index has logic to exclude certain security returns. The interface performs an additional lookup to resolve the Security being excluded.

SECURITY CONSTRAINED tag, the /customBenchmark/exclusionAsset block in the incoming file, as example:

<exclusionAsset> <primaryAssetId>RJSD148507</primaryAssetId> <primaryAssetType>INTERNAL</primaryAssetType> </exclusionAsset>

and is directly used by security resolution logic.

The logic is the following:

Lookup in the Perf_sec_rollup_relation table in the Perform database is performed.

  1. If there is no match, it fails the record (batch) with an error message: “Entity and Security Relation not found”

  2. If there is a match, it populates Security_alias in the Custom_index_attr_detail table with the security_alias value obtained above.