# Yahoo! Finance market data downloader
=====================================


Ever since `Yahoo! finance <https://finance.yahoo.com>`_ decommissioned
their historical data API, many programs that relied on it to stop working.

**yfinance_ez** aimes to solve this problem by offering a reliable
and Pythonic way to download historical market data from Yahoo! finance.


Note from Ezra:

This library was originally created by Ran Aroussi and named ``yfinance``. I encountered
some bugs using it and wasn't able to reach him about updating his package, so I've
renamed it for now to yfinance-ez so I can work on it. I've done some significant restructuring
and added improved documentation, but the credit for much of the html parsing code is not mine.
I've also pared down the package to focus just on the Ticker
class and its functionality which I've gotten working.

## Quick Start

### The Ticker module

The ``Ticker`` module, which allows you to access
ticker data in amore Pythonic way:

```python

    import yfinance_ez as yf

    msft = yf.Ticker("MSFT")

    # get stock info
    msft.info

    # get historical market data for the last quarter
    # This method also accepts start and end dates and/or time intervals
    # so you can customize what you're looking for.
    hist = msft.get_history(period=yf.TimePeriods.Quarter)

    # show actions (dividends, splits) for the last retrieved historical period
    msft.actions

    # show dividends for the last retrieved historical period
    msft.dividends

    # show splits for the last retrieved historical period
    msft.splits

    # show financials
    msft.financials
    msft.quarterly_financials

    # show major holders
    msft.major_holders

    # show institutional holders
    msft.institutional_holders

    # show balance heet
    msft.balance_sheet
    msft.quarterly_balance_sheet

    # show cashflow
    msft.cashflow
    msft.quarterly_cashflow

    # show earnings
    msft.earnings
    msft.quarterly_earnings

    # show sustainability
    msft.sustainability

    # show analysts recommendations
    msft.recommendations

    # show next event (earnings, etc)
    msft.calendar

    # get option chain for specific expiration
    opt = msft.option_chain('YYYY-MM-DD')
    # data available via: opt.calls, opt.puts
```

If you want to use a proxy server for downloading data, use:

```python

    import yfinance_ez as yf

    msft = yf.Ticker("MSFT", proxy="PROXY_SERVER")
```

If you want to get history data for multiple tickers using async, use:

```python

    import yfinance_ez as yf

    async def get_history_multiple_tickers(ticker_symbols: List[str],
                                           **kwargs) -> List[yf.Ticker]:

    tickers = [yf.Ticker(ticker_symbol) for ticker_symbol in ticker_symbols]

    await asyncio.gather(
        *[ticker.get_history_async(**kwargs) for ticker in tickers])

    return tickers
```

## Installation


Install `yfinance_ez` using `pip`:

```bash
    $ pip install yfinance_ez
```

## Requirements

* `Python <https://www.python.org>`_ >= 3.5+
* `Pandas <https://github.com/pydata/pandas>`_ (tested to work with >=0.23.1)
* `Numpy <http://www.numpy.org>`_ >= 1.11.1
* `requests <http://docs.python-requests.org/en/master/>`_ >= 2.14.2

## Legal Stuff

**yfinance_ez** is distributed under the **Apache Software License**. See the `LICENSE.txt <./LICENSE.txt>`_ file in the release for details.


## P.S.

Please drop me an note with any feedback you have.

**Ezra Schiff**
