'pandas_ta parabolic SAR giving wrong values for yfinance

I made a function that uses the psar function from the pandas_ta library. This function seems to work incorrectly, it gives the PSARl, PSARs and PSARr values on the wrong dates. While using an interval of 1 day on BTC-USD I get the following output:

Used function:

psar = df.ta.psar(high=df['High'], low=df['Low'], close=df['Close'], af0=0.02, af=0.02, max_af=0.2)
print(psar)

Output:

            PSARl_0.02_0.2  PSARs_0.02_0.2  PSARaf_0.02_0.2  PSARr_0.02_0.2
Date                                                                       
2021-10-29             NaN             NaN             0.02               0
2021-10-30             NaN    62927.609375             0.02               1
2021-10-31             NaN    62927.609375             0.04               0
2021-11-01             NaN    62813.478125             0.06               0
2021-11-02    59695.183594             NaN             0.02               1
2021-11-03    59695.183594             NaN             0.02               0
2021-11-04    59786.135781             NaN             0.02               0
2021-11-05    59875.268925             NaN             0.02               0
2021-11-06    59962.619406             NaN             0.02               0
2021-11-07    60048.222877             NaN             0.02               0
2021-11-08    60132.114279             NaN             0.04               0
2021-11-09    60433.779395             NaN             0.06               0
2021-11-10    60919.572788             NaN             0.08               0
2021-11-11    61549.176965             NaN             0.08               0
2021-11-12    62128.412808             NaN             0.08               0
2021-11-13    62333.914062             NaN             0.08               0
2021-11-14    62333.914062             NaN             0.08               0
2021-11-15    62850.370938             NaN             0.08               0
2021-11-16             NaN    68789.625000             0.02               1
2021-11-17             NaN    68594.159219             0.04               0
2021-11-18             NaN    68191.009256             0.06               0
2021-11-19             NaN    67492.596279             0.08               0
2021-11-20             NaN    66549.602952             0.08               0
2021-11-21             NaN    65682.049091             0.08               0
2021-11-22             NaN    64883.899538             0.10               0
2021-11-23             NaN    63963.493569             0.12               0
2021-11-24             NaN    62963.805747             0.12               0
2021-11-25             NaN    62084.080463             0.12               0
2021-11-26             NaN    61309.922214             0.14               0
2021-11-27             NaN    60226.300292             0.14               0
2021-11-28             NaN    59294.385438             0.14               0
2021-11-29             NaN    58492.938664             0.14               0

While looking at the yfinance chart for the BTC-USD I should not get a 1 in the PSARr column at 2021-10-30 but I somehow am. It's really random because some values are correct but some of them aren't. What am I doing wrong or is there something wrong within the function?

Thanks!

picture: Yfinance screenshot

Other data:

                    Open          High           Low         Close  \
Date                                                                 
2021-10-29  60624.871094  62927.609375  60329.964844  62227.964844   
2021-10-30  62239.363281  62330.144531  60918.386719  61888.832031   
2021-10-31  61850.488281  62406.171875  60074.328125  61318.957031   
2021-11-01  61320.449219  62419.003906  59695.183594  61004.406250   
2021-11-02  60963.253906  64242.792969  60673.054688  63226.402344   
2021-11-03  63254.335938  63516.937500  61184.238281  62970.046875   
2021-11-04  62941.804688  63123.289062  60799.664062  61452.230469   
2021-11-05  61460.078125  62541.468750  60844.609375  61125.675781   
2021-11-06  61068.875000  61590.683594  60163.781250  61527.480469   
2021-11-07  61554.921875  63326.988281  61432.488281  63326.988281   
2021-11-08  63344.066406  67673.742188  63344.066406  67566.828125   
2021-11-09  67549.734375  68530.335938  66382.062500  66971.828125   
2021-11-10  66953.335938  68789.625000  63208.113281  64995.230469   
2021-11-11  64978.890625  65579.015625  64180.488281  64949.960938   
2021-11-12  64863.980469  65460.816406  62333.914062  64155.941406   
2021-11-13  64158.121094  64915.675781  63303.734375  64469.527344   
2021-11-14  64455.371094  65495.179688  63647.808594  65466.839844   
2021-11-15  65521.289062  66281.570312  63548.144531  63557.871094   
2021-11-16  63721.195312  63721.195312  59016.335938  60161.246094   
2021-11-17  60139.621094  60823.609375  58515.410156  60368.011719   
2021-11-18  60360.136719  60948.500000  56550.792969  56942.136719   
2021-11-19  56896.128906  58351.113281  55705.179688  58119.578125   
2021-11-20  58115.082031  59859.878906  57469.726562  59697.195312   
2021-11-21  59730.507812  60004.425781  58618.929688  58730.476562   
2021-11-22  58706.847656  59266.359375  55679.839844  56289.289062   
2021-11-23  56304.554688  57875.515625  55632.761719  57569.074219   
2021-11-24  57565.851562  57803.066406  55964.222656  56280.425781   
2021-11-25  57165.417969  59367.968750  57146.683594  57274.679688   
2021-11-26  58960.285156  59183.480469  53569.765625  53569.765625   
2021-11-27  53736.429688  55329.257812  53668.355469  54815.078125   
2021-11-28  54813.023438  57393.843750  53576.734375  57248.457031   
2021-11-29  57474.843750  58749.250000  56856.371094  58749.250000   

               Adj Close       Volume  
Date                                   
2021-10-29  62227.964844  36856881767  
2021-10-30  61888.832031  32157938616  
2021-10-31  61318.957031  32241199927  
2021-11-01  61004.406250  36150572843  
2021-11-02  63226.402344  37746665647  
2021-11-03  62970.046875  36124731509  
2021-11-04  61452.230469  32615846901  
2021-11-05  61125.675781  30605102446  
2021-11-06  61527.480469  29094934221  
2021-11-07  63326.988281  24726754302  
2021-11-08  67566.828125  41125608330  
2021-11-09  66971.828125  42357991721  
2021-11-10  64995.230469  48730828378  
2021-11-11  64949.960938  35880633236  
2021-11-12  64155.941406  36084893887  
2021-11-13  64469.527344  30474228777  
2021-11-14  65466.839844  25122092191  
2021-11-15  63557.871094  30558763548  
2021-11-16  60161.246094  46844335592  
2021-11-17  60368.011719  39178392930  
2021-11-18  56942.136719  41388338699  
2021-11-19  58119.578125  38702407772  
2021-11-20  59697.195312  30624264863  
2021-11-21  58730.476562  26123447605  
2021-11-22  56289.289062  35036121783  
2021-11-23  57569.074219  37485803899  
2021-11-24  56280.425781  36635566789  
2021-11-25  57274.679688  34284016248  
2021-11-26  53569.765625  41810748221  
2021-11-27  54815.078125  30560857714  
2021-11-28  57248.457031  28116886357  
2021-11-29  58749.250000  33326104576  


Solution 1:[1]

psar = df.ta.psar(high=df['High'], low=df['Low'], close=df['Close'], af0=0.02, af=0.02, max_af=0.2)
print(psar)

#PSAR r u need

mypsar = pd.DataFrame(psar)["PSARr_0.2_0.2"].iloc[-1] 

            if psar > 0:
                mysartrend = "Bull"
            else:
                mysartrend = "Bear"
print(mysartrend)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 cigien