yfinance
yfinance copied to clipboard
Incompatibility with talib (expected numpy.ndarray, got DataFrame)
Describe bug
talib cannot accept dataframe as input:
Traceback (most recent call last):
File "/data/1.py", line 7, in <module>
df['SMA_5'] = ta.SMA(df['Close'], timeperiod=5)
File "/data/miniconda3/envs/a/lib/python3.10/site-packages/talib/__init__.py", line 64, in wrapper
result = func(*_args, **_kwds)
TypeError: Argument 'real' has incorrect type (expected numpy.ndarray, got DataFrame)
It works for yf 0.2.44, but not work for 0.2.46+.
Simple code that reproduces your problem
import talib as ta
import yfinance as yf
df = yf.download("MSFT", period='5d')
df['SMA'] = ta.SMA(df['Close'], timeperiod=3)
Debug log
N/A
Bad data proof
No response
yfinance version
0.2.48
Python version
3.10.13
Operating system
Ubuntu 22.04
It works for yf 0.2.44, but not work for 0.2.46+.
Double-check this. I get opposite.
Cause:
After issues #2068 #2100 , yf.download("MSFT") returns by default now a DataFrame with an extra level Ticker
Fix:
Either use
df = yf.download("MSFT", period='5d', multi_level_index=False)
or
df = yf.Ticker("MSFT").history()