Fixes: - price repair #2111 #2139 - download() appearance 2109 - isin() error #2099 - growth_estimates #2127 Also new docs #2132
Fix prices-clean rarely discarding good data #2122
Add yf.download(multi_level_index)
Fix regression in 0.2.45 #2094
Features: - Screener #2066 @ericpien Fixes - Tickers keyerror #2068 @antoniouaa - IndexError in some history() debug messages #2087 - improve dividend repair #2090 Maintenance - fix unit tests contextual imports #2067 - fix typos #2072 @algonell - add Pyright type checking #2059 @marco-carvalho
Features: - fetch funds #2041 - fetch sector & industry #2058 Fixes: - improve dividend repair #2062
Fix price-repair bug introduced in 0.2.42 #2036
Features: - fetch SEC filings #2009 - fetch analysis #2023 @Fidasek009 - price repair extended to dividends & adjust #2031 Fixes: - fix error on empty options chain #1995 @stevenbischoff - use dict.get() to safely access key in Holders #2013 @ericpien - fix datetime conversion with mixed timezones when ignore_tz is False #2016 @mreiche - handle faulty response object when getting news. #2021 @ericpien Maintenance: - prices: improve exceptions and logging #2000
Improvements: - add keys to financials #1965 #1985 - fetch Sustainability #1959 - improve price-repair-zeroes #1990 Fixes (prices): - fetching when period='max' #1967 - metadata: Fix '1wk is invalid' & repeated calls #1970 - Pandas warnings #1955 #1981 - price repair syntax errors #1989 Maintenance: - deprecate Ticker.earnings #1977
Fix typo in 0.2.39 c7af213
Fixes: - Fix switching session from/to requests_cache #1930 Price repair: - Fix potential for price repair to discard price=0 rows #1874 - Don't price-repair FX volume=0, is normal #1920 - Improve 'sudden change' repair for splits & currency #1931 Information: - Fix help(yf.download) not showing the information about the function #1913 @vittoboa - Add more specific error throwing based on PR 1918 #1928 @elibroftw @marcofognog Maintenance: - Replace dead 'appdirs' package with 'platformdirs' #1896 - Deprecate 'pandas_datareader', remove a deprecated argument #1897 - Fix: datetime.datetime.utcnow() is deprecated ... #1922
Fix holders & insiders #1908
Small fixes: - Fix Pandas warnings #1838 #1844 - Fix price repair bug, typos, refactor #1866 #1865 #1849 - Stop disabling logging #1841
Small fixes: - Update README.md for better copy-ability #1823 - Name download() column levels #1795 - Fix history(keepna=False) when repair=True #1824 - Replace empty list with empty pd.Series #1724 - Handle peewee with old sqlite #1827 - Fix JSON error handling #1830 #1833
Internal fixes for 0.2.34
Features: - Add Recommendations Trend Summary #1754 - Add Recommendation upgrades & downgrades #1773 - Add Insider Roster & Transactions #1772 - Moved download() progress bar to STDERR #1776 - PIP optional dependencies #1771 - Set sensible min versions for optional 'nospam' reqs #1807 Fixes - Fix download() DatetimeIndex on invalid symbols #1779 - Fix invalid date entering cache DB #1796 - Fix Ticker.calendar fetch #1790 - Fixed adding complementary to info #1774 - Ticker.earnings_dates: fix warning "Value 'NaN' has dtype incompatible with float64" #1810 - Minor fixes for price repair and related tests #1768 - Fix price repair div adjust #1798 - Fix 'raise_errors' argument ignored in Ticker.history() #1806 Maintenance - Fix regression: _get_ticker_tz() args were being swapped. Improve its unit test #1793 - Refactor Ticker proxy #1711 - Add Ruff linter checks #1756 - Resolve Pandas FutureWarnings #1766
Cookie fixes: - fix backup strategy #1759 - fix Ticker(ISIN) #1760
Add cookie & crumb to requests #1657
- Fix TZ cache exception blocking import #1705 #1709
- Fix merging pre-market events with intraday prices #1703
- Fix OperationalError #1698
- Fix pandas warning when retrieving quotes. #1672
- Replace sqlite3 with peewee for 100% thread-safety #1675
- Fix merging events with intraday prices #1684
- Fix error when calling enable_debug_mode twice #1687
- Price repair fixes #1688
- Fix TypeError: 'FastInfo' object is not callable #1636
- Improve & fix price repair #1633 #1660
- option_chain() also return underlying data #1606
Bug fixes: - fix merging 1d-prices with out-of-range divs/splits #1635 - fix multithread error 'tz already in cache' #1648
Proxy improvements - bug fixes #1371 - security fix #1625
Fix single ISIN as ticker #1611 Fix 'Only 100 years allowed' error #1576
Fix info[] missing values #1603
Fix 'Unauthorized' error #1595
Fix unhandled 'sqlite3.DatabaseError' #1574
Fix financials tables #1568 Price repair update: fix Yahoo messing up dividend and split adjustments #1543 Fix logging behaviour #1562 Fix merge future div/split into prices #1567
Switch to logging module #1493 #1522 #1541 Price history: - optimise #1514 - fixes #1523 - fix TZ-cache corruption #1528
Fix 'fast_info' error '_np not found' #1496 Fix bug in timezone cache #1498
Fix prices error with Pandas 2.0 #1488
Fix 'fast_info deprecated' msg appearing at Ticker() init
Restore missing Ticker.info keys #1480
Fix Ticker.info dict by fetching from API #1461
Price bug fixes: - fetch big-interval with Capital Gains #1455 - merging dividends & splits with prices #1452
Disable annoying 'backup decrypt' msg
Fix history_metadata accesses for unusual symbols #1411
General - allow using sqlite3 < 3.8.2 #1380 - add another backup decrypt option #1379 Prices - restore original download() timezone handling #1385 - fix & improve price repair #1289 2a2928b 86d6acc - drop intraday intervals if in post-market but prepost=False #1311 Info - fast_info improvements:
- add camelCase keys, add dict functions values() & items() #1368
- fix fast_info["previousClose"] #1383
- catch TypeError Exception #1397
- Fix fast_info bugs #1362
- Fix Yahoo decryption, smarter this time #1353
- Rename basic_info -> fast_info #1354
- Fix Ticker.basic_info lazy-loading #1342
- Fix Yahoo data decryption again #1336
- New: Ticker.basic_info - faster Ticker.info #1317
- Fix Yahoo data decryption #1297
- New feature: 'Ticker.get_shares_full()' #1301
- Improve caching of financials data #1284
- Restore download() original alignment behaviour #1283
- Fix the database lock error in multithread download #1276
- Make financials API '_' use consistent
- Restore 'financials' attribute (map to 'income_stmt')
Release!
- Improve financials error handling #1243
- Fix '100x price' repair #1244
- Access to old financials tables via get_income_stmt(legacy=True)
- Optimise scraping financials & fundamentals, 2x faster
- Add 'capital gains' alongside dividends & splits for ETFs, and metadata available via history_metadata, plus a bunch of price fixes
For full list of changes see #1238
Financials - fix financials tables to match website #1128 #1157 - lru_cache to optimise web requests #1147 Prices - improve price repair #1148 - fix merging dividends/splits with day/week/monthly prices #1161 - fix the Yahoo DST fixes #1143 - improve bad/delisted ticker handling #1140 Misc - fix 'trailingPegRatio' #1138 - improve error handling #1118
Jumping to 0.2 for this big update. 0.1.* will continue to receive bug-fixes - timezone cache performance massively improved. Thanks @fredrik-corneliusson #1113 #1112 #1109 #1105 #1099 - price repair feature #1110 - fix merging of dividends/splits with prices #1069 #1086 #1102 - fix Yahoo returning latest price interval across 2 rows #1070 - optional: raise errors as exceptions: raise_errors=True #1104 - add proper unit tests #1069
- Fix unhandled tz-cache exception #1107
- Fix download(ignore_tz=True) for single ticker #1097
- Fix rare case of error "Cannot infer DST time" #1100
- Fix when Yahoo returns price=NaNs on dividend day
- Fix download() when different timezones #1085
- Fix user experience bug #1078
- Fixed datetime-related issues: #1048
- Add 'keepna' argument #1032
- Speedup Ticker() creation #1042
- Improve a bugfix #1033
- Fixed bug introduced in 0.1.73 (sorry :/)
- Merged several PR that fixed misc issues
- Misc bugfixs
- Added Tickers(…).news()
- Return empty DF if YF missing earnings dates
- Fix EPS % to 0->1
- Fix timezone handling
- Fix handling of missing data
- Clean&format earnings_dates table
- Add
.get_earnings_dates()
to retrieve earnings calendar - Added
.get_earnings_history()
to fetch earnings data
- Bug fixed - Closes #937
- Bug fixed - #920
- Upgraded requests dependency
- Removed Python 3.5 support
- Added legal disclaimers to make sure people are aware that this library is not affiliated, endorsed, or vetted by Yahoo, Inc.
- Merged PR to allow yfinance to be pickled
- Merged PRs to fix some bugs
- Added lookup by ISIN
utils.get_all_by_isin(...)
,utils.get_ticker_by_isin(...)
,utils.get_info_by_isin(...)
,utils.get_news_by_isin(...)
yf.Ticker
,yf.Tickers
, andyf.download
will auto-detect ISINs and convert them to tickers- Propagating timeout parameter through code, setting request.get(timeout)
- Adds
Ticker.analysis
andTicker.get_analysis(...)
- Merged PRs to fix some bugs
- Added
Ticker.stats()
method - Added
Ticker.news
property - Providing topHoldings for ETFs
- Replaceed drop duplicate prices with indexes
- Added pre-market price to
Ticker.info
- Duplicates and missing rows cleanup
- Added UserAgent to all requests (via
`utils.user_agent_headers`
)
- Switched to using
`query2.finance.yahoo.com`
, which used HTTP/1.1
- Gracefully fail on misc operations (options, auto/back adjustments, etc)
- Added financial data to
`info()`
- Using session headers
- Get price even if open price not available
- Argument added for silencing error printing
- Merged PRs to fix some bugs
- Added custom requests session instance support in holders
- Allow specifying a custom requests session instance
- Added Conversion rate hint using 'financialCurrency' property in earnings
- Add important try+catch statements
- Fixed issue with 1 hour interval
- Merged PRs to fix some bugs
- Fixed issue with special characters in tickers
- Updated numpy version
- Merged PRs to fix some bugs
- Fixed institutional investors and mutual fund holders issue (#459)
- Fix for UTC timestamps in options chains (#429)
- ISIN lookup working with intl. tickers
- Added
Ticker.isin
+Ticker.get_isin(...)
. This is still experimental. Do not rely on it for production. - Bug fixed: holders were always returning results for MSFT
- Improved JSON regex parsing
- Added holdings data (
Ticker.major_holders
andTicker.institutional_holders
) - Added logo url to
Ticker.info
- Handling different date formats in fundamentals
- Faster JSON parsing using regex
- Trying to re-download JSON twice before giving up
- Using ujson instead of json if installed
- Fixed (more)
ticker.info
issues - Misc bugfixes
- Fixed
ticker.info
issues - Handle sustainability index error
- Added test script based on @GregoryMorse's pull request
- Fixed
elementwise comparison
warning
- Fixed issues related to non-publicly traded tickers (crypto, currency, etc)
- Fixed options-related bug that was caused by code refactoring
- Rerwote all fundamental-related methods, which now support quarterly financials, cashflow, balance sheets, and earnings, analysts recommendations, and earnings calendar data
- Code refactoring
- Added sustainability data/error handling for ETF/MF (by GregoryMorse)
- Avoid rounding the values retrieved from Yahoo by default (by aglebov)
- Added 'rename=True' for the namedtuple (raffieeey)
- Improved
Tickers
module (see #86) - Misc bugfixes
- Bugfixes
- Fix data realignment when Yahoo returns with missing/malform data
- Added methods for downloading option chain
- Fixed issue related to threads when downloading many symbols
- Fix issue relared to missing data
- Added
Ticker('XXX').financials
,Ticker('XXX').balance_sheet
, andTicker('XXX').cashflow
- Proxy can be used when downloading actions
- Making sure tickers are always uppercase
- Added Tickers to
__all__
- Updated readme to reflect current library structure
- Overriding old
pandas_datareader.data.DataReader
when callingpdr_override()
Tickers()
returns a named tuple ofTicker()
objects
- Package renamed to
yfinance
- Added option to specify proxy server
- Updated requirements
- Intercept yahoo "site down" message
- Better period handling
- Threading is True by default
- Better error handling
- Better error handling
- Updated min. versions for requirements
- Include ticker in error message if error is raised
- Fixed Yahoo!'s 30m bars being returned as 60m/15m
- Fixed issue with Pandas "DataFrame constructor not properly called!"
- If
threads
is set to True, it will default to number of tickers (max = @ of CPU cores)
- Threading defaults to
False
- Threading is back :)
- Fixed weird bug with Yahoo!, which is returning 60m interval when requesting for 30m interval, by requesting 15m interval and resampling the returned data
Ticker.history()
auto-adjusts data by default
- Bugfixs
- Round prices based on metadata decimals
- Setting Volume colume as np.int64 dtype to avoid integer overflow on Windows
- Works with v8 API
- Introduced Ticker module
- Complete re-write of the entire code
- Skipped a bunch of version :)
- Deprecated Panel support
- Code cleanup
- Fixed issue with progress bar (issue #42)
- Misc bugfixes
- Minor Bugfixes
- Added deprecation warning for future versions regarding auto-overriding pandas_datareader
- Handles duplicate index
- Progress bar bugfix
- Bugfix (closing issue #11)
- Added support for Python 2.7
- Confirming valid data returned before adding it to
_DFS_
- Removed debugging code
- Minor bug fix (closing #6)
- Downloads ONLY dividend and stock splits data using
actions='only'
)
- Downloads dividend and stock splits data (use
actions=True
)
- Add
threads
parameter todownload()
(# of threads to use)
- Removed 5 second wait for every failed fetch
- Reduced TTL for Yahoo!'s cookie
- Keeps track of failed downloads and tries to re-download all failed downloads one more time before giving up
- Added progress bar (can be turned off using
progress=False
)
pandas_datareader
is optional (can be called viadownload()
or viapdr.get_data_yahoo()
)- Tries to re-fetch Yahoo cookie in case of timeout/error
- Forcing index to be of datetime type
- Works using
requests
= no need for Selenium, PyVirtualDisplay, or Chrome Driver
- Removed ALL debugging code :)
- Removed debugging code
- Option to explicitly specify the location of the Chrome driver
- Initial release (alpha)