Skip to main content

Yet another unofficial Yahoo Finance API, but with concurrent requests

Project description

Pyhoo

Code style: black Checked with mypy Build Status codecov

Yet another unofficial Yahoo Finance API library but with concurrent requests.

Index

  1. Installation
  2. Usage
  3. Troubleshooting
  4. Contributing

Installation

Pyhoo requires Python >= 3.8

pip install pyhoo

Usage

Pyhoo is simple:

import pyhoo

tickers = ['FB', 'AAPL', 'AMZN', 'GOOGL']
start = '2020-02-01'
end = '2020-11-02'

stock_prices = pyhoo.get('chart', tickers, start=start, end=end, granularity="1d")
financial_reports = pyhoo.get('fundamentals', tickers, start=start, end=end)
options = pyhoo.get('options', tickers, strikeMax=400.0)

The result of pyhoo.get is a formatted pandas.DataFrame (here for stock prices):

timestamp high low volume open close adjclose currency symbol exchangeName instrumentType regularMarketPrice ...
0 1580481000 208.69 201.06 31359900 208.43 201.91 201.91 USD FB NMS EQUITY 286.95 ...
1 1580740200 205.14 202.5 15510500 203.44 204.19 204.19 USD FB NMS EQUITY 286.95 ...
2 1580826600 210.6 205.2 19628900 206.62 209.83 209.83 USD FB NMS EQUITY 286.95 ...
3 1580913000 212.73 208.71 12538200 212.51 210.11 210.11 USD FB NMS EQUITY 286.95 ...
4 1580999400 211.19 209.34 10567500 210.47 210.85 210.85 USD FB NMS EQUITY 286.95 ...
5 ... ... ... ... ... ... ... ... ... ... ... ... ...

Pyhoo is fast, it uses concurrency to fire multiple requests at the same time. You can request all the tickers of the S&P500 in one shot.

Pyhoo is still in development, feel free to add more endpoints thanks to the Config object !

Currently, it supports three endpoints:

  1. chart, for OHLC data, basically stock prices
  2. fundamentals, for financial data about the firm, see the list of available reports
  3. options, for detailed information on each call and put at each strike on specific tickers

Troubleshooting

If running from a Jupyter Notebook, you may encounter the following error:

RuntimeError: asyncio.run() cannot be called from a running event loop

This is because Jupyter Notebooks are running themselves in an event loop, and it is a known issue with asyncio.run.

There is a workaround, a bit hacky but gets the job done, using nest_asyncio.

pip install nest_asyncio

Then in the Notebook, before calling pyhoo.get:

import nest_asyncio
nest_asyncio.apply()

And you should be ok !

Contributing

Contributions are welcome !

Pyhoo uses poetry as package manager. You can find the installation instructions here.

It is recommended to install the virtual environment in the project folder if you use VSCode, to help the linter resolve imports:

poetry config virtualenvs.path --unset
poetry config virtualenvs.in-project true

Once Poetry is configured, you can install required dependencies with:

poetry install

The CI enforces strict typing, linting and coverage.

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

pyhoo-0.1.3.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

pyhoo-0.1.3-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file pyhoo-0.1.3.tar.gz.

File metadata

  • Download URL: pyhoo-0.1.3.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.5 Linux/4.15.0-122-generic

File hashes

Hashes for pyhoo-0.1.3.tar.gz
Algorithm Hash digest
SHA256 fae3b76386c599e4e3c963474db63cc2c05ee69a4aa112a303a583ae6e373123
MD5 cef7e09771c1a98e553f520acb2b7456
BLAKE2b-256 3149dc9d495495f74d1b00d7a2559fbf57071a657e0cb1e4b5c02021888adf5d

See more details on using hashes here.

File details

Details for the file pyhoo-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pyhoo-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.5 Linux/4.15.0-122-generic

File hashes

Hashes for pyhoo-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 40ade9d13b0b28d2d2293c9740503df717c3632f9f05664506b39c86a081db68
MD5 028d054eac90d048723de9be5fb743be
BLAKE2b-256 1a581d9939e779c2d5f689129143d1e9b690a18ece041690737bcbcaa702a0da

See more details on using hashes here.

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