pandasyfinancepandas-ta

How to add avwap to pandas_ta?


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)

Solution

  • 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