riskparity.py

riskparity.py implements fast and scalable algorithms to design risk (budgeting) parity portfolios. The algorithms are based on the works of Spinu (2013), Griveau-Billion et. al. (2013), and Feng & Palomar (2015).

We consider the following optimization problem and its particular cases

\[\begin{split}\begin{array}{ll} \underset{\mathbf{w}}{\textsf{minimize}} & R(\mathbf{w}) - \alpha \mathbf{w}^{\top}\boldsymbol{\mu} + \lambda \mathbf{w}^{\top}\boldsymbol{\Sigma}\mathbf{w}\\ \textsf{subject to} & \mathbf{C}\mathbf{w} = \mathbf{c}, \mathbf{D}\mathbf{w} \leq \mathbf{d} \end{array}\end{split}\]

where \(R\) is a risk concentration function.

Installation

riskparity.py can be installed via pip as:

$ pip install riskparityportfolio

Its development version can be installed as:

$ git clone https://github.com/dppalomar/riskparity.py
$ cd riskparity.py
$ pip install -e .

Dependencies

riskparity.py is built on top of numpy, jax, quadprog, pybind, and tqdm.

R Version

An R version of this package is available at https://github.com/dppalomar/riskParityPortfolio

References

    1. Spinu, “An algorithm for computing risk parity weights”, SSRN, 2013.

    1. Griveau-Billion, J. Richard, and T. Roncalli, “A fast algorithm for computing high-dimensional risk parity portfolios” ArXiv preprint, 2013.

    1. Feng and D. P. Palomar, “SCRIP: Successive convex optimization methods for risk parity portfolios design” IEEE Trans. Signal Process., vol. 63, no. 19, pp. 5285–5300, Oct. 2015.

    1. Richard, and T. Roncalli “Constrained Risk Budgeting Portfolios: Theory, Algorithms, Applications & Puzzles” (February 8, 2019). Available at SSRN: https://ssrn.com/abstract=3331184