When a strategy order having N legs is filled or partially filled, the Client expects N+1 execution reports from the Fix Server for each individual partial or full fill: fill reports for the N individual legs of the strategy, and a summary fill report. The order of these messages is not relevant, however, it is expected that all N+1 messages shall arrive within a configurable timeout. The fill reports for the individual legs shall have the MultiLegReportingType tag(442) populated with the value 2(IndividualLeg). The summary fill report shall have the same tag populated with the value 3(MultiLegSecurity).
For strategies with number of legs more than 2 a fill or a partial fill execution report shall contain SecondaryExecID (tag 527) – an unique identifier provided on leg and summary fills and used to link leg fills with their associated summary.
Also a special strategy fills reporting mode may be configured for a route: it is allowed to process fills reporting without summary fill event when only legs execution reports are coming from exchange. This mode required SecondaryExecID (tag 527) for all kind of strategies regardless of legs number. Exchange cannot send strategy fills with and without summary simultaneously.
Here is an example of three Execution Report messages pertaining to the same fill event of a two-leg calendar spread:
The fill summary:
8 BeginString = FIX.4.2
9 BodyLength = 314
35 MsgType = 8 "ExecutionReport"
49 SenderCompID = s.ord.ul.chi1
56 TargetCompID = s.cqg.com
34 MsgSeqNum = 3504
369 LastMsgSeqNumProcessed = 2036
52 SendingTime = 20140905-13:07:19
57 TargetSubID = 4274
1 Account = neg
6 AvgPx = 100
11 ClOrdID = 140905232321
14 CumQty = 1
17 ExecID = US200000218033AELO1
20 ExecTransType = 0 "New"
21 HandlInst = 1 "AutomatedExecutionOrder,Private,NoBrokerIntervention"
31 LastPx = 100
32 LastShares = 1
37 OrderID = 00000643119AOLO1
38 OrderQty = 1
39 OrdStatus = 2 "Filled"
40 OrdType = 2 "Limit"
44 Price = 100
54 Side = 1 "Buy"
55 Symbol = FIBZ4U4
59 TimeInForce = 0 "Day"
60 TransactTime = 20140905-13:07:19
77 OpenClose = O "OpenTrade"
150 ExecType = 2 "Fill"
151 LeavesQty = 0
167 SecurityType = SPD "Spread"
527 SecondaryExecID = 1409053I110za
442 MultiLegReportingType = 3 "StrategySummary"
10 CheckSum = 188
The first leg:
8 BeginString = FIX.4.2
9 BodyLength = 324
35 MsgType = 8 "ExecutionReport"
49 SenderCompID = s.ord.ul.chi1
56 TargetCompID = s.cqg.com
34 MsgSeqNum = 3506
369 LastMsgSeqNumProcessed = 2036
52 SendingTime = 20140905-13:07:19
57 TargetSubID = 4274
1 Account = neg
6 AvgPx = 21270
11 ClOrdID = 140905232321
14 CumQty = 1
17 ExecID = US200000218035AELO1
20 ExecTransType = 0 "New"
21 HandlInst = 1 "AutomatedExecutionOrder,Private,NoBrokerIntervention"
31 LastPx = 21270
32 LastShares = 1
37 OrderID = 00000643119AOLO1
38 OrderQty = 1
39 OrdStatus = 2 "Filled"
40 OrdType = 2 "Limit"
44 Price = 100
54 Side = 1 "Buy"
55 Symbol = FIBZ4U4
59 TimeInForce = 0 "Day"
60 TransactTime = 20140905-13:07:19
150 ExecType = 2 "Fill"
151 LeavesQty = 0
167 SecurityType = SPD "Spread"
527 SecondaryExecID = 1409053I110za
200 MaturityMonthYear = 201412
442 MultiLegReportingType = 2 "StrategyLeg"
10 CheckSum = 149
The second leg:
8 BeginString = FIX.4.2
9 BodyLength = 324
35 MsgType = 8 "ExecutionReport"
49 SenderCompID = s.ord.ul.chi1
56 TargetCompID = s.cqg.com
34 MsgSeqNum = 3508
369 LastMsgSeqNumProcessed = 2036
52 SendingTime = 20140905-13:07:19
57 TargetSubID = 4274
1 Account = neg
6 AvgPx = 21170
11 ClOrdID = 140905232321
14 CumQty = 1
17 ExecID = US200000218039AELO1
20 ExecTransType = 0 "New"
21 HandlInst = 1 "AutomatedExecutionOrder,Private,NoBrokerIntervention"
31 LastPx = 21170
32 LastShares = 1
37 OrderID = 00000643119AOLO1
38 OrderQty = 1
39 OrdStatus = 2 "Filled"
40 OrdType = 2 "Limit"
44 Price = 100
54 Side = 2 "Sell"
55 Symbol = FIBZ4U4
59 TimeInForce = 0 "Day"
60 TransactTime = 20140905-13:07:19
150 ExecType = 2 "Fill"
151 LeavesQty = 0
167 SecurityType = SPD "Spread"
527 SecondaryExecID = 1409053I110za
200 MaturityMonthYear = 201409
442 MultiLegReportingType = 2 "StrategyLeg"
10 CheckSum = 160