First reply an ER with ExecType = PendingNew with TransactTime = t_pending_new
Then an ER with ExecType = New with TransactTime = t_new
What is your view if t_pending_new (e.g. 10:11:22.333339) > t_new (e.g. 10:11:22.333330)?
I am asking this question because the PendingNew is generated by server A while the New is generated by server B. If the clocks in server A and B are out-synced, above case might happen.
@robertlau this looks like an issue related to the design of the architecture. Pending New is optional and should only be used if some action needs to be taken until the order can be confirmed with ExecType “New” or rejected with “Reject”. If the two steps need to happen on different servers, then the servers should be clock synced to the granularity used for timestamps to avoid the case you show above.
If they cannot be synced to a granularity of 0.000001 sec then the two steps should happen on the same server. Negative time for the confirmation of a new order after receiving it is odd from a business perspective.
@robertlau my view is that it is acceptable as long as the Pending New message arrives prior to the New. That seems to be the case as the order routing system probably sends its message back to the submitter prior to routing it to the matching venue. The recipient can then assign incoming timestamps that allow to see the proper sequence of messages. Relying solely on the timestamps from the sender may be less effort but, as the example shows, cannot be guaranteed. FIX does not mandate clock synchronization between counterparties.
If the time precision difference is that far out, it may not matter too much for your clients, but it depends on what your clients expect from the TransactTime data and whether the regulatory jurisdiction cares about time precision differences that far out from a regulator reporting stand point. Some jurisdictions care and some may not. It can also cause confusion if you’re trying to reconstruct timeline for investigation reasons. Just my 2-cents.