Skip to main content

Smart caching wrapper for 'yfinance' module

Project description

yfinance-cache

Caching wrapper for yfinance module. Intelligent caching, not dumb caching of web requests:

  • If requested data not in cache, yfinance is called
  • If all requested data is in cache, return that
  • If some in cache but some missing, ask yfinance for the missing data

Additional logic decides if cached data needs refresh.

Interface

Interaction is almost identical to yfinance. Differences are highlighted underneath code:

import yfinance_cache as yf

msft = yf.Ticker("MSFT")

# get stock info
msft.info

# get historical market data
hist = msft.history(period="max")
...
# etc. See yfinance documentation for full API

Refreshing cache

msft = yf.Ticker(interval="1d", max_age=datetime.timedelta(hours=1), ...)

max_age controls when to refresh cached data to avoid spam. If market is still open and max_age time has passed since last fetch, then today's cached price data will be refreshed. Defaults to half of interval. Refresh also triggered if market closed since last fetch.

Adjusting price

Price can be adjusted for stock splits, dividends, or both. yfinance only allows control of dividends adjustment via auto_adjust. How Yahoo adjusts for dividends is slightly mysterious so djusted prices are slightly different to Yahoo (tiny relative error ~1e-7)

msft = yf.Ticker(..., adjust_splits=True, adjust_divs=True)

Installation

Now available on PIP. But requires 'development' versions of yfinance and exchange_calendars (hopefully soon changes merged into main) - I advise against messing with PIP for these, instead used sys.path or PYTHONPATH:

Known issues / pending tasks

  • Considering adding a 'verify' function, checking all cached data against Yahoo.
  • Add refresh check to financials data, then to earnings dates.

Limitations

Code is being actively developed so some features missing:

  • only price data is checked if refresh needed
  • Tickers class and download() not available - use Ticker.history()
  • pre/post price data not available

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yfinance-cache-0.2.4.tar.gz (74.6 kB view hashes)

Uploaded Source

Built Distribution

yfinance_cache-0.2.4-py3-none-any.whl (94.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page