Anyone else having constant ITM disconnects?

It looks like at least the CME natively supports MIT orders, but it’s still not clear if it’s a limit order that is converted, or if the darned thing just sits on the server, in the dark, invisible to all, waiting to ambush a poor tick.



http://www.cme.com/edu/course/resources/ordertypes9725.html



Francis

> I always thought MIT orders were the creations of brokers – not exchanges… and thus there was no standard as to which exchanges/contracts supported MIT. Am I mistaken?



Yes, but so am I: the CBOT doesn’t accept MIT’s, so they can’t be used for the bonds as best I can tell. The CME pit traded stuff (S&P, Currencies, Meats, etc.) has a “real” MIT. It is in the pit just like a limit, but is executed

at market when price is hit. It is NOT synthetic, nor is it a brokers

creation.



The GLBX doesn’t use MITs.


Sam is exactly correct.



Pit traded contracts have MITs, but only at some exchanges. CBOT does not allow MITs, CME does.



Electronic ordering systems such as Globex do not have or support MITs.



This is one reason scalping systems that work in the S&P pit do not work for the electronic trader: MITs in the SP pit average slightly positive slippage over time, rather than getting killed like they do on the EMinis.

Ross,

I would most likely be a subscriber initially around $150 month and would be willing to pay more as the system aged.

So far it looks like a good system and should probably be worth more, but $100 to $200 looks like the sweet spot for getting subcribers on board a promising new system.

Then how does the TB setting to convert limit orders to MIT in X seconds work? Does TB watch the broker quote feed and change the order type when the ask is hit on a buy order and the bid on a sell order (this seemed to be what MK described a few days ago in a post here somewhere).



Would this not mean a cancel and replace sequence by TB? When a C2 system sends new limit orders they show up in my IB account as live at the same speed as any order transmitted through the C2/TB/TWS interface. As far as I can tell these orders are not held by TB because the "convert to MIT" option has been chosen in order for TB to monitor the quote feed. They are live in the brokerage account as soon as they are issued through C2.

Randy,



Yes that’s how it works. It’s safer to have active limits rather than keep them in TB in case the connection to the broker is lost.



The debate was about: what is a ‘real’ MIT order?

TB uses ConvertIfTouched for safety and the exchanges/brokers seem to use a SubmitIfTouched implementation.



Francis

Francis … OK, I was confused about when/where the “conversion” to MIT takes place within TB. If the C2-issued limit orders are sitting live in the brokerage account that is the normal situation and the orders will either be hit, or not, depending on market conditions. Fills in a real account may or may not jive with what C2 shows.



If TB is configured to convert limit orders to MIT within X seconds in the TB Orders tab, an earlier description of this process was that TB continuously watches the quote feed and converts a limit order to MIT in X seconds without waiting for C2 to report a fill, thus eliminating a source of delay (ie. talking back and forth to C2).



There are two separate issues … (1) staying in synch with the C2 system (in which case converting to market only when C2 reports a fill is useful), and (2) getting the best price on the trades and minimizing slippage (where the “local” TB convert to MIT setting may be best). In the first case the subscriber account is only guaranteed to stay in synch with C2 if C2 gets a fill and the real account does not, on the initial limit order. If the real account is filled and C2 doesn’t fill (less common, but does happen) then neither setting will allow a subscriber to stay in synch with the C2 system.



It appears there are delays either way, with the longest delay being waiting for C2 to report a fill before modifying the order. But with only the TB setting to convert limit to MIT you presumably first check on a broker fill for the initial limit order, then do the MIT conversion if there is no fill at the limit price “instantly.” Correct? I don’t see how this can happen without a cancel/replace sequence issued by TB.



I know this question is different from “what is a real MIT”, but for optimizing autotrading settings and staying in synch with C2 (more important for autotrading IMO than getting the best price on trades) it seems waiting on the C2 fill report to convert to market is a better option than the TB setting to convert limit to MIT. What happens if both of these setting are utilized within TB simultaneously?

> TB uses ConvertIfTouched for safety and the exchanges/brokers seem to use a SubmitIfTouched implementation.



A true MIT is "execute if touched". The order has already been submitted

and is in effect.


I know this question is different from "what is a real MIT", but for optimizing autotrading settings and staying in synch with C2 (more important for autotrading IMO than getting the best price on trades) it seems waiting on the C2 fill report to convert to market is a better option than the TB setting to convert limit to MIT. What happens if both of these setting are utilized within TB simultaneously?


The best case for autotrading a limit-order system, given the absence of a Virtual Limit Order option, is to convert without confirmation of a C2 fill. If there is no confirmation of a C2 fill, that means the price has backed off of the limit price and never touched it again. In this case, even if C2 never recognizes the fill you will be at worst breakeven on your fill, and likely show a profit.

If there IS a confirmation of a C2 fill (always delayed), you will have already converted-to-market at a better price than you would get at this point on a per-trade average basis.

Randy,

You wrote



"I know this question is different from “what is a real MIT”, but for optimizing autotrading settings and staying in synch with C2 (more important for autotrading IMO than getting the best price on trades) it seems waiting on the C2 fill report to convert to market is a better option than the TB setting to convert limit to MIT."



I agree. I made the same point yesterday, in the SmarTrade.it forum. Therefore I asked to improve the speed of the option via the C2 fill report. It is logically the only option that can guarantuee that the subscribers portfolio and the C2 portfolie stay synchronized.



You also wrote:



"I don’t see how this can happen without a cancel/replace sequence issued by TB."



I posted a part of the TB log file yesterday. There you can see that this was the sequence:



21:06:34:360 limit price touched, conversion started

21:06:34:375 pending cancel

21:06:34:375 initialized

21:06:34:375 sending new converted order



21:06:35:688 cancelled



Perhaps I do not understand the word “pending”, but this suggests to me that the cancellation order and the converted order are sent at the same time. The confirmation of the cancellation is about one second later. I.e. it seems that TB does not wait until the cancellation is confirmed.



This in turn suggests that, in theory, it is possible that the converted order is sent exactly on the moment that the live limit order is filled. I guess that you will be filled twice in such a case? And perhaps opening a short position after closing a long position? Only Francis can tell us what really happens. I never heard that a situation like this occured, so I assume that either there is some kind of protection against this in TB, or this event is extremely improbable.

Dustin,

We were writing about the same subject at the same time, with opposite conclusions :slight_smile:



Your point is basically that the price will be better if you don’t wait for C2. I agree with that, but the problem is that you will have a position that C2 does not have. So the system won’t give an exit signal. Do you suggest to close that position immediately? That would require manual intervention, so it is not a solution for autotraders.

Jules,



Although I have attempted to auto-trade limit-order systems through other venues, I have not attempted to do so through C2.



Your questions, while I understand and financially relate to them based on my personal history, I can’t specifically answer in regards to C2.



I probably shouldn’t have attempted to answer Randy’s question given that limitation.



That said, things are simple – never trade a limit-order system without manual intervention. The whole point of limit orders is to get a better price – and it works, but ONLY if a trader is manually trading their position.



Now THAT said, if there were a system I liked that utilized limit orders, I would ask that vendor to explore Virtual Limit Orders. In other words, the vendor should keep the limit order local. If it’s hit, they could send a market order for the fill. This puts the onus on the vendor, rather than the subscriber to keep everything sychronized.



I would also submit that if doing so affects hypothetical results dramatically – trying to trade the system in the real world will affect those hypothetical results to a much larger degree.

If TB fills a C2 order before C2, your fill becomes the official C2 fill (if it’s a live account and the fill price is reasonably close to the last price), so you do stay in sync.



While it’s true that an order could be filled at the same time the limit is canceled (good analysis Jules!), it is extremely unlikely. I’ve added a wait-for-cancel-before-converting-to-market feature to the to-do list.



Francis

If you are filled in a real-life account, then C2 will also be filled. It’s not possible that you are filled in real-life and C2 does not fill. Thus, this source of sync problems has been eliminated.

@Dustin:

I probably shouldn’t have attempted to answer Randy’s question given that limitation.



Not at all! As you can infer from the posts of Francis and Matthew, my reply to you was wrong. This side of the problem (subscriber filled, C2 not) is solved. For the other side (C2 filled, subscriber not), I share you original analysis that the MIT option is the best, at least in many cases. However, as far as C2 and the broker have different data, this would still allow the possibility that (a) you miss a winning trade, or (b) the system has an exit at C2, while the subscribers position remains open. To prevent this, one should also use the option “convert to market when C2 reports a fill”. The question is of course how often this happens, and what I read from others is that it happens frequently (it happens to me too, but that may be caused by myself, being too creative with the settings…).



Interesting that you suggest that manual trading is better for limit systems. Several others have suggested that too (Christine and Randy, if I remember correctly). It is a bit disappointing though, since C2 has a big appeal to amateur traders like me, who must rely on autotrading.



@Matthew:

Good to hear that that side of the problem (subscriber filled, C2 not) is solved. Now I can also understand what you wrote in that other thread this week, that we should use the MIT option and that the ‘conversion if C2 is filled’ is only a fail-safe. As far as C2 and the broker have the same data, the MIT option should logically solve the problem.



Nevertheless, (1) it can happen that C2 and the broker do not have the same data, leading to the possibilities (a) and (b) above in my reply to Dustin, and (2) if I read Randy and some others than the problem is not only with limits, but also with stops, and I don’t see how the MIT option can solve that, and (3) even as a fail-safe a higher speed of the ‘conversion if C2 is filled’ won’t harm. So I do still think that a higher speed of the C2 fill reports (from C2 to the subscriber) is worthwhile.



@Francis:

Thanks. But waiting until the cancellation is confirmed would slow down the conversion process, which is the opposite of what we were trying to achieve. Since the event seems to be very unlikely, I would suggest this:



1. Allow the user to fill in a ‘0’ in the MIT option.

2. If the user fills in to wait 1 or more seconds, then TB waits with sending the converted order until the cancellation is confirmed.

3. If the user fills in ‘0’ seconds, then TB sends the converted order immediately, before the cancellation is confirmed. In addition, it would be wise to warn the user when he choses this setting that, although it is unlikely, this might result in double fill.



Perhaps it would also be good to add the feature that in the 0 sec setting, if it happens that both the original limit order and the market order are filled, that a corrective order is sent immediately (e.g. to close half of the double position, or to close the undesired short position). Well, I know, it is easy to come up with all kind of fancy features if you don’t have to program them yourself…



Jules

MK … this isn’t always true. Just a week ago a Pink Tree stop order sat unfilled at C2 for over two hours while the market traded through the price from both sides many times, and by large margins. The vendor sent out an email to everyone notifying of the problem, and it looks like you manually forced a fill about 2 hours and 15 minutes later, but anyone autotrading this system would have been filled in the real account while C2 did not fill the order until much later. I realize this may be a quote feed error or some other error that caused the order not to be filled at C2 during the trading day, but things like this do happen occasionally, for whatever reason, and it is likely to happen again even if the software isn’t supposed to allow it.

Well, I don’t want to argue about technical details, but - on a purely technical level - what happened in the case of the PinkTree system was rather different. There, we had a problem with the c2tray program that is used by the owner of PinkTree to post his TradeStation fill notifications into Collective2. Subsequent to the problem you experienced, we released a new version of c2tray last week (and all c2tray users were auto-upgraded during the course of the week) which seems to have gone a long way to solving this particular problem.



The main point is that C2 handles TradeStation systems a bit differently than other systems (because TradeStation doesn’t “listen” to us… we are forced to do all the listening).



But I’ll stand by my assertion that in theory it’s not possible for an autotrader to be filled without the same fill happening on C2. Of course, when problems happen, all bets are off, but - as you know - we’re constantly working on finding and eliminating these types of problems.

Things are indeed continuously improving and that is good all around, but I wanted to make the point that there are still pretty regular oddball events like the Pink Tree example (and the Why Not one from a few weeks ago with the convert to decimal issue) that can result in subscribers getting filled while C2 does not. These upset the autotrading apple cart along with the many other possibile events than can do the same (server disconnects, bad ticks, etc.) … and things that have nothing to do with C2 such as internet outages, vendor errors entering orders, etc.



With a method in place for subscribers to manually force C2/TB/Broker back into synch it would be possible to fix some of these errors from our side and minimize the time spent monitoring trades through their duration when an aototrading problem does arise.