Git Product home page Git Product logo

orchestrations's Introduction

orchestrations

Service offerings expressed with Orchestra

Orchestra is a standard developed by the FIX Trading Community. It was conceived to provide machine readable rules of engagement for counterparties. Machine readable rules avoid ambiguities and gaps prevalent in narrative specifications and may be directly processed by users to generate code, configurations, test cases, and so forth.

The purpose of this project is to collect machine readable rules, conformant to the Orchestra standard, for various service offerings. We encourage service providers to contribute Orchestra files here.

When an Orchestra file has not been provided by a party offering a service (We hope they see the benefits and do so in the future!), participants of this project have interpreted their textual specifications into an Orchestra file. In that case, be forewarned that we are not the original designers of the system, and it is possible that we may have misinterpreted their intent due to the aforementioned ambiguities. Use at your own risk.

References

Specifications and source material for Orchestra are available in GitHub.

Orchestra specifications

Orchestra schema and sample code

Updates

Updated to conform to Orchestra version 1.0 Draft Standard schema.

License

© Copyright 2017-2023 FIX Protocol Limited

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

orchestrations's People

Contributors

david-gibbs-ig avatar donmendelson avatar kleihan avatar michaelboyles avatar rshriver avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

orchestrations's Issues

Orchestra file in EP269 has regression compared to zip version

There appears to be a regression of the FIX\ Standard/OrchestraFIXLatest.xml in EP269 (commit 134bccd), which is still present in most recent EP269 (commit f4a5205), compared to the version in the zip archive at https://www.fixtrading.org/packages/ep269-extension-for-trade-compression/

Comparison between version from website and version from here, showing that version here is slightly older and contains error:

@@ -9,7 +9,7 @@
       <dc:title>Orchestra</dc:title>
       <dc:creator>unified2orchestra.xslt script</dc:creator>
       <dc:publisher>FIX Trading Community</dc:publisher>
-      <dc:date>2021-09-02T00:04:17.25031Z</dc:date>
+      <dc:date>2021-08-14T22:38:48.950856Z</dc:date>
       <dc:format>Orchestra schema</dc:format>
       <dc:source>FIX Unified Repository</dc:source>
       <dc:rights>Copyright (c) FIX Protocol Ltd. All Rights Reserved.</dc:rights>
@@ -33925,7 +33925,7 @@
                     addedEP="268">
             <fixr:annotation>
                <fixr:documentation purpose="SYNOPSIS">
-         Trade submitted to venue for clearing and settlement
+         Trade submitted to venue for clearing and Identifies
       </fixr:documentation>
                <fixr:documentation purpose="ELABORATION">
          Identifies trades brought on a trading venue purely for clearing and settlement purposes.

codeSet name="SessionRejectReasonCodeSet" , incorrect name for id 373018

Name should be "NonDataValueIncludesFieldDelimiter", correcting this will help with code generation for QuickFIXJ

17419 </fixr:documentation>
17420 </fixr:annotation>
17421 </fixr:code>
17422 <fixr:code name="Non" id="373018" value="17" sort="17" added="FIX.4.3">
17423 fixr:annotation
17424 <fixr:documentation purpose="SYNOPSIS">
17425 Non "Data" value includes field delimiter (<SOH> character)
17426 </fixr:documentation>

FIX 4.2 error in message name AllocationInstructionAck and MsgType(35) values J and P

From FIXimate:

The Allocation Instruction message provides the ability to specify how an order or set of orders should be subdivided amongst one or more accounts. In versions of FIX prior to version 4.4, this same message was known as the Allocation message. Note in versions of FIX prior to version 4.4, the allocation message was also used to communicate fee and expense details from the Sellside to the Buyside. This role has now been removed from the Allocation Instruction and is now performed by the new (to version 4.4) Allocation Report and Confirmation messages.

The FIX 4.2 Orchestra file has three errors related to this change:

  • Message name is from FIX 4.4: <fixr:message name="AllocationInstructionAck" id="24" msgType="P" ...
    ==> change to <fixr:message name="AllocationAck" id="24" msgType="P" ...
  • Code name for MsgType(35)=J is from FIX 4.4: <fixr:code name="AllocationInstruction" id="35019" value="J" ...
    ==> change to <fixr:code name="Allocation" id="35019" value="J" ...
  • Code name for MsgType(35)=P is from FIX 4.4: <fixr:code name="AllocationInstructionAck" id="35024" value="P" ...
    ==> change to <fixr:code name="Allocation ACK" id="35024" value="P" ... (note the space before "ACK")

CxlRejResponseToCodeSet, "OrderCancel" should be "OrderCancelReplaceRequest"

<fixr:codeSet name="CxlRejResponseToCodeSet" id="434" type="char">
<fixr:code name="OrderCancelRequest" id="434001" value="1" sort="1" added="FIX.4.2">
fixr:annotation
<fixr:documentation purpose="SYNOPSIS">
Order cancel request
</fixr:documentation>
</fixr:annotation>
</fixr:code>
<fixr:code name="OrderCancel" id="434002" value="2" sort="2" added="FIX.4.2">
fixr:annotation
<fixr:documentation purpose="SYNOPSIS">
Order cancel/replace request
</fixr:documentation>
</fixr:annotation>
</fixr:code>
fixr:annotation
<fixr:documentation purpose="SYNOPSIS">
Identifies the type of request that a Cancel Reject is in response to.
</fixr:documentation>
</fixr:annotation>
</fixr:codeSet>

FIX 4.4: Missing "1" in ISO 10962 reference of CFICode(461) description

Description reads:

Indicates the type of security using ISO 0962 standard, Classification of Financial Instruments (CFI code) values. ISO 0962 is maintained by ANNA (Association of National Numbering Agencies) acting as Registration Authority. See "Appendix 6-B FIX Fields Based Upon Other Standards". See also the Product (460) and SecurityType (67) fields. It is recommended that CFICode be used instead of SecurityType (67) for non-Fixed Income instruments.

A subset of possible values applicable to FIX usage are identified in "Appendix 6-D CFICode Usage - ISO 0962 Classification of Financial Instruments (CFI code)"

Replace ISO 0962 with ISO 10962.

Update and deploy FIX orchestrations

  1. Update project to current Orchestra version
  2. Deploy to Maven central repository

(Leaving Pillar in source control but not adding to build since it is not currently being maintained. A volunteer maintainer would be welcome.)

mvn assembly plugin missing so orchestrations zip not published

The mvn assembly plugin is missing from 'FIX Standard'/pom.xml. The orchestrations zip file is therefore not published. A pull request has been made to resolve this. If this is acceptable please merge the pull request and republish the SNAPSHOT so that the zip file artifact is published to the public mvn repo.

QuoteCondition(276) = "f " (FastMarketETH)

In OrchestraFIXLatest.xml, the QuoteCondition(276) value "f " (FastMarketETH) contains a trailing space character. All the other values consist of a single character. Is this an error or intentional?

This appears from FIX 5.0 onwards, and FIX protocol implementations have different approaches to handling it. QuickFIX retains the space character, while QuickFIX/J and Philadelphia (which I'm involved in) do not.

Format of Orchestra XML file has changed substantially between EP269 and EP272

The format of the FIX Latest Orchestra XML file has changed substantially between EP269 and EP272, see below for snippet. This has caused various issues in my build process, and there is possibly an incompatibility of this new format with the tablature tools. Before I dig into this much further, can I ask whether this change was intentional?

$ git checkout f4a5205
HEAD is now at f4a5205 Create Known Issues.md

$ head -15 FIX\ Standard/OrchestraFIXLatest.xml 
<?xml version="1.0" encoding="UTF-8"?>
<fixr:repository xmlns:dc="http://purl.org/dc/elements/1.1/"
                 xmlns:fixr="http://fixprotocol.io/2020/orchestra/repository"
                 xmlns:functx="http://www.functx.com"
                 xmlns:xs="http://www.w3.org/2001/XMLSchema"
                 name="FIX.Latest"
                 version="FIX.Latest_EP269">
   <fixr:metadata>
      <dc:title>Orchestra</dc:title>
      <dc:creator>unified2orchestra.xslt script</dc:creator>
      <dc:publisher>FIX Trading Community</dc:publisher>
      <dc:date>2021-08-14T22:38:48.950856Z</dc:date>
      <dc:format>Orchestra schema</dc:format>
      <dc:source>FIX Unified Repository</dc:source>
      <dc:rights>Copyright (c) FIX Protocol Ltd. All Rights Reserved.</dc:rights>

$ git checkout cd61eb4
HEAD is now at cd61eb4 EP272

$ head -15 FIX\ Standard/OrchestraFIXLatest.xml 
<fixr:repository xmlns:dcterms="http://purl.org/dc/terms/" xmlns:fixml="http://fixprotocol.io/2022/orchestra/appinfo/fixml" xmlns:fixr="http://fixprotocol.io/2020/orchestra/repository" version="FIX.Latest_EP272" name="FIX.Latest">
    <fixr:metadata>
        <dcterms:title>
            FIX.Latest_EP272</dcterms:title>
        <dcterms:created>
            2022-08-15T16:15:49.035692</dcterms:created>
        <dcterms:date>
            2022-08-04T15:17:49Z</dcterms:date>
        <dcterms:rights>
            Copyright (c) FIX Protocol Ltd. All Rights Reserved.</dcterms:rights>
        <dcterms:conformsTo>
            Orchestra v1.0</dcterms:conformsTo>
        <dcterms:source>
            FIX Unified Repository 2010 Edition</dcterms:source>
    </fixr:metadata>

FIX 4.4: Missing "1" in description of OptAttribute(206)

The description of OptAttribute(206) contains a list of possible values. The last sentence is as follows:

0-9 = single digit "version" number assigned by exchange following capital adjustments (0=current, =prior, 2=prior to , etc).

Add "1" and change as follows:

0-9 = single digit "version" number assigned by exchange following capital adjustments (0=current, 1=prior, 2=prior to 1, etc).

FIXRepository4.2.xml contains data types introduced with FIX 4.3

FIX 4.3 added the following data types:

  • Length, NumInGroup, and SeqNum (base type “int”). This affected "XXXLength", "NoXXX", and "XXXSeqNum" fields.
  • Percentage (base type “int”)
  • Country (base type "String")
  • TagNum (base type “int”)

FIX 4.2 should still have the base data types.

NoStreamAssetAttributes(41237) = 'D' (Day)

In OrchestraFIXLatest.xml, the field NoStreamAssetAttributes(41237) has the type NumInGroup but also contains the code 'D' (Day). How should one handle this type discrepancy?

FIX 4.4 data type errors in Orchestra representation

FIX 4.4 only had a single data type MultipleValueString for strings containing multiple values. The data type section of the FIX 4.4 Orchestra file contains MultipleCharValue and MultipleStringValue which were introduced with FIX 5.0 to distinguish whether the values are single-character or multi-character.

Unknown group in CollateralReinvestmentGrp component

Hi,

I have found that the CollateralReinvestmentGrp component contains a reference to the group with id 2266 which is not present in the dictionary at all.

<fixr:component name="CollateralReinvestmentGrp" id="2266" category="Common" added="FIX.5.0SP2" addedEP="254" abbrName="CollRnvstmnt">
	<fixr:groupRef added="FIX.5.0SP2" addedEP="254" id="2266">
		<fixr:annotation>
			<fixr:documentation/>
		</fixr:annotation>
	</fixr:groupRef>
	<fixr:annotation>
		<fixr:documentation purpose="SYNOPSIS">
 The CollateralReinvestmentGrp component block is a repeating group that may be used to provide a breakdown of the cash collateral's reinvestment types and amounts (e.g. CollateralType(1704)="CASH").
		</fixr:documentation>
		<fixr:documentation purpose="ELABORATION"/>
	</fixr:annotation>
</fixr:component>

Probably, that group had been missed when the dictionary was created. Or it's a mistake in the group id. Could you check it, please?

Code names starting with lowercase character

In OrchestraFIXLatest.xml, there is currently a handful of fields that have code names starting with a lowercase character, as opposed to all the rest of the code names (for these and all other fields) starting with an uppercase character. These codes are as follows:

  • PaymentMethod(492)
    • 20 (euroSIC)
  • UnitOfMeasure(996)
    • GJ (gigajoules)
    • thm (therms)
    • kL (kiloliters)
    • L (liters)
  • EntitlementAttribDatatype(1779)
    • 1 (int)
    • 6 (float)
    • 12 (char)
    • 23 (data)

PaymentMethod(492) looks to be intentional as it matches the name of the service. UnitOfMeasure(996) appears less clear, as for example the code names for all other units with a "kilo-" prefix start with an uppercase character. EntitlementAttribDatatype(1779) seems intentional as well, but notably the names "int", "float", and "char" can clash with the types int, float, and char in many programming languages.

Is it intentional that all of the code names above start with a lowercase character?

Edit. Corrected UnitOfMeasure(992) to UnitOfMeasure(996) based on @kleihan's observation.

FixRepository42.xml QuoteRequest is incorrect

I've been replacing a code generator that previously used the repository with a version that uses the orchestra standard and I'm using the files published here has a reference. Some tests I had broke and upon investigation it appears that the FixRepository42.xml file has an incomplete definition for QuoteRequest, I first noticed this because there was no PrevClosePx field. I've attached a dump of the structure I build below for the 4.2 and 4.2 files.

QuoteRequest42.txt
QuoteRequest44.txt

Here is the structure from the 4.2 file.

<fixr:message name="QuoteRequest" id="26" msgType="R" category="QuotationNegotiation" added="FIX.4.0">
fixr:structure
<fixr:componentRef id="1001" presence="required" added="FIX.4.0">
fixr:annotation
fixr:documentation
MsgType = R
</fixr:documentation>
</fixr:annotation>
</fixr:componentRef>
<fixr:fieldRef id="131" presence="required" added="FIX.4.0">
fixr:annotation
fixr:documentation/
</fixr:annotation>
</fixr:fieldRef>
<fixr:groupRef presence="required" added="FIX.4.2" id="2151">
fixr:annotation
fixr:documentation
Number of related symbols in Request
</fixr:documentation>
</fixr:annotation>
</fixr:groupRef>
<fixr:componentRef id="1002" presence="required" added="FIX.4.0">
fixr:annotation
fixr:documentation/
</fixr:annotation>
</fixr:componentRef>
</fixr:structure>
fixr:annotation
<fixr:documentation purpose="SYNOPSIS">
In some markets it is the practice to request quotes from brokers prior to placement of an order. The quote request message is used for this purpose.
</fixr:documentation>
</fixr:annotation>
</fixr:message>

FixRepository44.xml contains a broken groupRef for 2085

The FIX Standard/FixRepository44.xml contains the the following references to group 2085 but no such group is defined.

<fixr:groupRef id="2085" added="FIX.4.4">
    <fixr:annotation>
        <fixr:documentation>
Number of repeating groups of historical "hop" information. Only applicable if OnBehalfOfCompID is used, however, its use is optional. Note that some market regulations or counterparties may require tracking of message hops.
        </fixr:documentation>
    </fixr:annotation>
</fixr:groupRef>

<fixr:component name="Hop" id="2085" category="Common" added="FIX.4.4" abbrName="Hop">
    <fixr:groupRef added="FIX.4.4" id="2085">
        <fixr:annotation>
            <fixr:documentation/>
        </fixr:annotation>
    </fixr:groupRef>
    <fixr:annotation>
        <fixr:documentation purpose="SYNOPSIS"/>
        <fixr:documentation purpose="ELABORATION"/>
    </fixr:annotation>
</fixr:component>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.