Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
Help with buying stocks

Dear All,
I have very simple algorithm, that buys few stocks after time_rule=time_rules.market_open(minutes=2) but when I run backtest i notice that buying of TTGT stock happens in steps between 9:44 and 10:55. I don't understand what are the reasons for this and is there way to avoid this ?

thank you very much for your help.

4 responses

So I have the same problem and I think it is related to the fact that you are buying shares of quite small companies. Can anyone explain if this is the case? Also, are the data for the backtest the real data in terms of real availability of stock to buy at any given minute? So if I was buying stocks for real at the time I would have the same problem.

Nevertheless, I would like to know how to schedule a command that runs REALLY just once/at given minute if schedule_function obviously does not achieve that. (For instance, I order to buy 2000 USD and it can only buy 500 the next minute? - Buy only once and stope there!). Thanks!

I tried to use the code here: https://www.quantopian.com/posts/how-to-cancel-all-open-orders to cancel all open order one minute after my order function is schedule to make sure that there is only one order action per stock. It did not work too well and might not be the most elegant solution...

I believe algorithms are currently limited to purchasing 2.5% of the volume at any given time step during the backtest. For low liquidity stocks that means you're going to take some time, perhaps multiple days, to fill your order. In real live trading for a thinly traded stock buying at market value would move the price of the stock. A backtest can't simulate such price moves, naturally. Also, it means that if a stock in the historical record isn't traded right at the moment you've placed your order, you're going to have to wait for the tick where it is next traded to be able to purchase anything.

Hope that helps.

Sunil

Your code is behaving as expected, I believe, and it's helping you to learn some things about the market and how it can work.

You're placing the order once per day, as intended. As was suggested above, however, the order is filling over several minutes. You're ordering a relatively large amount of the stock and the default slippage model only let's you get 2.5% of the volume in any given minute.

You can override the default slippage model and simply ignore the problem . That's a reasonable choice if you have reason to believe that the slippage model is too restrictive for this particular situation.

What's probably better, though, is to use the Pipeline API to define your list of stocks to be traded, and tell pipeline to omit securities with low trading volumes.

You also can cancel open orders that are partially filled, but that's not likely to be the solution to your problem either.

Disclaimer

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.