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]:
matrix([[-2.95625]])

In [18]:
Xeq_vol = np.sqrt(Xeq.T * V * Xeq)
Xeq_vol * 100


Out[18]:
matrix([[ 14.72753586]])

In [19]:
Xmin = 1/np.sum(V.I * Onevec) * V.I * Onevec
Xmin


Out[19]:
matrix([[ 1.02538216],
        [-0.09407929],
        [ 0.00151421],
        [ 0.03121546],
        [-0.02607141],
        [-0.00893645],
        [ 0.07840037],
        [-0.00742505]])

In [20]:
Xmin_return = 1/np.sum(V.I * Onevec) * muvec.T * V.I * Onevec
Xmin_return * 100


Out[20]:
matrix([[ 2.65702396]])

In [21]:
muhat = muvec - rf
Xsh = 1/np.sum(V.I * muhat) * V.I * muhat
Xsh


Out[21]:
matrix([[ 1.24605858],
        [-0.1143667 ],
        [ 0.12225143],
        [-0.05317533],
        [-0.10285739],
        [ 0.19524158],
        [-0.33557277],
        [ 0.0424206 ]])

In [22]:
Xsh_return = 1/np.sum(V.I * muhat) * muvec.T * V.I * muhat
Xsh_return * 100


Out[22]:
matrix([[ 5.72667837]])

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]:
matrix([[ 5.56474258]])

In [24]:
Sharpe_ratio = (Xsh_return - rf)/Xsh_vol
Sharpe_ratio


Out[24]:
matrix([[ 0.75954607]])

In [25]:
opportunity_vol = .05
opportunity_return = rf + Sharpe_ratio * opportunity_vol
opportunity_return * 100


Out[25]:
matrix([[ 5.29773036]])

In [ ]: