1

I am trying to get anchored vwap from specific date using pandas_ta. How to set anchor to specific date?

    import pandas as pd
    import yfinance as yf
    import pandas_ta  as ta
    from datetime import datetime, timedelta, date
    import warnings
    import plac
    
    data = yf.download("aapl", start="2021-07-01", end="2022-08-01")
    df = pd.DataFrame(data)
    df1 = df.ta.vwap(anchor = "D")
    df14 = pd.concat([df, df1],axis=1)
    print(df14)
Programmer_nltk
  • 863
  • 16
  • 38

1 Answers1

1

pandas_ta.vwap anchor depending on the index values, as pandas-ta said(reference)

anchor (str): How to anchor VWAP. Depending on the index values, it will implement various Timeseries Offset Aliases as listed here: https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-offset-aliases Default: "D".

In further words, you can't specify a specific date as TradingView did. To anchor a date ourself,

import pandas as pd
import numpy as np
import yfinance as yf
import pandas_ta  as ta

# set anchor date
anchored_date = pd.to_datetime('2022-01-30')

data = yf.download("aapl", start="2022-01-01", end="2022-08-01")
df = pd.DataFrame(data)
df1 = df.ta.vwap(anchor = "D")
df14 = pd.concat([df, df1],axis=1)

# I create a column 'typical_price', it should be identical with 'VWAP_D'
df14['typical_price'] = (df14['High'] + df14['Low'] + df14['Close'])/3
tpp_d = ((df14['High'] + df14['Low'] + df14['Close'])*df14['Volume'])/3


df14['anchored_VWAP'] = tpp_d.where(df14.index >= anchored_date).groupby(df14.index >= anchored_date).cumsum()/df14['Volume'].where(df14.index >= anchored_date).groupby(df14.index >= anchored_date).cumsum()
df14

enter image description here




Plot enter image description here

Baron Legendre
  • 2,053
  • 3
  • 5
  • 22