CVaR Risk Budgeting
This article contains several Python examples of how CVaR risk budgeting is performed and analyzed through Sequential Entropy Pooling (SeqEP) stress tests.

As Chapter 6 of the Portfolio Construction and Risk Management book carefully explains, the interesting portfolio optimization problem focuses on the following decomposition of a portfolio’s risk:
where the three terms are respectively the risk of the benchmark, the risk of the tracking error portfolio and the diversification between the benchmark and the tracking error portfolio. See also Lecture 9: Portfolio Optimization from the Applied Quantitative Investment Management course for a detailed video explanation.
In Section 6.3 of the Portfolio Construction and Risk Management book, there is an analysis of this risk decomposition for variance, which we can use to build investment intuition in the idealized case. The Python case study below will perform a similar analysis for the Conditional Value-at-Risk (CVaR) risk measure, bringing it closer to real-world portfolio construction.
Specifically, we will use the Multi-Asset Macro Model to simulate the P&L of the instruments from the Optimal Gold Allocation case study and then proceed to perform Sequential Entropy Pooling (SeqEP) CVaR stress testing.
Python case study
The Python case study uses the Fully Flexible Resampling (FFR) implementation from the Investment Simulation module and then proceeds to perform Sequential Entropy Pooling (SeqEP) CVaR stress testing using the Investment Analysis module for a low risk portfolio that has gold in its benchmark.
This case study gives an insight into how sophisticated investment managers perform portfolio construction and risk management, giving you several practical examples of the risk decomposition equation from the beginning of this article.

