ranaroussi / yfinance

Download market data from Yahoo! Finance's API
https://aroussi.com/post/python-yahoo-finance
Apache License 2.0
14.89k stars 2.44k forks source link

Displaying price and volume with a plotly chart is bugged in version yfinance==0.2.48 #2119

Open MaximilianFreitag opened 1 week ago

MaximilianFreitag commented 1 week ago

Describe bug

yfinance version ... yfinance==0.2.48 environment google colab

If you want to display the price and volume over time of a certain stock ticker the code does not reproduces the same results as in previous yfinance version. See code example

Simple code that reproduces your problem

code simply displays the price and volume of Tesla

after you've run the code restart the kernel and change the yfinance version to !pip install yfinance==0.2.47 to see that #this fixes the problem

!pip install yfinance==0.2.48 import yfinance as yf import plotly.graph_objects as go from datetime import datetime, timedelta

start_date = '2023-01-01'
end_date = datetime.now().strftime('%Y-%m-%d')

data = yf.download("TSLA", start=start_date, end=end_date)

fig = go.Figure() fig.add_trace(go.Scatter(x=data.index, y=data['Close'], name='Price')) fig.add_trace(go.Bar(x=data.index, y=data['Volume'], name='Volume', yaxis='y2'))

fig.update_layout( title='TSLA Price and Volume', yaxis_title='Price', yaxis2=dict(title='Volume', overlaying='y', side='right'), xaxis=dict( rangeselector=dict( buttons=list([ dict(count=1, label="1m", step="month", stepmode="backward"), dict(count=3, label="3m", step="month", stepmode="backward"), dict(count=6, label="6m", step="month", stepmode="backward"), dict(count=1, label="YTD", step="year", stepmode="todate"), dict(count=1, label="1y", step="year", stepmode="backward"), dict(step="all") ]) ), rangeslider=dict(visible=True), type="date" ) ) fig.show()

print(yf.version)

Debug log

DEBUG Entering download() DEBUG:yfinance:Entering download() DEBUG Disabling multithreading because DEBUG logging enabled DEBUG:yfinance: Disabling multithreading because DEBUG logging enabled DEBUG Entering history() DEBUG:yfinance: Entering history() DEBUG Entering _fetch_ticker_tz() DEBUG:yfinance: Entering _fetch_ticker_tz() DEBUG Entering get() DEBUG:yfinance: Entering get() DEBUG Entering _make_request() DEBUG:yfinance: Entering _make_request() DEBUG url=https://query2.finance.yahoo.com/v8/finance/chart/TSLA DEBUG:yfinance: url=https://query2.finance.yahoo.com/v8/finance/chart/TSLA DEBUG params=frozendict.frozendict({'range': '1d', 'interval': '1d'}) DEBUG:yfinance: params=frozendict.frozendict({'range': '1d', 'interval': '1d'}) DEBUG Entering _get_cookie_and_crumb() DEBUG:yfinance: Entering _get_cookie_and_crumb() DEBUG cookie_mode = 'basic' DEBUG:yfinance: cookie_mode = 'basic' DEBUG Entering _get_cookie_and_crumb_basic() DEBUG:yfinance: Entering _get_cookie_and_crumb_basic() DEBUG fetched basic cookie = <Cookie A3=d=AQABBKA0L2cCEE1e05jvPT8ruI6YyALs_jYFEgEBAQGGMGc5Z9xT0iMA_eMAAA&S=AQAAAvny0wTW1KSO2Do0qcUIK6M for .yahoo.com/> DEBUG:yfinance: fetched basic cookie = <Cookie A3=d=AQABBKA0L2cCEE1e05jvPT8ruI6YyALs_jYFEgEBAQGGMGc5Z9xT0iMA_eMAAA&S=AQAAAvny0wTW1KSO2Do0qcUIK6M for .yahoo.com/> DEBUG reusing cookie DEBUG:yfinance: reusing cookie DEBUG crumb = 'UGDMfqi49g4' DEBUG:yfinance: crumb = 'UGDMfqi49g4' DEBUG Exiting _get_cookie_and_crumb_basic() DEBUG:yfinance: Exiting _get_cookie_and_crumb_basic() DEBUG Exiting _get_cookie_and_crumb() DEBUG:yfinance: Exiting _get_cookie_and_crumb() DEBUG response code=200 DEBUG:yfinance: response code=200 DEBUG Exiting _make_request() DEBUG:yfinance: Exiting _make_request() DEBUG Exiting get() DEBUG:yfinance: Exiting get() DEBUG Exiting _fetch_ticker_tz() DEBUG:yfinance: Exiting _fetch_ticker_tz() DEBUG Entering history() DEBUG:yfinance: Entering history() DEBUG TSLA: Yahoo GET parameters: {'period1': '2023-01-01 00:00:00-05:00', 'period2': '2024-11-09 00:00:00-05:00', 'interval': '1d', 'includePrePost': False, 'events': 'div,splits,capitalGains'} DEBUG:yfinance: TSLA: Yahoo GET parameters: {'period1': '2023-01-01 00:00:00-05:00', 'period2': '2024-11-09 00:00:00-05:00', 'interval': '1d', 'includePrePost': False, 'events': 'div,splits,capitalGains'} DEBUG Entering get() DEBUG:yfinance: Entering get() DEBUG Entering _make_request() DEBUG:yfinance: Entering _make_request() DEBUG url=https://query2.finance.yahoo.com/v8/finance/chart/TSLA DEBUG:yfinance: url=https://query2.finance.yahoo.com/v8/finance/chart/TSLA DEBUG params=frozendict.frozendict({'period1': 1672549200, 'period2': 1731128400, 'interval': '1d', 'includePrePost': False, 'events': 'div,splits,capitalGains'}) DEBUG:yfinance: params=frozendict.frozendict({'period1': 1672549200, 'period2': 1731128400, 'interval': '1d', 'includePrePost': False, 'events': 'div,splits,capitalGains'}) DEBUG Entering _get_cookie_and_crumb() DEBUG:yfinance: Entering _get_cookie_and_crumb() DEBUG cookie_mode = 'basic' DEBUG:yfinance: cookie_mode = 'basic' DEBUG Entering _get_cookie_and_crumb_basic() DEBUG:yfinance: Entering _get_cookie_and_crumb_basic() DEBUG reusing cookie DEBUG:yfinance: reusing cookie DEBUG reusing crumb DEBUG:yfinance: reusing crumb DEBUG Exiting _get_cookie_and_crumb_basic() DEBUG:yfinance: Exiting _get_cookie_and_crumb_basic() DEBUG Exiting _get_cookie_and_crumb() DEBUG:yfinance: Exiting _get_cookie_and_crumb() DEBUG response code=200 DEBUG:yfinance: response code=200 DEBUG Exiting _make_request() DEBUG:yfinance: Exiting _make_request() DEBUG Exiting get() DEBUG:yfinance: Exiting get() DEBUG TSLA: yfinance received OHLC data: 2023-01-03 14:30:00 -> 2024-11-08 14:30:00 DEBUG:yfinance: TSLA: yfinance received OHLC data: 2023-01-03 14:30:00 -> 2024-11-08 14:30:00 DEBUG TSLA: OHLC after cleaning: 2023-01-03 09:30:00-05:00 -> 2024-11-08 09:30:00-05:00 DEBUG:yfinance: TSLA: OHLC after cleaning: 2023-01-03 09:30:00-05:00 -> 2024-11-08 09:30:00-05:00 DEBUG TSLA: OHLC after combining events: 2023-01-03 00:00:00-05:00 -> 2024-11-08 00:00:00-05:00 DEBUG:yfinance: TSLA: OHLC after combining events: 2023-01-03 00:00:00-05:00 -> 2024-11-08 00:00:00-05:00 DEBUG TSLA: yfinance returning OHLC: 2023-01-03 00:00:00-05:00 -> 2024-11-08 00:00:00-05:00 DEBUG:yfinance: TSLA: yfinance returning OHLC: 2023-01-03 00:00:00-05:00 -> 2024-11-08 00:00:00-05:00 DEBUG Exiting history() DEBUG:yfinance: Exiting history() DEBUG Exiting history() DEBUG:yfinance: Exiting history() DEBUG Exiting download() DEBUG:yfinance:Exiting download()

Bad data proof

!pip install yfinance==0.2.48

Bildschirmfoto 2024-11-09 um 11 09 37

!pip install yfinance==0.2.47

Bildschirmfoto 2024-11-09 um 11 12 46

yfinance version

0.2.48

Python version

newest

Operating system

macOS

ValueRaider commented 1 week ago

Probably duplicate of https://github.com/ranaroussi/yfinance/issues/2101#issuecomment-2452982908

ValueRaider commented 9 hours ago

Is this fixed now?