"""
Ch8Q7
Efficient Frontier

"""

ra = 0.0064
rb = 0.0034
siga = 0.044
sigb = 0.011
rho = 0.0188

def portfolio(xa,xb,ra,rb,siga,sigb,rho):
    ret = xa*ra + xb*rb
    sigma = (xa**2*siga**2+xb**2*sigb**2+2*xa*xb*siga*sigb*rho)**0.5
    return [sigma, ret]
x =[] #sigma
y =[] #return
for i in range(100):
    x.append(portfolio(1-(i+1)/100,(i+1)/100,ra,rb,siga,sigb,rho)[0])
    y.append(portfolio(1-(i+1)/100,(i+1)/100,ra,rb,siga,sigb,rho)[1])
#plt.plot(x,y)

big = y[0]/x[0]
for i in range(100):
    slope = y[i]/x[i]
    if slope > big:
        big = slope
        answer = x[i]

for i in range(100):
    if x[i] == answer:
        print((i+1)/100, "on BND and", 1-(i+1)/100, "on SPY.")
      
        


