TransWikia.com

Optimal Portfolio from Efficient Frontier

Quantitative Finance Asked by user1919071 on December 8, 2021

I found this code on plotly site, using CVXOPT to find the efficient frontier, and then, the optimal Portfolio.
The optimal function is

def optimal_portfolio(returns):
    n = len(returns)
    returns = np.asmatrix(returns)
    
    N = 100
    mus = [10**(5.0 * t/N - 1.0) for t in range(N)]
    
    # Convert to cvxopt matrices
    S = opt.matrix(np.cov(returns))
    pbar = opt.matrix(np.mean(returns, axis=1))
    
    # Create constraint matrices
    G = -opt.matrix(np.eye(n))   # negative n x n identity matrix
    h = opt.matrix(0.0, (n ,1))
    A = opt.matrix(1.0, (1, n))
    b = opt.matrix(1.0)
    
    # Calculate efficient frontier weights using quadratic programming
    portfolios = [solvers.qp(mu*S, -pbar, G, h, A, b)['x'] 
                  for mu in mus]
    ## CALCULATE RISKS AND RETURNS FOR FRONTIER
    returns = [blas.dot(pbar, x) for x in portfolios]
    risks = [np.sqrt(blas.dot(x, S*x)) for x in portfolios]
    ## CALCULATE THE 2ND DEGREE POLYNOMIAL OF THE FRONTIER CURVE
    m1 = np.polyfit(returns, risks, 2)
    x1 = np.sqrt(m1[2] / m1[0])
    # CALCULATE THE OPTIMAL PORTFOLIO
    wt = solvers.qp(opt.matrix(x1 * S), -pbar, G, h, A, b)['x']
    return np.asarray(wt), returns, risks

weights, returns, risks = optimal_portfolio(return_vec)

My question refers to the lines where the code fits a parabola to the efficient frontier

m1 = np.polyfit(returns, risks, 2)

takes the square root of the division the intercept by the coefficient of the x-squared

x1 = np.sqrt(m1[2] / m1[0])

and puts it in the optimization

t = solvers.qp(opt.matrix(x1 * S), -pbar, G, h, A, b)['x']

Can anyone please shed light on why this is done?

Thanks!

One Answer

In quadratic equation of the form $y= ax^2+bx+c = 0$, while $b=0$ then $+/-sqrt{(c/a)}$ is the values of cutting with the $x$-axis. Also, this is the solution of the equation. Using Vieta's formulas one can see that: $x1*x2 = c/a$ Also, using Trigonometric solution: $x= sqrt{(c/a)}*tan(theta)$ So maybe there is a need to rotate the axis in 90 degrees right to better understand it and change the axis of symmetry. And I guess there is a connection to focus of the parabola

Answered by RoeeBoo on December 8, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP