Plotting package for Backtrader (Bokeh)
Project description
backtrader_plotting
Library to add extended plotting capabilities to backtrader
(https://www.backtrader.com/). Currently the only available backend is Bokeh
(https://bokeh.org/).
Features
- Interactive plots
- Interactive
backtrader
optimization result browser (only supported for single-strategy runs) - Highly configurable
- Different skinnable themes
- Easy to use
Feel free to test it and play with it. I am happy about feedback, critics and ideas on backtrader forum (and also in GitHub issues): https://community.backtrader.com/topic/813/bokeh-integration-interactive-webbrowser-plotting
Needs Python >= 3.6.
Demos
https://verybadsoldier.github.io/backtrader_plotting/
Installation
pip install backtrader_plotting
Quickstart
from backtrader_plotting import Bokeh from backtrader_plotting.schemes import Tradimo <your backtrader code> b = Bokeh(style='bar', plot_mode='single', scheme=Tradimo()) cerebro.plot(b)
Minimal Example
import datetime import backtrader as bt from backtrader_plotting import Bokeh class TestStrategy(bt.Strategy): params = ( ('buydate', 21), ('holdtime', 6), ) def next(self): if len(self.data) == self.p.buydate: self.buy(self.datas[0], size=None) if len(self.data) == self.p.buydate + self.p.holdtime: self.sell(self.datas[0], size=None) if __name__ == '__main__': cerebro = bt.Cerebro() cerebro.addstrategy(TestStrategy, buydate=3) data = bt.feeds.YahooFinanceCSVData( dataname="datas/orcl-1995-2014.txt", # Do not pass values before this date fromdate=datetime.datetime(2000, 1, 1), # Do not pass values after this date todate=datetime.datetime(2001, 2, 28), reverse=False, ) cerebro.adddata(data) cerebro.run() b = Bokeh(style='bar', plot_mode='single') cerebro.plot(b)
Plotting Optimization Results
Another way to use this package is to use the OptBrowser
to browse a backtrader
optimization result:
... cerebro.optstrategy(TestStrategy, buydate=range(1, 10, 1)) cerebro.addanalyzer(bt.analyzers.SharpeRatio) ... res = cerebro.run() bo = Bokeh() browser = OptBrowser(bo, result) browser.start()
This will start a Bokeh application (standalone webserver) displaying all optimization results. Different results can be selected and viewed.
It is possible possible to add further user-provided columns. When dealing with huge amounts of optimization results the number of results can be limited and the remaining results can be sorted by a user-provided function to allow for simple selection of the best results.
Documentation
Please refert to the Wiki for further documentation: https://github.com/verybadsoldier/backtrader_plotting/wiki
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size backtrader_plotting-1.1.0-py3-none-any.whl (62.5 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size backtrader_plotting-1.1.0.tar.gz (31.6 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for backtrader_plotting-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7988e5e6ad199a67255cabefef9df87f26d8aadeeb3bf62f8c77f379fd6ec9ca |
|
MD5 | 1d873498981b90f293f75792d8eb7713 |
|
BLAKE2-256 | 77c35e2913a965e27b9fe4d45092dca3a2e87bd528032496583fd96e54ced136 |
Hashes for backtrader_plotting-1.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96d4eb68db78a3c7bf736ba9e71c90dd3c75f3e6efa2efb48205614a922c3069 |
|
MD5 | bee50a2515e9eb69d506337c938419d1 |
|
BLAKE2-256 | 4057b415a31216456fc383faffb2188042e206847e0a3ea422442c6470d365b2 |