Why choose optimization portfolios?
Our team has made significant advancements in upgrading a financial platform that generates Black-Litterman portfolios. One common complaint we've addressed is the generation of portfolios that allocate more than 100% or even -100% to specific assets.
Addressing the Problem
The issue stemmed from the formula employed in generating portfolios, which lacked constraints. The portfolios were generated using the following formula:
In this equation, "w" represents portfolio weights, "δ" signifies the excess return in terms of multiples of volatility that investors require, "Σ" denotes the covariance matrix of asset returns, and "E(R)" corresponds to the expected returns of assets. For more in-depth information, refer to the documentation of the library used.
It is important to note that this method does not impose any restrictions on the magnitude of weights or require their sum to equal 100%. The library's documentation acknowledges its primary purpose as being "A quick alternative, which is quite useful for debugging..."
领英推荐
Practical Experimentation with Code
Nonetheless, a potential problem does not automatically make it a prevalent one. To address this, we conducted some experimentation by manipulating returns, variances, and covariances to determine the frequency of encountering nonsensical portfolios with this methodology. Here is a link to the Google Colab illustrating portfolios with only two possible assets.
As illustrated, even in a small and straightforward scenario, a multitude of combinations of returns, variances, and covariances can produce unconventional portfolios.
Introducing the Optimal Solution
The key to generating portfolios lies in employing an optimization framework that precisely defines constraints and objectives. Fortunately, the Pypfopt library offers such functionalities, accompanied by numerous implementation examples.
While we commend the creators of this feature-rich library, we advise serious users to exercise caution. In some instances, the library may encounter issues. Therefore, we recommend developing custom optimization code or delving into the library's underlying code for necessary modifications in problematic scenarios when constructing portfolios.