Skip to main content

Finance Plot

Finance Plotter, or finplot, is a performant library with a clean api to help you with your backtesting. It's optionated with good defaults, so you can start doing your work without having to setup plots, colors, scales, autoscaling, keybindings, handle panning+vertical zooming (which all non-finance libraries have problems with). And best of all: it can show hundreds of thousands of datapoints without batting an eye.

Features

  • Great performance compared to mpl_finance, plotly and Bokeh
  • Clean api
  • Works with both stocks as well as cryptocurrencies on any time resolution
  • Show as many charts as you want on the same time axis, zoom on all of them at once
  • Auto-reload position where you were looking last run
  • Overlays, fill between, value bands, symbols, labels, legend, etc.
  • Can show real-time updates.

feature1 feature2 feature3

What it is not

finplot is not a web app. It does not help you create an homebrew exchange. It does not work with Jupyter Labs. It does not have a save screen shot function. It only shows time-based charts, i.e. no order depth, no trades, no tickers.

It is only intended for you to do backtesting in. That is not to say that you can't create these things yourself. The library is based on the eminent pyqtgraph, which is fast and flexible, so feel free to hack away if that's what you want.

Easy installation

$ pip install finplot

Example

It's straight-forward to start using. This shows every daily candle of Apple since the 80'ies:

import finplot as fplt
import yfinance

df = yfinance.download('AAPL')
fplt.candlestick_ochl(df[['Open', 'Close', 'High', 'Low']])
fplt.show()

Example 2

sample

This 25-liner pulls some BitCoin data off of Bittrex and shows the above:

import finplot as fplt
import numpy as np
import pandas as pd
import requests

# pull some data
symbol = 'USDT-BTC'
url = 'https://bittrex.com/Api/v2.0/pub/market/GetTicks?marketName=%s&tickInterval=fiveMin' % symbol
data = requests.get(url).json()

# format it in pandas
df = pd.DataFrame(data['result'])
df = df.rename(columns={'T':'time', 'O':'open', 'C':'close', 'H':'high', 'L':'low', 'V':'volume'})
df = df.astype({'time':'datetime64[ns]'})

# create two plots
ax,ax2 = fplt.create_plot(symbol, rows=2)

# plot candle sticks
candles = df[['time','open','close','high','low']]
fplt.candlestick_ochl(candles, ax=ax)

# overlay volume on the top plot
volumes = df[['time','open','close','volume']]
fplt.volume_ocv(volumes, ax=ax.overlay())

# put an MA on the close price
fplt.plot(df['time'], df['close'].rolling(25).mean(), ax=ax, legend='ma-25')

# place some dumb markers on low wicks
lo_wicks = df[['open','close']].T.min() - df['low']
df.loc[(lo_wicks>lo_wicks.quantile(0.99)), 'marker'] = df['low']
fplt.plot(df['time'], df['marker'], ax=ax, color='#4a5', style='^', legend='dumb mark')

# draw some random crap on our second plot
fplt.plot(df['time'], np.random.normal(size=len(df)), ax=ax2, color='#927', legend='stuff')
fplt.set_y_range(-1.4, +3.7, ax=ax2) # hard-code y-axis range limitation

# restore view (X-position and zoom) if we ever run this example again
fplt.autoviewrestore()

# we're done
fplt.show()

Realtime updating with realistic indicator

Included in this repo are a 40-liner Bitfinex example and a slightly longer BitMEX websocket example, which both update in realtime with Bitcoin/Dollar pulled from the exchange. They also shows realistic and useful indicators (TD Sequential for BFX and Bollinger Bands for BitMEX). The S&P500 example shows you how to display MACD.

Enjoy!

Metadata

Release files for finplot 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for finplot 0.9.0
File Size Uploaded
finplot-0.9.0.tar.gz 26.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for finplot 0.9.0
File Interpreter ABI Platform
finplot-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 53.3 kB

Release files / finplot-0.9.0.tar.gz

Download URL finplot-0.9.0.tar.gz
Size 26.2 kB
Tags Source
SHA-256 checksum
How to use checksums
b30f7b0e06a3aaaa7e81f916dcf5f5cbda5976069e0fb8b3c59a8b97219e3651
BLAKE2b-256 checksum
How to use checksums
bbf888fd6a56801e25248181483fb807124cefdb3e9c121f8934b13b12d18b5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.6

Release files / finplot-0.9.0-py3-none-any.whl

Download URL finplot-0.9.0-py3-none-any.whl
Size 27.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
488da927b93427ec7905ee5c1bbef6f11b3799854b02ed0564a44d650d22d66e
BLAKE2b-256 checksum
How to use checksums
76210414d94449fd7bb8933a5b37d3f24b16e037b7ac064f4f9ebe6bfd20f6aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.6

Release history Release notifications | RSS feed

1.9.7

2 release files

1.9.6

2 release files

1.9.5

2 release files

1.9.4

2 release files

1.9.3

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.4

2 release files

1.8.3

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8

2 release files

1.7

2 release files

1.6

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.6

3 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.2

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page