In [2]:
import numpy as np
In [13]:
muvec = np.matrix([[3.15], [1.75], [-6.39], [-2.86], [-6.75], [-.54], [-6.75], [-5.26]])/100
Onevec = np.ones([len(muvec)])
V = np.matrix([[0.001005, 0.001328, -0.000579, -0.000675, 0.000121, 0.000128, -0.000445, -0.000437],
[0.001328, 0.007277, -0.001307, -0.000610, -0.002237, -0.000989, 0.001442, -0.001535],
[-0.000579, -0.001307, 0.059852, 0.027588, 0.063497, 0.023036, 0.032967, 0.048039],
[-0.000675, -0.000610, 0.027588, 0.029609, 0.026572, 0.021465, 0.020697, 0.029854],
[0.000121, -0.002237, 0.063497, 0.026572, 0.102488, 0.042744, 0.039943, 0.065994],
[0.000128, -0.000989, 0.023036, 0.021465, 0.042744, 0.032056, 0.019881, 0.032235],
[-0.000445, 0.001442, 0.032967, 0.020697, 0.039943, 0.019881, 0.028355, 0.035064],
[-0.000437, -0.001535, 0.048039, 0.029854, 0.065994, 0.032235, 0.035064, 0.079958]])
rf = .015
In [14]:
Onevec = np.asmatrix(Onevec)
Onevec = Onevec.T
In [16]:
Xeq = np.ones([len(muvec)])/len(muvec)
Xeq = np.asmatrix(Xeq)
Xeq = Xeq.T
In [17]:
Xeq_return = muvec.T * Xeq
Xeq_return * 100
Out[17]:
In [18]:
Xeq_vol = np.sqrt(Xeq.T * V * Xeq)
Xeq_vol * 100
Out[18]:
In [19]:
Xmin = 1/np.sum(V.I * Onevec) * V.I * Onevec
Xmin
Out[19]:
In [20]:
Xmin_return = 1/np.sum(V.I * Onevec) * muvec.T * V.I * Onevec
Xmin_return * 100
Out[20]:
In [21]:
muhat = muvec - rf
Xsh = 1/np.sum(V.I * muhat) * V.I * muhat
Xsh
Out[21]:
In [22]:
Xsh_return = 1/np.sum(V.I * muhat) * muvec.T * V.I * muhat
Xsh_return * 100
Out[22]:
In [23]:
Xsh_var = 1/np.sum(V.I * muhat)**2 * muhat.T * V.I * V * V.I * muhat
Xsh_vol = np.sqrt(Xsh_var)
Xsh_vol *100
Out[23]:
In [24]:
Sharpe_ratio = (Xsh_return - rf)/Xsh_vol
Sharpe_ratio
Out[24]:
In [25]:
opportunity_vol = .05
opportunity_return = rf + Sharpe_ratio * opportunity_vol
opportunity_return * 100
Out[25]:
In [ ]: