дисперсии портфеля рассчитывается как:Портфель Дисперсия портфель активов N в Python
port_var = W'_p * S * W_p
для портфеля с N, где assest
W'_p = transpose of vector of weights of stocks in portfolios
S = sample covariance matrix
W_p = vector of weights of stocks in portfolios
У меня есть следующие Numpy матрицы.
Array (вектор) весов акций в портфеле (есть 10 акций):
weights = np.array(
[[ 0.09],
[ 0.05],
[ 0.15],
[ 0.10],
[ 0.15],
[ 0.15],
[ 0.08],
[ 0.08],
[ 0.1 ],
[ 0.05]])
ковариационная матрица доходностей:
covar = np.array([[ 0.00154474 0.00079555 0.00099691 0.00052596 0.0005363 0.00062005
0.00064031 0.00037494 0.00018826 0.00132809],
[ 0.00079555 0.00287429 0.00058536 0.00091774 0.00046885 0.00110434
0.00137141 0.00046724 0.00030414 0.0016615 ],
[ 0.00099691 0.00058536 0.00155757 0.00056336 0.00052395 0.00060104
0.00057223 0.00021365 0.00017057 0.00130247],
[ 0.00052596 0.00091774 0.00056336 0.00126312 0.00031941 0.00088137
0.00024493 0.00025136 0.00011519 0.00135475],
[ 0.0005363 0.00046885 0.00052395 0.00031941 0.00054093 0.00045649
0.00042927 0.00021928 0.00016835 0.00093471],
[ 0.00062005 0.00110434 0.00060104 0.00088137 0.00045649 0.00133081
0.00060353 0.0003967 0.00024983 0.00168281],
[ 0.00064031 0.00137141 0.00057223 0.00024493 0.00042927 0.00060353
0.00468731 0.00059557 0.00020384 0.00078669],
[ 0.00037494 0.00046724 0.00021365 0.00025136 0.00021928 0.0003967
0.00059557 0.00082333 0.00017191 0.00066816],
[ 0.00018826 0.00030414 0.00017057 0.00011519 0.00016835 0.00024983
0.00020384 0.00017191 0.00036348 0.0004505 ],
[ 0.00132809 0.0016615 0.00130247 0.00135475 0.00093471 0.00168281
0.00078669 0.00066816 0.0004505 0.00530036]])
Когда я вычисляю
weights.T * covar * weights
Результат - массив такого же размера, как и covar. Я новичок в теории портфеля, но я бы предположил, что дисперсия портфеля должна быть скаляром (одно значение).
Есть ли у кого-нибудь опыт в этом, что может помочь?
Это прекрасная вещь. –
@ strimp099 - Как примечание стороны, с более новыми версиями numpy (> = 1.5, я думаю?) 'Dot' также является методом ndarray. Другими словами, вы можете написать первый пример в примере unutbu как 'weights.T.dot (covar.dot (weight))'. Для некоторых вещей этот стиль немного чище, хотя и немного меньше назад. –
Большое спасибо @Joe –