I’m finalizing a strategy whose profits (success) all depend on how ‘bad’ slippage is (the difference between a buy order ASK and what it actually gets filled at).
Does anyone know just how accurate the slippage is on paper trading vs. real trading?
Is it safe to assume that it will always be ‘worse’ in real trading than in paper trading?
Are there any techniques you guys implement to mitigate ‘slippage’?
I’m thinking my only solution is to re-think the strategy and make my buys all limit orders (as opposed to stop orders) but very curious if anyone has experience with this.
You will always have slippage, the question you should be able to answer is how much slippage you can deal with. If you want to avoid slippage i would definitely recommend using limit orders.
Where possible I always try to use limit orders. In the past I have experienced some very bad slippage from market orders. For most stocks, a limit order will guard against slippage, but it will still probably get filled relatively quickly.
- We aim for the paper and live trading environments to be equivalent, however, the environments are not always the same. Therefore the slippage portrayed in the paper trading environment is not entirely reflective of what might occur in the live trading environment. Here is additional information https://alpaca.markets/docs/trading-on-alpaca/paper-trading/
- When orders are eligible to be filled (in paper-trading), they will receive partial fills for a random size 10% of the time( See above link). Depending on the liquidity/order size/order type of the asset you are trading the differences might be in or against your favor.
- I know Quantopian had some slippage models in their documentation. Perhaps you can use these as a jumping point. https://www.quantopian.com/help#ide-slippage
Please let me know if you have any additional questions,
Looks like I will most likely switch over to limit orders for my buys.
But hypothetically speaking, would looking at the level 2 be a viable strategy in preventing slippage? Looking to see if there are enough orders to ‘cushion’ a market order (and if not, either don’t buy or switch to a limit)
No, level 2 will not likely help in preventing slippage. Level 2 addresses the depth of the market if you are getting slippage due to lack of liquidity - are you trading larger than the liquidity provided by the top bid/ask for your market? If you’re trading small, level 2 will not help.
Switching from MKT to LMT orders will get you better fills along with plenty of potential NO FILLS - of course, NO FILLS will happen for those fast run-way markets when you’d prefer to pay for slippage just to be in the market. With LMTs you will also guaranteed to be filled when the market moves against you (by definition, when an opposite MKT order lifts/hits your LMT order).
This is why HFT firms spend millions on low latency hardware and location.
For us small traders, most slippage comes from network latency and hidden dark pools (intermediate liquidity providers, which we can’t do anything about without direct market access, but then you have to pay commissions).
So do be extra careful if your algorithm is extra sensitive to slippage - you are essentially competing with HFT firms - which can be very costly if your setup isn’t up to par.
That quantopian link is broken. Any other info you can point me to regarding modelling slippage?
I know some of Quantopian material is archived here, perhaps you can find information on slippage there
If not there is material on slippage across internet like here for instance https://quantatrisk.com/2013/01/26/slippage-in-model-backtesting/
Thanks Jason. These links are wonderful. It occurs to me after reading Pawel’s ‘Slippage in Model Backtesting’ article, I can simulate slippage by using the closing price of the most recent one-minute bar for modelling purposes.
This electronic communication and accompanying documents (attachments) are protected by the First and Fourth Amendments and may contain confidential and legally privileged information that is intended only for the named individual e-mail addresses. If you are not the intended recipient, notify the sender and delete the message from your system. Disclosure, copying, printing, distribution, action, or reliance upon the contents of this e-mail message is strictly prohibited. Government must first obtain a warrant before accessing this email, attachments, or sent emails stored with cloud service providers.
I’ve been live trading for about 3 months. My algo trades twice a week and holds about 10 positions. When it trades it uses market orders to close positions (to ensure fill) and limit orders set a tad below market price to open positions.
The fudge factor on the limit buys attempts to mitigate slippage. Of course this comes at the risk of reducing my fill %. After three months this approach appears to be working fine. My current live results match my backtests, although the time period is too short to draw definite conclusions.
Just another idea for you.