In the coming weeks we will be changing the default slippage model used to simulate the price at which orders are filled in the live market. Slippage is the difference between the price you see in the market when you place an order and the fill price you actually get. The new model is more accurate and more consistent with the tools we use internally to evaluate algorithms for capital allocations. This model will be the new default in all parts of the Quantopian platform, including backtesting, paper trading, and the upcoming new contest format.
Previously, the default model (the VolumeShareSlippage model) applied slippage to your orders as a function of two input parameters, a price impact constant and a participation volume limit. This model is conceptually sound, but research on our own live trading data has shown it to systematically underestimate slippage in many important cases. This makes some high-turnover strategies look better in simulation than we see in actual trading. For this reason we will be replacing our default model with a new FixedBasisPointsSlippage model. This model takes two input parameters: the impact to apply as a percent of the dollar amount of an order placed and the volume limit which determines how many shares of an order can be filled each minute. Our default will be 5 basis points (0.05%) charged on the order amount in dollars. In this new model, orders will fill at a price that is 0.05% worse than the close price of the minute following the order. Buys will fill at a price that is 0.05% higher than the close of the next minute, while sells will fill at a price that is 0.05% lower. The default volume limit will be 10% of the volume in each minute. An order can fill over multiple minute bars, but will be capped at 10% of the volume each minute. Attached is an implementation of this slippage model that you can use in your algorithms before we change the default.
This model will be more accurate than the old one, particularly for stocks in the QTradableStocksUS. Your backtests will be more in line with our evaluation process, and more predictive of their real-world behavior.
This 5bps fixed slippage model implicitly makes a number of simplifying assumptions, including the following:
- Slippage doesn't vary with time of day. (In reality, slippage is typically worse when spreads are widest, in the first 30 minutes of the day.)
- Slippage is the same in all stocks. (In reality, slippage is typically more severe in illiquid, thinly traded stocks.)
- Slippage doesn't vary with participation rate. (In reality, slippage is more severe with high participation rates. Quantopian uses execution tactics and order types that are designed to spread your order out over time, lowering the participation rate and decreasing slippage costs.)
We are actively working on addressing each of these aspects in a next generation market impact model that is still in the research and validation phase.
|Returns||1 Month||3 Month||6 Month||12 Month|
|Alpha||1 Month||3 Month||6 Month||12 Month|
|Beta||1 Month||3 Month||6 Month||12 Month|
|Sharpe||1 Month||3 Month||6 Month||12 Month|
|Sortino||1 Month||3 Month||6 Month||12 Month|
|Volatility||1 Month||3 Month||6 Month||12 Month|
|Max Drawdown||1 Month||3 Month||6 Month||12 Month|
def initialize(context): # Initialize slippage settings given the parameters of our model set_slippage(slippage.FixedBasisPointsSlippage())