Back to Community
What average trade (like 0.1%) is realistic for quantopian strategy?

Say if my backtest with minutes data shows +0.1% as average trade - is it realistic to catch it in real life because of slippage, etc. (liquid SP500 stocks, each trade, say, $10k, position is opened for about 30 minutes)?

12 responses

Pretty hard to say, but after slippage, commissions and covering the bid ask spread, I'm not sure 0.1% is enough. More capital will help water down the effect of commissions but will increase slippage. There is an ideal balance you want to have between the two and that is difficult to find with out live trading. If you focus on stocks with a good amount of depth you should be able to use a higher capital base to drown out commission with out being affected by slippage too much, making a 0.1% return profitable. This is the basis of how many HFT's make money, it's all about market depth.

0.1% is actually after commissions. To be more precise I have a strategy with high statistics for last 7 years (say Sharpe about 5. In 2008 it had very good average per trade but currently historical backtest shows about 0.1% profit per trade (so profit decreases over time and I don't know what to deal with it for now). I think that guys with servers near stock exchanges can catch this profit (and even less) but it is possible to be profitable in real life for guy who writes strategies here on Quantopian without money he can spend on infrastructure? So the only infrastructure is Quantopian basically or own program which can connect to IB. So the question is if I send Market order to buy and Market order to sell in minutes based strategy in Quantopian type environment - would it be okay? Would it make sense to go live with strategy like this?
What average trade pro-people expect from successful intraday strategy?

At some point, the only way to know for sure is to test it with real money. But before that point:

  • Have you verified the slippage model is appropriately affecting prices for your situation for your simulated fills? The default slippage model is generic, and you might be able to make a more accurate backtest by tweaking the slippage model.
  • Have you verified that the commission amount was right?
  • Do you understand "why" your algo makes money? Do you have a hypothesis that is being fulfilled by the backtest? Does that hypothesis include milliseconds-to-market type information flow?

The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by Quantopian. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. No information contained herein should be regarded as a suggestion to engage in or refrain from any investment-related course of action as none of Quantopian nor any of its affiliates is undertaking to provide investment advice, act as an adviser to any plan or entity subject to the Employee Retirement Income Security Act of 1974, as amended, individual retirement account or individual retirement annuity, or give advice in a fiduciary capacity with respect to the materials presented herein. If you are an individual retirement or other investor, contact your financial advisor or other fiduciary unrelated to Quantopian about whether any given investment idea, strategy, product or service described herein may be appropriate for your circumstances. All investments involve risk, including loss of principal. Quantopian makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances.

I don't really understand how slippage affecting prices. I mean slippage should be different even for different times of the day and execution engine.
I would think that in the morning when market is opening slippage can be big - if you get a price at 9:31AM and you think this price is good but your trade is sent for execution only at 9.32AM - slippage can be huge (minute is a lot in the morning hours). But if you send an order right away - slippage can be different but still big and still fluctuate a lot from the average. But say in the middle of trading day market is not too fast (in average) and slippage can be not too big or even close to zero.

So maybe another question can be about Quantopian engine. If I receive a minute 'event' and my algo decide to buy - will it be 'executed' in backtest using current price or next minute price?

But this question is not going to answer my original question. Yes, I have calculated commissions right. And strategy has it's rational. I don't think it uses 'milliseconds-to-market' type of information. Average holding period is about 30minutes...

Also it would be very helpful to have Average holding time, Average trade parameters in the statistics information.

It would be useful for the community to see these parameters for Competition Winners as well.
It is possible to have very big Sharpe for strategy with huge number trades per day comparing to strategy which has 1 trade per several days. But it would make an average trade lower and make real life Sharpe very different from backtest Sharpe. So it would be helpful for the community to see how Sharpe is changing from backtest to even paper trading depending on average trade.

I think the answer to this largely depends on how many parameters your model has, and how long you've spent tweaking it. If your first attempt had 0.1% average trade, that's very promising, but if you got it up to 0.1% after extensive tuning of dozens of parameters, it's probably just over-fitted. It also makes a huge difference if you're doing a lot of shorting in the algorithm since that could easily swallow up a lot of the return.

Safest thing to do is immediately start paper trading it in an Interactive Brokers paper trading account and see how it does with their assumptions.

Thanks Simon for answer!
It is hard to say if I over-fitted it actually. I have worked on the strategy for couple of years (sing of over-fitting?). But the rough version of it just takes Sp500 list and decides what to trade and when to trade by itself (yes, list is filtered to have only stocks which are in the list for last 7 years, which is a flag for bias). Yes I calculated some parameters about 1.5 years ago which helps to decide (mostly correlators between stocks) but all parameters are the same for all stocks and are not changing over time (about 5 of them). This 'clean' version has an average trade 0.07% and makes about 50 trades per day (different SP500 stocks, one stock trades only once per day), holding time is between 20-50 minutes, no stop-losses and profit-targets at all (to make the strategy as clean as possible). All trades are long for this strategy to simplify things.
Of course I can introduce stop-loss or I can filter SP500 list to get, say, best 100 stocks but I am not very sure if I over-fit strategy in this step. I am trying to figure out potential first.

May I ask you to explain what you mean by 'a lot of shorting in the algorithm since that could easily swallow up a lot of the return'? Do you mean interest for shorting? I think IB don't charge for intraday shorting. Or you mean something different?

BTW, I know that you won context last month. Would it appropriate to ask you what was your average trader/average holding time in backtesting? But feel free to ignore it if you don't feel comfortable about this. I will totally understand this!

Ah yeah I trade is perhaps free.

As for mine, it's more of a continuous portfolio allocation, so I don't know how I'd break out individual trade statistics for that one. Sorry!

For yours, I would say put it in IB paper trading for a few months, if it makes 50 trades a day you should have a very good idea if it's going to work after that? Sounds promising to me!

About paper-trading. I don't think it will work if I run strategy from home's Shaw Internet. My ping is not consistent at all and sometimes have up to 1sec response time to google server. I know this is not a minute at all but I am not sure my engine survive it. it throws an exception sometimes in such situations, this is third party engine which I don't control and it needs lots of resources to listen tick data for all SP500 stocks. It needs tick data to 'build' minutes in real-life. Actually for IB each 'tick' is about 150ms as I rememer right - so it is a bit easier but still a problem.
Anyway, what I am trying to say that having paper-trading account for few months will need up to $300-500/ month and for strategy. And in real life it needs (in 'clean' version) about 50*$10k under management (if each trade is $10k). Having lower trade will make commissions bigger and average trade lower.
But maybe you are right - maybe I need to find money to learn some information from paper-trading.

Do you have a Quantopian backtest showing the 0.1% or only in your own system?

Does your own backtester use bid/ask data to simulate fills, or does it fill at a trade price?

My algo developed in Ninja Trader, similar product to Quantopian (hope it is allowed to pronounce it here). It uses Last trade price to 'build' minutes data. But I think Last price is different for different data providers. Say IB sends data only each 150ms and I am not sure how they calculate the price. I think it can be an average price for all trades for this 150ms interval.