Hi Tom,
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
mu
;
- 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] = 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,
Gab