Limit order filled at loss, price never touched

A STC Limit of 27.59 was closed at 27.36, when 27.59 was never even remotely touched. I’ve submitted at least 8 tickets over the last few months for random behaviour that has nothing to do with slippage, and I haven’t been given an answer once, let alone a straight, factual, answer. Is anybody else having this problem?

I had this happen to me too.

C2’s quote server must have issues.

This needs to be looked at ASAP.

Thanks for commenting too. This really needs to be looked at ASAP. Both the technical side, and that habit of ignoring order problem tickets.

Guys -

We have a slew of reports this morning about erroneous fills being triggered for orders being held on our AutoTrade servers.

Francis is looking into what is going on.


I saw the same behavior this morning at 9:52 EST.

I had 8 buy orders filled in my account today for limit orders that were never touched and not even close.

Yes, guys. I am very sorry for this morning’s problems. We had a software problem that caused many stops or limits to be declared as “filled” even though the price did not actually touch. This was not merely one or two bad ticks from a quote feed (although I wish I could blame it on some other company.) This was a larger problem, and it caused quite a few bad fills.

Again, I’m sorry. But the problem was fixed at around 10 AM ET this morning.


I have had the same problem, and it is extremely concerning.

1) I place buy order with a stop loss.

2) My subscribers get notified of the trade

3) C2 triggers the stop loss and closes the trade, when the price never got touched.

4) My subscribers still have the position open

5) At some point in the future my trading system closes the trade, however C2 rejects the close because it thinks it is already closed, so my subscribers are not notified of the close.

How can we be sure our subscribers portfolios match the positions open in C2?

Paul: That’s not actually what happens in these cases.

When a “bad tick” erroneously triggers a fill (even when your limit price is not touched), two things happen.

1) Your system’s track-record fill price (on your C2 page) will be changed to match the price received by your subscribers.

2) AutoSync will make sure that subscribers match your system’s positions. When you close your positions, so too will your subscribers.

Now, please don’t get me wrong. I’m not trying to say that what happened yesterday morning (a slew of fills even though the limit price wasn’t hit) is no big deal. It is a big deal, but thankfully we fixed the problem at around 10 AM yesterday.

I’m just suggesting that, thanks to AutoSync, so long as you manage your system to the best of your ability (closing positions you don’t want to have, for example), your subscribers will mirror you.


Mathew - are you going to fix the historical system performance?

Mike -

In cases where there are no real-life AutoTraders, I can definitely correct the system record.

In cases where there are real-life AutoTraders, I cannot adjust the trade record. Specifically: if a trade happened in an account, I can’t delete it from the system’s trade record. But keep in mind that C2 automatically adjusts the historical trade record of the system to reflect the actual prices received by real-life AutoTraders. So if a limit order wasn’t actually hit at X, and instead the trader got filled at Y (the real market price), C2 will change the record to show the fill at Y, since that’s what happened to a real AutoTrader account.

No easy answers, I’m afraid. Which is why we want to try to make sure yesterday’s problem does not recur.

Again, I apologize for the problems of yesterday morning.

Thanks Matthew

I’m still a little concerned for subscribers who might be manually trading signals. They would not have received an email yet to say the position has closed. And I cannot send a sell signal to trigger such an email (because I receive an error saying there was no open position to close when sending STC). So they will potentially have the position open much longer than intended.

Also, when situations like this occur, it would be handy to receive an email to say there had been a system fault. I spent a lot of time trying to find the fault at my end before putting a ticket in.


I’m not sure I am following what you’re saying.

Let’s look at an example. Let’s say you type in an order to BUY IBM at Limit 100. Now imagine that due to a problem, your C2 model account fills and goes long even though IBM is trading at 101. (Not good, not good, but let’s address the concern you have.)

Now, your autotraders are suddenly long. Your manual traders are not.

You say, “Gosh, I do not want to be long.” So you issue a signal that says "SELL TO CLOSE IBM."

Your Model Account closes the position and goes flat.

All your AutoTraders close the position.

Your manual traders (who probably never opened a position in the first place) receive your signal email which says, "Close long position."

Everyone is in sync. Everyone knows your intention.

I’m not saying we should all wave our hands and dance around in delight at this turn of events – no one wants to see an erroneous fill – but my point is this: So long as you focus on managing your Model Account (closing any positions you don’t want) your AutoTraders will be in sync. Your manual traders will receive all signals you type, too, so they can follow your intent and manually stay in sync.

And finally, you can always use the System BROADCAST feature to broadcast a message to your subscribers, if you ever doubt that they know what’s going on.


Thanks for your reply Matthew

So you issue a signal that says "SELL TO CLOSE IBM."

If my system tries to close this position with a STC, the C2 API returns an error that there is no position to close, so no signal is generated (and no email sent).

Paul -

If C2 says you can’t issue a Sell To Close because there is no long position to close, well, then there is no problem after all.

I guess I don’t understand what scenario you are worried about. If your system doesn’t have a long position, then what is the problem you are trying to solve?

Perhaps this conversation would be better if taken offline: