Simulating slippage

Modified on Mon, 24 Apr 2017 at 03:01 AM

The Tick Data Suite allows you to simulate slippage in your backtests similarly to how slippage often occurs in your live account.


You may notice that the Slippage tab in your Tick data settings dialog is initially greyed out. To access it, you have to activate the Enable slippage checkbox - once you did that, the tab will become available and give you access to the advanced slippage settings.


Very important: with Tick Data Suite versions 2.2.0 and below, you must configure your EA to allow slippage larger than that configured in the Slippage tab of the Tick data settings dialog. Failure to do so will result in lots of OrderSend error 138 (requote) messages in your backtest log and likely incorrect backtest results. Starting from Tick Data Suite v2.2.1, requotes are disabled unless specifically configured otherwise which can be done by enabling the Enforce OrderSend() slippage parameter checkbox in the Misc tab of the Tick data settings dialog.


You can typically configure the maximum slippage in an EA by means of an external parameter. If the max slippage is not available as an external parameter, you can modify every OrderSend() call in the source code to use a given slippage and recompile the EA. If the source code is not available, you should contact the EA vendor - ask them to make the maximum slippage available as an external setting.


Default behavior


By default, if slippage is enabled and no settings are changed, each trade will have a slippage between -10 points and 10 points with a 50% chance of the slippage being in your favor. It is advisable to get some data regarding slippage on your account and configure the slippage settings accordingly. Some EAs will provide this data automatically.


This support article will go through the slippage configuration and explain each setting that you can adjust.


General slippage options


  • Reproducible slippage is the option that controls the randomness of the slippage. If this option is enabled, running the same backtest twice will result in the same slippage for each trade. If the option is disabled, each time you run a backtest the results will be slightly different. By default this is enabled.
  • Optimization slippage controls whether slippage will occur during optimizations. I strongly recommend against enabling this because it does not provide an even footing for each optimization pass. Optimization slippage is disabled by default
    Very important: when optimization slippage is disabled but slippage is enabled, double-clicking an optimization pass and running a backtest with those settings will yield different results from those obtained in the optimization pass due to slippage
  • Limit order slippage allows enabling or disabling slippage for limit orders. Enabled by default.
  • Stop order slippage allows enabling or disabling slippage for stop orders. Enabled by default.
  • Take profit order slippage allows enabling or disabling slippage when a TP hit occurs. Some brokers guarantee TP orders, if you wish to emulate such a broker you should disable this. It is enabled by default.
  • Stop loss order slippage allows enabling or disabling slippage when a SL hit occurs. Some brokers guarantee SL orders, if you wish to emulate such a broker you should disable this. It is enabled by default.

Dealer-style slippage


This type of slippage attempts to emulate to a certain degree the slippage produced when the broker uses the Virtual Dealer plugin.


  • Max favorable controls the maximum slippage that can occur in the trader's favor (positive slippage).
  • Max unfavorable controls the maximum slippage that can occur against the trader (negative slippage).
  • Slippage chance affects the chance of each trade to have slippage. If the checkbox next to this setting is disabled, all trades will have slippage. Note that even if all the trades are set to have slippage, some of them will not have slippage (they will actually have a slippage of 0 pips).
  • When slippage occurs, the Favorable chance setting affects the chance of the slippage to be in the trader's favor. If the checkbox next to this setting is disabled, the slippage will simply be randomly generated within the given slippage range. For example, if you configured slippage between -20 and 10 points, you will see negative slippage for about 66% of the trades.


For each order that is executed, a number of points will be randomly generated using the configured settings. The order price will be adjusted by the number of points generated.

Standard deviation slippage


If you have a series of slippage figures recorded, it's quite easy to put them in an Excel and run the AVERAGE() and STDEV() functions to obtain the mean respectively the variance.

Using this slippage type generates slippage for each trade that follows a normal (Gaussian) distribution with the specified mean and standard deviation. If you plot the probability density of the generated slippage you will get a nice bell-shaped curve, please see the Wikipedia Normal distribution article for more information.


Execution delay slippage


Since this is a more complex topic, it is extensively covered in a separate support article: please see Using execution delay slippage for detailed information.