What is the correct way to calculate VWAP and is Average Price the same as VWAP?

Hi team,

We're trying to build a VWAP based strategy in Python and for that we're calculating VWAP using the formula given below;

Σ (Volume x Price) / Σ (Volume)

After testing this across multiple stocks and across multiple timeframes, we've observed that the VWAP value calculated using the formula above does not match the VWAP value that is plotted on Kite charts (VWAP indicator line).

We know that Average Traded Price (ATP) is already provided as part of the quote packet structure but there seems to be a lot of confusion about whether ATP is the same as VWAP? General observation shows that ATP (in market depth) and VWAP (on charts) are different values for most of the time.

It'd be really helpful if someone here could help us out in calculating the correct VWAP value which matches with the VWAP value plotted on the charts.

@sujith @Kailash @Vivek @tonystark @rakeshr

Also, we've already referred the following threads related to this topic but haven't got a satisfactory answer;

  • tahseen
    @shashanks Use Candle Close of the time frame
  • v_siva008
    Hi @shashanks ,

    If you are still looking for an answer on getting the accurate values for vwap as seen zerodha charts, then try using the below.

    For this you would required historical data.

    import ta #ta library
    data['vwap'] = ta.volume.volume_weighted_average_price(data['high'], data['low'], data['close'], data['volume'], window=90, fillna=True)
  • Vivdroid
    @v_siva008 , i used the above code. It is showing the correct value only for the first day of the month. After the first day, the values of vwap are not correct
  • vaibhavsharma13
    @shashanks VWAP will differ with different time intervals. For example, if you compare VWAP of 1 min candles with 3min candles, results will vary. I think tick by tick data give the most accurate VWAP.
  • harishgowda
    lst += [live_data[i]["average_price"]]
    , use the above for VWAP calculation
Sign In or Register to comment.