thank you very much, that is exactly what I was looking for!
Correct me if I'm wrong, I would like a very last clarification.
For what I understand also from Boyde and Vandemberghe book's reparametrization of the problem: when you run
portfolios = [solvers.qp(mu*S, -pbar, G, h, A, b)['x']
for mu in mus]
to get the
portfolios on the efficient frontier (that is, the yellow
(risks, returns) pairs in the plot), the parameter
mu that you make unevenly running in
mus seems therefore to be:
- the tradeoff parameter between the return maximization and the variance minimization objectives ,
- and not the target mean of the portfolio's returns 𝑅^𝑇𝑤=𝜇 (as it is seems to be suggested by the introduction above
optimal_portfolio function definition).
That is, the loop
mu in mus spans the efficient frontier:
- not by minimizing portfolio's variance given different target portfolio's returns
- but by running the scalarized minimization of Boyde-Vandenberghe: - 𝑅^𝑇𝑤 + 𝜇 𝑤^𝑇𝐶𝑤 for different values of the trade-off parameter 𝜇 (
mu), which correspond to the range:
-- from a quasi-maximum mean return portfolio (
mus = 0.1)
-- to a quasi-minimum variance return portfolio (
mus[-1] = 8912.51).
Am I right? If so, maybe also other people could have been misleaded by this inconsistency between the introduction above
optimal_portfolio function and what the function actually does (and I totally understand that these are things that can happen!). And maybe a reformulation of the introduction might be appropriate. If not, please don't hate me and spend a few more words when you have time to clarify further ;-)
Thank you very much,