-
Notifications
You must be signed in to change notification settings - Fork 132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Context Proposal: Order #644
Comments
Just off the top of my head I can think of the following suggestions for types/enumerations.
Additional Types:
|
Additionally I expect this would be an alternative payload for ViewAnalysis |
I think its better to use codes for the side, like |
@nemery-flextrade could orderId be changed to be id? |
@WatsonCIQ I have been working on a revamp of this proposal with @dominicgifford, I think we're close to something that should handle most use cases. I will update this issue over the next day or so so that others can get a sneak preview. |
@dominicgifford I have brain dumped here - I'm guessing we should split this out in to smaller issues? |
Thanks for the updates @nemery-flextrade & @dominicgifford ! 👍 |
I think we need to support % values. E.g. % strike |
@hampshan I'm afraid I'm not familiar with % strikes hence the omission. More generally though, I agree - alternative price types was something I think @dominicgifford mentioned during one of our chats but including it must have slipped my mind. Would you be happy with a field indicating the priceType ({absolute, percentage, yield, etc.})? Also would you be willing to circulate on your side for any further feedback as (I think I remember) you said on the call? 😄 |
@hampshan would the above inclusion of a |
Order
Use Cases
id
'OMS': '123456789'}
sendingTime
'2022-03-30T15:44:44+00:00'
timeInForce
orderLegs
partyIdentifiers
notes
[1] - Must contain at minimum one identifier
[2] -
sendingTime
format: UTC timestamp[3] -
timeInForce
Omission of timeRange.startTime means order is active immediately. Omission of timeRange.endTime acts as good till cancel. Omission of timeInForce defaults to day.OrderLeg
type
fdc3.orderLeg
id
{'OMS': '123456789-leg1'}
product
{'instrument': {'ticker':'MSFT'}}
quantity
{'units': 100000.0}
currency
'GBP'
side
'B' | 'S' | 'P' | 'R'...
price
{'limitPrice': 123.45}
settlement
{currency: 'USD'}
allocations
positionIndicator
'O' | 'C'
partyIdentifiers
{role: PartyRole.OriginatingTrader, source: PartyIdentifierSource.Custom, value: 'TRADER1'}
[1] -
referenceIdentifier
is mandatory only when the count of legs > 1. Must be unique within the context of this trade (at minimum).[2] -
currency
valid values are ISO currency codes + additional codes as defined by ISDA[3] -
settlement
block required only when some detail (date and/or currency) differs from market convention or where there there is no market conventionProduct
instrument
{'ticker': 'MSFT'}
productDefinition
{'ISDA': {...}, 'FpML': {...}}
Quantity Data
units
[1]10000.00
cashValue
[3]50000.00
proceedsFrom
[4]'OMS': '123456789-leg1'
executedUnits
100.00
[1] -
units
refers to the standard unit of trade for a given instrument (shares for equities, contracts for options etc.)[2] - One of
units
,cashValue
orproceedsFrom
must be specified[3] -
cashValue
is expressed in terms of the currency specified for this order leg. The downstream system is responsible for calculating the quantity in units based oncashValue
and current market price (cashValue / marketPrice
, for discreet units round down when buying and up when selling).[4] -
proceedsFrom
indicates that the proceeds from a previous order should be used as the cashValue limit for this trade. This creates an implicit requirement that the specified order leg has been executed.[5] -
executedUnits
required if order is partially/fully executed.Price Data
limitPrice
123.45
stopPrice
124.56
executedAveragePrice
123.80
strikePrice
125.00
priceType
'absolute' | 'percentage' | 'yield' | 'spread'
[1] - Omission of
limitPrice
indicates a market order[2] -
executedAveragePrice
required if order is partially / fully executed.[3] -
strikePrice
required for optionsSettlement Data
type
fdc3.settlementData
tenor
'SP' | 'SN' | '1W'...
[]date
'2022-03-30T15:44:44+00:00'
currency
GBP
'[1] - One of
tenor
ordate
is required when settlement deviates from the market convention for the instrument (for example T+2 for equities)[2] -
currency
required only if settlement currency differs from the currency specified at the order leg levelAllocation
type
fdc3.allocation
account
'account1'
quantity
[1]1000000.00
positionIndicator
[2]'O' | 'C'
[1] -
quantity
is with respect to the side of the order leg[2] -
positionIndicator
refers to the position effect with respect to this account onlyParty Identifier
role
PartyRole.RestrictedCounterparty
value
'BROKER1'
source
PartyIdentifierSource.LEI
[1] - I propose that
fdc3.partyRole
be a primitive enumeration 1 to 1 mapped from FIX tag 452. Not using raw codes here increases human readability but having the underlying enumeration value will allow existing systems to reuse processing logic from FIX[2] - I propose that
fdc3.partyIdentifierSource
be as above for FIX tag 447. Omission of this field is assumed to indicate thatvalue
is a proprietary identifier (analogous to FIX tag 447 =D
).Additional Information
Below is feedback from our working group members during previous workshops around this proposal. These are guidelines which should be taken into account when working on this proposal.
The text was updated successfully, but these errors were encountered: