pyfolio is a Python library for performance and risk analysis of financial portfolios developed by Quantopian Inc. It works well with the Zipline open source backtesting library.
At the core of pyfolio is a so-called tear sheet that consists of various individual plots that provide a comprehensive image of the performance of a trading algorithm. Here's an example tear sheet, which comes from the Zipline algorithm sample notebook:
See also slides of a recent talk about pyfolio.
For development on pyfolio itself, you might want to use a virtual environment to avoid dependency conflicts between pyfolio
and other python projects you have. To get set up with a virtual env, run:
mkvirtualenv pyfolio
before running the install commands below.
To install pyfolio
via pip
issue the following command:
pip install pyfolio
For development, clone the git repo and run python setup.py develop
and edit the library files directly. Make sure to reload or restart
the IPython kernel when you make changes.
pyfolio
has the following dependencies:
- numpy
- scipy
- pandas
- matplotlib
- seaborn
- pymc3 (optional)
- zipline (optional; requires master, not 0.7.0)
Some of Pyfolio's functionality, such as the Bayesian tearsheet, requires PyMC3 and Theano. To get set up, you can run:
pip install theano
pip install git+https://github.com/pymc-devs/pymc3
If you are on OSX and using a non-framework build of python you may need to set your backend:
echo "backend: TkAgg" > ~/.matplotlib/matplotlibrc
A good way to get started is to run the examples in a Jupyter notebook.
To get set up with an example, you can:
Run a Jupyter notebook server via:
jupyter notebook
From the notebook list page(usually found at http://localhost:8888/
), navigate over to the examples directory, and open any file with a .ipynb extension.
Execute the code in a notebook cell by clicking on it and hitting Shift+Enter.
If you find a bug, feel free to open an issue on our github tracker.
You can also join our mailing list.
If you want to contribute, a great place to start would be the help-wanted issues.
- Gus Gordon (gus@quantopian.com)
- Justin Lent (justin@quantopian.com)
- Sepideh Sadeghi (sp.sadeghi@gmail.com)
- Thomas Wiecki (thomas@quantopian.com)
- Jessica Stauth (jstauth@quantopian.com)
- Karen Rubin (karen@quantopian.com)
- David Edwards (dedwards@quantopian.com)
- Andrew Campbell (andrew@quantopian.com)
For a full list of contributors, see https://github.com/quantopian/pyfolio/graphs/contributors.