Python client for Finnhub API


Keywords
api-client, crytocurrencies, economic-data, finance, financial-data, financial-indicators, financial-markets, finnhub, forex, forex-trading, pandas-dataframe, pandas-python, python, quantitative-finance, real-time, stock-market, timeseries
License
Apache-2.0
Install
pip install fhub==0.0.13

Documentation

Fhub

Python client for Finnhub API

Python version PyPi version License Apache 2.0 Status contributions welcome

A pythonic way to use the Finnhub data API.

This package is still in a very early stage of development, so it is still incomplete and may contain bugs. It should only be used to test its functionality.

Installation

pip install fhub

Quick start

You need a Finnhub API Key, you can get free one, at https://finnhub.io. For some data a premium account is necessary.

from fhub import Session
hub = Session("your_finnhub_api_key_here")

# Download prices time serie of Tesla.
tsla = hub.candle('TSLA')

# Download prices for several tickers from a date.
data = hub.candle(['AMZN', 'NFLX', 'DIS'], start="2018-01-01")

# Download prices and bollinger bands indicator for several tickers.
data = hub.indicator(['AAPL', 'MSFT'], start='2019-01-01', indicator='bbands',
                 indicator_fields={'timeperiod': 10})

Real-time subscription via Finnhub's websocket is easy using fhub, even using custom functions for each tick received.

from fhub import Subscription
from time import sleep

def price_monitor(ticker):
    # Callback function receive a ticker object
    # calculate the average of the last 30 ticks using the ticker history
    average = ticker.history.price.tail(30).mean().round(2)
    # display the price and the calculated average
    print (f'{ticker.symbol}. Price: {ticker.price} Average(30) : {average}')
    # show a message if price is over its average
    if ticker.price > average:
        print(f'{ticker.symbol} is over its average price')
    return

# Create a subscription and connect
subs = Subscription("your_finnhub_api_key_here")
# A list of the symbols to which to subscribe is passed
# Created function  is assigned as a callback when a new tick is received
subs.connect(["BINANCE:BTCUSDT", "IC MARKETS:1", "AAPL"],
             on_tick=price_monitor
            )

# Subscription is maintained for 20 seconds and then closed.
for f in range(20):
    sleep(1)
subs.close()

See more examples of use at quick_start notebook

Documentation

Official documentation of the API REST of Finnhub:

https://finnhub.io/docs/api

Most of the functions available in the REST API have been implemented.