By far the most daunting hurdle to automated trading that experts and novices alike mention is the handling of orders. That includes when to cancel and replace orders, OCO (one cancels the other), contingencies, handling rejects and of course the dreaded "partial fill". This thread discusses several approaches to solving this problem and will continue with how to handle other hurdles depending on the interest level. The first approach to solving this is: "Signal order handling" That will be covered the next post. Another approach involves using a "Logical Order" Then we can move on to the benefits of combining those together. Slow Response Please be patient with slow response because my ET account has PMs and email notifications disabled to avoid distracting me from coding and working on tickets for members except during builds. I will endeavor to check the thread and respond at least within 24 hours. Sincerely, Wayne
Before diving into "signal order handling" it seems important to mention another directly related hurdle to trading automated. That hurdle involve the process of adapting models to market themes or phases. It seems most of us, at some point, try to build a single strategy or set of rules that adapts to the different phases of a market like trend, chop, or channel. If you ever tried that then you are aware of how painfully complex and confusing that becomes. The approach expounded here on ET by others far wiser than myself is to use multiple, simple models that trade the exact same symbol along with, perhaps, some logic to manage which of them is active. So you may have a moving average model, reversion to mean model, and some other volatility or chop model. Plus you may want multiple of each working in different fractals at the same time. It's rather impressive what happens when you combine together like this while trading a single instrument as long as the models have nearly zero correlation between each other. But if you write all these separate strategies. How do you make them work in a united--combined--operation on the same symbol? Or more specifically how would you ever process that heaping morass of orders from all of them and avoid strange bugs in the code for handling cancels, rejects, and partials? One good answer is Signal Order Handling to be discussed below. The point of this post is that signal order processing solves several distinct hurdles in one swift blow. Another hurdle that it solves is how to trade nested portfolios of models on a single instrument. Tremendous sophistication can arise relatively easily from these simple combined models based on symbol order handling. Sincerely, Wayne
Signal order processing fundamentally means that the platform you use to run your models uses a least common denominator for controlling orders. That least common denominator is simply a value of 0, greater than 0 or less than 0. For example, signal 5 means long 5 contracts. Signal -5 means short 5 contracts. And, of course, signal 0 means flat. This thread can go into greater detail about how you handle buy/sell stop/limit, stop loss, emergency stop as well as combining models on a symbol and portfolio trading based on signal order processing. That is, if anyone posts an interest to get more detail. I will share as long as there is encouragement and/or questions. Sincerely, Wayne
The fundamental concept with signal order handling is the ability to combine the signals of models and even portfolios of models. For example, let's say your trend following strategy is long 1 contract but your channel strategy is short one contract. Well to get the aggregate position desired, you simply take the sum of the signals. So 1 + -1 = 0. So in this situation your overall positions would be flat. If both were long 1 contract then 1 + 1 = 2. (Not rocket science here). When you simply sum the signals of all models or portfolios of models for a single symbol your handling of orders become child's play. You take the latest strategy signal and compare it to the total of your current position and open orders. Let's say your signal indicates to be long 4 contracts and your current positions are 2 contracts plus 1 contract ordered but not yet filled. That mean 4 - 3 = 1 which indicates for the execution components to submit an order to add another long contract. Of course this applies to shares of stock or forex, that's irrelevant. The sum results of all this is that if you have 2 models which each generate a set of sharpe ratios and equity curves, the sharpe scores increase because the equity curve smooths to fit closer to a diagonal line. By equity curves summing, it means that where both models are up $5,000 then the overall total is up $10,000. But if one strategy is in a draw down period with $1,500 down from the recent equity high but the other strategy is up $4,500 for the same period then you have a total of $3,000 gain. Obviously, you can do some interesting analysis on how to manage the aggregate risk involved and avoid or at least control period with both strategies might be in draw down periods at the same time. A variety of techniques exist for enabling/disabling strategies based on the current market themes. That way you reduce the draw down and maximize the profits. After you add several non-correlating strategies, as different time fractals, you can truly move on to ... capital extraction. Of course, developing the software to do all of that can be very time consuming if you have the skills. So it may be better to find a platform that already offers signal order handling. Still you may wonder about writing strategies that only use "market" orders. Or you may ask a related question, "how to use limit, and stop orders in this situation?" How to handle low liquidity markets using signal order handling? More later. Wayne
That's very kind of you. Whenever I check back and find an encouragement or question, I'll add another post. Even though there's much more to the matter of signal order handling. Let's break away for this post to the concept of Logical Orders and return to signal order handling so we can see how those can fit together. Unfortunately, the details of Logical Orders will be limited since the specific implementation within tickzoom is trade secret. But it's possible to discuss the general idea. For those of you that are technical, as in professional programmers, you'll understand the idea of creating an "abstraction layer" between your strategy trading rules and the raw broker orders. In layman terms that simply means that your trading rules never refer directly to simply a Buy Stop. But instead deal with a higher level API which handles much of the "ugliness" of real orders (or signal order handling) behind the scenes Why do this? Well the raw broker orders of Buy/Sell Limit/Stop for example can have many different "logical" meanings which are far easier to manage when thought of and organized by those "logical" concepts. A specific example: A Buy Stop can be either an order to enter the market from a flat position or an order to exit the market from a short position or even to reverse from short. Additionally, it could be a stop loss that can "logically" be thought of as a different order type altogether. Add to that the break even stop and other money management stops like max daily loss and others. That gives a variety of possible uses of a simple "raw" Buy Stop order. In fact, it's possible that you have several Buy Stops active for a variety of those logical order types simultaneously. You see, if your trading rules deal directly with all those different Buy Stops which can be active at the same time, it can become confusing and complex as to which BuyStop does what. Instead, when you use a Logical Order, it becomes more clear. In addition to that, Logical Orders can more easily have "rules" associated with them to create OCO (One Cancels the Other) and Contingency orders. Furthermore, they can have verification rules that help you catch logic errors in your code. Programmers also refer to "strong typing" so that one type of programming object never can get confused with another. You can apply that to Logical Orders as well. As far as Logical Orders go, some say that tickzoom has a game changing API for handling orders that makes it like slicing butter to handle OCO, Contingency, and other rules for many orders of different or the same types all active at once. Now, unless someone has questions, We can leave the subject of Logical Orders. In the next thread, if there's still interest, we can discuss the advantages of combining Logical Orders with Signal Order Handling. If anyone wishes to ask about another specific hurdle to automated trading, please feel free to mention it. If I can't answer it perhaps someone else can.