Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
Execute at vwap field using OHLCVW

Hi! there is any way to execute my orders using the vwap field instead close, open?

I think it is more realistic than slippage or market impacts calculations.

tks.

1 response

One can create a custom VWAP slippage function to use in place of the standard slippage models. The slippage function get's as an input the order object and then outputs the number of shares filled and the price it is filled at. This function is called each minute for every open order.

So, how to create a custom slippage model (https://www.quantopian.com/docs/api-reference/algorithm-api-reference#zipline.finance.slippage.SlippageModel)? The attached algo shows one possible implementation. It uses historical minute volumes (21 days in this example) to calculate the percent of each securities total day volume which was historically traded during each minute. This is sort of a 'traded minute volume profile'. Orders are then 'filled' at the end of the day at a price equal to this average minute volume x actual minute close prices. This is the Volume Weighted Average Price (VWAP) for the day.

There are some caveats with this implementation:

  • currently calculates VWAP for the entire day even if order placed later than market open
  • doesn't check that enough trading volume actually exists each minute
  • requires a fixed slippage be entered by user (could be 0)
  • uses minute close_price * average_volume (for each minute) to determine VWAP (some VWAP calculations use a combo of low, high and close)
  • half day trading is problematic since average_volumes are based on full day numbers
  • there's a small bit of lookahead bias in determining the weights since the volume data includes the current day. This could be fixed by removing the top 390 minutes (ie the current day) from the data.

Use or adapt to fit your needs. Good luck.

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.