That's probably a big underlying cause of why ghost orders happen,
and probably why some people report that trading on a VPS (with
its extremely low latency) eliminated their ghost order problem.
Threads discussing ghost orders (and trade copying) can be found
here, here, here, and here.
Ghost orders tend to happen in follower accounts using certain
trade copiers. Sometimes, opposite positions get opened in
follower accounts when closing the leader position -- these are
the 'ghost' orders I refer to -- so why are the followers doing that?
Is it the fault of the trade copier? Maybe, but probably not.
It certainly was not coded to do that intentionally.
Is it the fault of high network latency? Quite probably, yes.
Remember, orders have to be submitted and acknowledged.
Excessive network latency presents windows of opportunities
for the unintended consequences of orders filling that were in
progress of being cancelled, or opposing market orders submitted
even though a stop/target filled (and actually closed the position),
so flat at the broker is not seen fast enough, because slow network
latency affects acknowledgement, and so the actual closing market
order used to close the position actually opens a new position in the
opposite direction.
I submit evidence here that supports another reason.
That is, it's not just network latency, the culprit may be hidden in the
method used to close the leader's position.
Let's assume some details:
You are using ChartTrader to enter your orders directly onto the chart.
You are using ChartTrader 'Close' button to close that position.
The important detail is not ChartTrader, per se. That is, it is not
the order entry that we're concerned about. It is the Close button.
I submit that when you use the Close button to exit the position,
and you do this when price is close to your target/stop order,
the actions the Close button takes may actually be exacerbating
the potential for ghost orders.
In fact, IMHO, for some traders, the use of the Close button may be
the primary cause of most ghost order creations.
So what does the Close button do exactly?
The NT7 behavior for the Close button is documented here.
The NT8 behavior for the Close button is documented here.
Look carefully and you will see that NT7 modifies the target orders
to above/below market price so they get filled instantly -- then
submits a market order to exit anything remaining.
NT8 changed that behavior.
In NT8, the Close button cancels all orders, waits for the cancel
confirmation, then submits a market order to exit the entire position.
In NT8, for fast moving markets, if you press Close very close to
the target/stop price, it's quite possible for those orders to get filled
anyways, even though a cancel was sent. Then, after the cancel,
the intended market order to close is submitted (in the opposite
direction) which is then supposed to exit the position (but the
position is already flat at the broker, because that stop/target
actually filled, because things are happening really fast), and
this close market order actually opens a new opposite position,
and this new opposite position is the 'ghost' order we sometimes
see.
With trade copying, ghost orders usually show up in the follower
accounts. The trade copier adds its own delays as it loops
through the follower accounts, sending orders to replicate the
orders seen on the leader account.
But, I've actually seen ghost orders happen when trading a single
Apex/Rithmic eval account, no trade copying involved.
What to do?
I suggest you duplicate the NT7 behavior. That is, you manually
drag your target order to above/below the market price so that it
fills instantly and exits the position. If you're using OCO (which
all Atm strategies do), the stop order is cancelled automatically
when that dragged target order fills. (Naturally, this works best
when you only have one profit target order to deal with.)
A by-product of the NT7 way is reducing the chance (actually,
IMHO, it eliminates the chance) of ghost orders causing an
unintended and unwanted opposite position.
The NT8 behavior where Close cancels all orders, then uses an
extra opposite market order to exit the position introduces an extra
delay that exacerbates the delays from network latency and trade
copying.
The NT7 behavior had no delay, because it doesn't need to wait
for any cancelled orders. That is, NT7 Close would cancel the stops,
and adjust the target orders so they fill instantly, but it does not need
to wait for confirmation of stop order cancellations, it just cancels
them and immediately adjusts the targets. If there is a delay, it's on
the back, and somewhat optional, because NT7 needs to wait for all
modified targets to fill to know whether to submit an extra market
order to exit anything that remains. That extra waiting to submit an
extra market order only happens if you have runners.
In NT8, the Close behavior is inferior because submitting an opposing
market order to close the position introduces a window of opportunity
for the cancel and submit to cross paths, like ships passing in the night,
and once submitted, that market order to exit the position can't be undone.
So, if a stop/target actually filled (despite being cancelled, sometimes an
order still gets filled) the opposing marker order opens a position in the
opposite direction.
See the difference in Close behavior?
NT7 uses an extra market order on the back side, and only if necessary,
meaning after all the modified targets were filled, an extra opposing market
order is only needed, at the end, to close runners that had no targets.
NT8 uses an extra market order on the front side, always closing the entire
position with this opposing market order.
I submit NT8 Close behavior to 'always use an opposing market order to
close the position' is inferior because this extra order introduces extra
delays that worsens the delays from network latency and trade copying.
Remember, if you're using ChartTrader, I suggest you exit your positions
by dragging your target order to a price where it instantly fills -- this mimics
the NT7 behavior of the Close button, and gives little to no opportunity for
an extra market order to create a ghost order situation.
-=o=-
I don't think the NT engineers thought about this Close button behavior change
well enough when they changed the behavior in NT8 -- remember, trade copying
was not a big thing yet.
But trade copying really exposes the new NT8 Close behavior as inferior to
the old NT7 Close behavior.
Why was the change made? I don't know. The help guide links I gave above
don't accurately state why the change was made in NT8. The NT8 help page
is contradictory regarding the use of a market order, it appears to have too
much copy-and-paste content from the older NT7 help page.
IMHO, the NT8 behavior of the Close button should be reverted back to the
older NT7 behavior. The NT7 behavior is ghost busting because it eliminates
one entire avenue of opportunity for ghost order creation.
What do you think?
Just my 2˘.


Comment