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. You will need my fork of yfinance on branch 'integrate' - this has various essential fixes (eventually will merge upstream): https://github.com/ValueRaider/yfinance/tree/integrate

To override PIP install of yfinance:

import sys
sys.path.insert(0, "path/to/my/fork/of/yfinance")
import yfinance as yf
import yfinance_cache as yfc
print(yf) # verify loading my fork of version yfinance

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.0.tar.gz (52.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yfinance_cache-0.2.0-py3-none-any.whl (71.2 kB view details)

Uploaded Python 3

File details

Details for the file yfinance-cache-0.2.0.tar.gz.

File metadata

  • Download URL: yfinance-cache-0.2.0.tar.gz
  • Upload date:
  • Size: 52.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for yfinance-cache-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c885ab32c011f775189cc739d7d2d9dac7b4580440887e2362b21250ded6439b
MD5 06f808786663354964c29671e78554d1
BLAKE2b-256 9593f4e147f8098627298770d105525c5a81a3b6898aee5480974c6f7c80e136

See more details on using hashes here.

File details

Details for the file yfinance_cache-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: yfinance_cache-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 71.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for yfinance_cache-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d365cb1193d17b113791e1e2e5575fc3c0634a79490729ef2bd7cdd5dc396e4c
MD5 44e40a57469cf1057c5ca67a1e0c7b58
BLAKE2b-256 51b6618e70723d4e52d4e10cafdbfcf35a7cc8949ea4c3aa7f4ade06a6b53a08

See more details on using hashes here.

Supported by

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