Skip to content

[repository schema] New attribute to identify fields sharing characteristics #194

@kleihan

Description

@kleihan

Orchestra support FIX and non-FIX protocols. The FIX Protocol has a naming convention for fields due to its tag=value encoding. Whenever the same field is needed more than once in a single message, it requires to have a different tag number and field name. Examples are:

  • Party identifier: PartyID, RootPartyID, NestedPartyID, Nested2PartyID, Nested3PartyID, Nested4PartyID
  • Security type: SecurityType, LegSecurityType, UnderlyingSecurityType, DerivativeSecurityType, RelatedSecurityType, InstrumentScopeSecurityType
  • Encoded security description: EncodedSecurityDesc, DerivativeEncodedSecurityDesc, InstrumentScopeEncodedSecurityDesc

These fields may or may not have a code set that they share. These fields may have one or more of the alternate field names in a given message. They generally have in common that their abbreviation in the FIXML encoding is identical due to the XML path making them distinguishable from one another.

It is proposed to add an attribute baseFieldId to express such a relationship to support validation and treatment of related fields. For example, they could be required to have the same datatype or code set. One of the fields would be identified as the base field and all others would point to the base field to express a relationship.

Note that some fields would have the attributes nonEncodedFieldId and baseFieldId point to the same field, e.g. like EncodedLegSecurityDesc(622) would have value "207" (field name SecurityDesc) in both cases.

Example: A data field with a datatype as base field for other fields.

<fixr:field name="PartyID" id="448" type="String"/>
<fixr:field name="RootPartyID" id="1117" type="String" baseFieldId="448">
<fixr:field name="NestedPartyID" id="524" type="String" baseFieldId="448">
<fixr:field name="Nested2PartyID" id="757" type="String" baseFieldId="448">
<fixr:field name="Nested3PartyID" id="949" type="String" baseFieldId="448">
<fixr:field name="Nested4PartyID" id="1415" type="String" baseFieldId="448">

Example: A data field with a code set as base field for other fields.

<fixr:field name="SecurityType" id="167" codeSet="SecurityTypeCodeSet"/>
<fixr:field name="LegSecurityType" id="609" codeSet="SecurityTypeCodeSet" baseFieldId="167">
<fixr:field name="UnderlyingSecurityType" id="310" codeSet="SecurityTypeCodeSet" baseFieldId="167">
<fixr:field name="DerivativeSecurityType" id="1249" codeSet="SecurityTypeCodeSet" baseFieldId="167">
<fixr:field name="RelatedSecurityType" id="1652" codeSet="SecurityTypeCodeSet" baseFieldId="167">
<fixr:field name="InstrumentScopeSecurityType" id="1547" codeSet="SecurityTypeCodeSet" baseFieldId="167">

Metadata

Metadata

Assignees

Labels

DeFIXifyRemove FIX-specific elements

Type

No type

Projects

Status

No status

Relationships

None yet

Development

No branches or pull requests

Issue actions