Is a limit order to market for ordtype?

We are planning an order type. We simply call it “Limit Order to Market Order”.
Investors can enter limit order during pre-opening session. If the order is not filled or only partially filled when market open, then the remainder is converted as a market order.
Is there any similar order type in FIX specification? Or shall we define it by ourselves?

@shenghsiunghu, FIX currently only covers the opposite as a simple order type: OrdType(40)=K (Market With Left Over as Limit). However, your requirement is covered by the TriggeringInstruction component as follows:

TriggerType(1100)=1 (Partial Execution)
TriggerAction(1101)=2 (Modify)
TriggerOrderType(1111)=1 (Market)
TriggerTradingSessionID(1113)=1 (Day), unless you have multiple sessions per day
TriggerTradingSessionSubID(1114)=2 (Opening or opening auction)

1 Like

Thanks for your help.
I think we should fill tag TriggerType(1100)=2 (Specified Trading Session)
Even though order is not filled, the order is converted as a market order too.

Because there is only one kind situation in our market from pre-open session to normal trading, tag TriggerOrderType(1111)=1 (Market) should be enough for us.
When submit New Order in pre-open session.
OrdType(40)=2 (Limit)
TriggerOrderType(1111)=1 (Market)

Agree, order is converted regardless of status and only triggered by change of session. However, triggerType(1100) is required if any other Triggering tags are specified and at least TriggerTradingSessionID(1113) is required when you TriggerType(1100)=2. Otherwise, you are not fully FIX-compliant with this. You do not need TriggerTradingSessionSubID(1114) if you define your day-session to start after pre-open.

Is it actually up to the user to express trigger conditions? What do you do if the user does not use the trigger fields on orders submitted during pre-open?

1 Like

User could decide if use this trigger condition. If they don’t express trigger conditions, limit order will stay as limit order.
In order to compliance with FIX spec, three tags(1100, 1111 and 1113) are used together. It seems too lengthy… Is there any trading venue adopting TriggeringInstruction?

Which encoding are you using, tag=value?

Yes, we are using standard ascii encoding tag=value. A single new order packet is about 300 bytes now.

The four tags would add 35 bytes:

|1100=2|1102=2|1111=1|1113=1|1114=2

Tag=value is not ideal for low-latency binary FIX encoding such as SBE is better. You can define fields as constant value in the schema and then omit them from the wire format.

If you use just a single field, then TriggerType(1100)=2 (Specified Trading Session) is probably the best choice. The field usage description in your Rules of Engagement should then include something like:

The trigger acts only when the pre-opening session changes to normal trading and modifies the OrdType(40) value of the order to 1=Market regardless of its previous OrdType(40) or OrdStatus(39) value. This is equivalent to TriggerAction(1101)=2 (Modify), TriggerOrderType(1111)=1 (Market), TriggerTradingSessionID(1113)=1 (Day), and TriggerTradingSessionSubID(1114)=2 (Opening or opening auction).

1 Like