Who should generate pending messages?

Imported from previous forum

[ original email was from John Prewett - jprewett@lavatrading.com ]
I have a question concerning generation of “pending” messages.

I define “pending” messages as ExecReport with ExecType containing one of:
o Pending New
o Pending Replace
o Pending Cancel

Imagine there is a customer who sends orders to various execution venues through an intermediary. The intermediary may act as a dumb FIX router or could take order routing decisions.

Should only the venues generate pending messages and the intermediary route them back to the customer?
Or should the intermediary generate and send pending messages back to the customer, while discarding any pending messages received from the execution venues?

While I have supplied two possible answers, I suspect the answer lies somewhere in between: “it depends on several factors…”

Thanks in advance for your opinions.

JohnP

[ original email was from Joseph Horowitz - jhorowitz@aegisoft.com ]
On a subjective basis:

I generally consider a Pending message to mean that the message was received off the wire and queued (safe stored), even if not processed. So depending on who will guarantee delivery; that is the party that can respond.

In general I would rather know that the final destination has the message, which would provide the most value to the user, prior to that it’s “in the ether.” It’s also probably easier for the routing software to just pass through the pending-ack instead of generating their own and maybe not including other valuable information that may or may not be present within the destination’s pending-ack message.

My 2-cents,
-Joey

I have a question concerning generation of “pending” messages.

I define “pending” messages as ExecReport with ExecType containing one
of: o Pending New o Pending Replace o Pending Cancel

Imagine there is a customer who sends orders to various execution venues
through an intermediary. The intermediary may act as a dumb FIX router
or could take order routing decisions.

Should only the venues generate pending messages and the intermediary
route them back to the customer? Or should the intermediary generate and
send pending messages back to the customer, while discarding any pending
messages received from the execution venues?

While I have supplied two possible answers, I suspect the answer lies
somewhere in between: “it depends on several factors…”

Thanks in advance for your opinions.

JohnP

Agree here. Getting the message from the venue implies it did pass thru the various hops you expected it to. I would think in some cases where multiple route engines are used it could be used for flow tracking ( and finding a break quicker ), but my feeling is it’s more overhead as seach hop generates one; more ( smaller )messages to process and handle. Why do it unless you have to.

On a subjective basis:

I generally consider a Pending message to mean that the message was
received off the wire and queued (safe stored), even if not processed.
So depending on who will guarantee delivery; that is the party that
can respond.

In general I would rather know that the final destination has the
message, which would provide the most value to the user, prior to that
it’s “in the ether.” It’s also probably easier for the routing software
to just pass through the pending-ack instead of generating their own and
maybe not including other valuable information that may or may not be
present within the destination’s pending-ack message.

My 2-cents, -Joey

I have a question concerning generation of “pending” messages.

I define “pending” messages as ExecReport with ExecType containing one
of: o Pending New o Pending Replace o Pending Cancel

Imagine there is a customer who sends orders to various execution
venues through an intermediary. The intermediary may act as a dumb FIX
router or could take order routing decisions.

Should only the venues generate pending messages and the intermediary
route them back to the customer? Or should the intermediary generate
and send pending messages back to the customer, while discarding any
pending messages received from the execution venues?

While I have supplied two possible answers, I suspect the answer lies
somewhere in between: “it depends on several factors…”

Thanks in advance for your opinions.

JohnP

John,

my view is the following. Only systems that keep entity state should be the source of messages defining states. An intermediary responding to an order carrying “New” with an ExecutionReport carrying “Pending New” has to maintain state of all orders passing through. Specifically, he has to synchronize his order states with those of the venue to which he then forward the orders. The venue might not support pending states, i.e. the intermediary has to respond to order status inquiries by accessing his own database (not the venue’s). The venue might have deleted an order through verbal communication and not sent out a corresponding message. This all creates additional complexities that I would avoid if possible.

Therefore I favor a solution where only the venue maintains order states for all cases where the intermediary does not create new order entities by bundling orders from multiple customers. The intermediary then simply acts as a hop towards the venue even if he does some risk management when he sees the orders and trades passing through.

Regards,
Hanno.

I have a question concerning generation of “pending” messages.

I define “pending” messages as ExecReport with ExecType containing one
of: o Pending New o Pending Replace o Pending Cancel

Imagine there is a customer who sends orders to various execution venues
through an intermediary. The intermediary may act as a dumb FIX router
or could take order routing decisions.

Should only the venues generate pending messages and the intermediary
route them back to the customer? Or should the intermediary generate and
send pending messages back to the customer, while discarding any pending
messages received from the execution venues?

While I have supplied two possible answers, I suspect the answer lies
somewhere in between: “it depends on several factors…”

Thanks in advance for your opinions.

JohnP