So what is slippage? And why is it so important to trading system performance? When a system is being traded in real time by a live person, slippage is the difference between where a computerized trading system thinks it got filled, and the actual fill received by someone following that system. When we’re talking about running a computerized trading system’s code back in time on historical data, slippage is a small adjustment made to each trade in that backtest which is meant to simulate the difference between where the computer signals a trade entry and where actual clients, with actual money, would have entered and exited the market using the computer’s signals.
But shouldn’t the computer-reported profit and the profit in actual client accounts be one and the same, you ask? That would be nice, and that is what many unscrupulous brokers and others selling trading systems would like for you to believe; but the truth is that there will always be a difference between the prices where the computer generates the signals and the prices actual clients using actual money get.
This is because trading systems are reactive – working off of the last tick in the data. The last tick reported by the exchange is not necessarily the next tick an investor trading the system will receive, however; given investors must buy the offer and sell the bid. As a refresher, traders wishing to buy submit bids, or what they’re willing to pay, and traders wishing to sell submit offers for what price they are willing to sell at. A trade is done when a trader’s bid matches another trader’s offer, enabling them to buy and sell to each other at the agreed upon price. This agreed upon price is the “last price” reported by the exchange and the price a trading system uses to generate its buy and sell signals. Of course, the whole process happens near the speed of light at times in the real world, with traders frantically moving, canceling, and initiating bids and offers nearly every second.
So slippage is a function of the spread between the bid and ask price of the market you are utilizing. For example, the average spread between the bid (the highest price someone is willing to buy at) and offer (the lowest price someone is willing to sell at) in the emini S&P 500 futures market is around 1 tick or 1/4 of a full point. Slippage on a market or stop order in the emini S&P, therefore, can be estimated to be 1/4 a full point, or 1 ticks, or $12.50 per side, and $25 per R/T (two sides). In a market like Palladium with much less volume, the spread between the bid and ask may be something more like 20 ticks and you could be looking at upwards of $100 in slippage per side.
There is also the size of your order to consider. Consider again the emini S&P futures, which have thousands of contracts bid and offered on each side of the last price at seemingly all times of the day. In such a case, hundreds of contracts could be done at the bid or offer price without the market having to rise or fall to find additional takers for your order. Contrast that with the aforementioned Palladium market, whereby there may be only 10 contracts or so bid and offered within a handful of ticks of the last price. Doing 100 contracts in that case would mean the market would need to move up or down (depending on whether you are trying to buy or sell) to find more bids and offers to fill your order. The less contracts that are bid or offered at each level, the more the market needs to move to fill your multiple contract order. If you have unlimited funding, try putting in a 10 or 20 contract order in the overnight electronic Palladium futures and you will quickly see this theory in practice (my guess is Palladium would rise 1% or so on the order, with you getting filled at the high price).
As we saw with the flash crash, when some High Frequency Trading firms pulled their bids out of the market, if there are no bids for what you are trying to sell, that item will go down to the lowest possible bid (in the case of the flash crash, that bid was $0.01 for some stocks). Those who tried to sell a stock at $40 and were filled at $0.01 saw $39.99 of slippage that day (those trades were eventually cancelled)
To arrive at the slippage estimates above, we took a multi-level approach where three separate factors of each market were considered in addition to the external factor of how many contracts need to be executed. First, we considered the depth of each market by looking at the average volume per 25 ticks. Second, we considered the volatility of each market by looking at the average true range (in ticks). And third, we considered the average spread between the bid and ask for each market based on our past experience. Finally, we used a simple sizing algorithm to generate the number of contracts to be traded based on the daily ATR, risk budget of 1%, and equity of $1 Million. Each separate factor calculated a slippage number based on its numbers, and the slippage of each factor was averaged to arrive at our final estimate.
You can see that the estimates are anything but uniform across markets, with slippage essentially equal to the minimum movement (1 tick per side *2 sides = 2 ticks) in the very large volume markets like emini S&P, EuroDollars, 10yr Bonds, and the EuroBund and up to 15 ticks in lower volume markets like Feeder Cattle and Heating Oil.