\( \newcommand{\bm}[1]{\boldsymbol{#1}} \newcommand{\textm}[1]{\textsf{#1}} \def\T{{\mkern-2mu\raise-1mu\mathsf{T}}} \newcommand{\R}{\mathbb{R}} % real numbers \newcommand{\E}{{\rm I\kern-.2em E}} \newcommand{\w}{\bm{w}} % bold w \newcommand{\bmu}{\bm{\mu}} % bold mu \newcommand{\bSigma}{\bm{\Sigma}} % bold mu \newcommand{\bigO}{O} %\mathcal{O} \renewcommand{\d}[1]{\operatorname{d}\!{#1}} \)

1.8 Code examples

This book is supplemented with a large number of code examples in R and Python that can reproduce all the figures in the book. These supplementary resources are available on the companion website for the book.

Generally speaking, the resolution of all the portfolio optimization formulations covered in the book can be approached in a variety of ways, namely:

  • Using a software package or library specifically designed to optimize portfolios under a wide variety of formulations and constraints. Examples include the popular R package fPortfolio (Wuertz et al., 2023) and the Python libraries Riskfolio-Lib (D. Cajas, 2023) and PyPortfolioOpt (Martin, 2021).

  • Utilizing a modeling framework like CVX, which automatically calls upon a solver behind the scenes, is available for programming languages including Python, R, and Julia (Fu et al., 2022, 2020; Grant and Boyd, 2008, 2014).

  • Directly invoking an appropriate solver.

  • Developing ad-hoc efficient algorithms for specific formulations, as done in the packages developed by the ConvexFi group.3

References

Cajas, D. (2023). Riskfolio-Lib.
Fu, A., Narasimhan, B., and Boyd, S. (2020). CVXR: An R package for disciplined convex optimization. Journal of Statistical Software, 94(14), 1–34.
Fu, A., Narasimhan, B., Kang, D. W., Diamond, S., Miller, J., Boyd, S., and Rosenfield, P. K. (2022). CVXR: Disciplined convex optimization.
Grant, M., and Boyd, S. (2008). Graph implementations for nonsmooth convex programs. In V. Blondel, S. Boyd, and H. Kimura, editors, Recent advances in learning and control, pages 95–110. Springer-Verlag.
Grant, M., and Boyd, S. (2014). CVX: Matlab software for disciplined convex programming.
Martin, R. A. (2021). PyPortfolioOpt: Portfolio optimization in Python. Journal of Open Source Software, 6(61), 1–5.
Wuertz, D., Setz, T., Chalabi, Y., Chen, W., and Theussl, S. (2023). fPortfolio: Rmetrics - portfolio selection and optimization.

  1. Convex Optimization in Finance group: https://github.com/convexfi↩︎