Курсовая по теории игр
.pdfКурсовой проект по методам оптимизации.
Студента группы Т9-31, Балашова С.В.
15 декабря 2010 г.
1Введение
Âкурсовом проекте решалась задача оптимизации портфеля инвестиций. Была задана ковариационная матрица эффективности для двух случаев: диагональная и с уче- том ковариционных связей. Построение оптимального портфеля проводилось согласно модели Марковица с разрешением операции short sale и в условиях, когда эта операция запрещена.
2Схема Марковица
Под портфелем инвестиций понимают вектор долей ~x = (x1; : : : ; xn)T инвестиру- емого капитала в объекты инвестирования i = 1; : : : ; n : В проекте рассматривался
случай n = 3 : Ri эффективность вложения капитала в i тый объект инвестирования. Согласно Марковицу для решения задачи оптимального распределения капитала между объектами инвестирования нужно знать ковариационную матрицу W ; Wij = cov(Ri ; Rj) ; i ; j = 1; : : : ; n и вектор m~ = (m1; : : : ; mn)T ; mi ожидаемое среднее значе- ние эффективности i того объекта инвестирования. Портфель характеризуется двумя
критериями - риском портфеля p = p(x) , который нужно минимизировать, и ожидаемым средним значением эффективности портфеля mp = mp(x), которое нужно максимизировать.
2.1Исходные данные(3-й вариант)
W = diag(0;1; 0;15; 0;35) ;
m~ = (1;2; 1;3; 1;5)T ;
r12 = 0;74; r13 = r23 = 0 :
2.2Задача Марковица в условиях "short sale"
Постановка задачи:
8mp = (m;~ ~x) |
|
max |
(1) |
|
> |
p2 = (W~x ; ~x) min |
|
||
|
|
|
|
|
<(~x;~1) = 1 |
|
|
|
|
> |
|
|
|
|
:
Это задача квадратичного программирования с ограничениями типа равенств. Для решения этой задачи рассмотрим однокритериальную задачу:
((~x;~1) = 1 |
|
(2) |
p2 = (W~x ; ~x) |
|
min |
Функция Лагранжа этой задачи имеет вид:
|
1 |
~ |
|
(3) |
L(~x; u) = |
|
(W~x; ~x) u[(~x; 1) |
1] |
|
2 |
|
1
Градиент имеет вид: |
|
|
|
|
~ ~ |
(4) |
|||
r~xL = W~x u1 = 0 |
|
|||
откуда |
|
|
|
|
~x = uW 1~1 |
(5) |
|||
Подставляя это выражение в (2), получим |
|
|||
u(W 1~1;~1) = 1 |
(6) |
|||
Таким образом |
W 1~1 |
|
||
~x = |
(7) |
|||
|
|
|||
(W 1~1;~1) |
|
Соответствующее значение эффективности портфеля mp = (m;~ ~x ), а дисперсия p2 = (W~x ; ~x ). Далее рассматриваем многокритериальную задачу:
|
|
|
|
8(m;~ ~x) = mp |
> mp |
|
|
|
(8) |
||||
|
|
|
|
> |
(W~x ; ~x) min |
|
|
|
|
|
|||
|
|
|
|
<(~x;~1) = 1 |
|
|
|
|
|
|
|
||
|
|
|
|
> |
|
|
|
|
|
|
|
|
|
Значение |
m |
|
берется из |
: |
[m |
; m ] |
, |
|
m |
|
= max m |
. Этот отрезок раз- |
|
|
|
p |
|
диапазона |
p |
max |
|
ãäå |
|
max |
|
f ig |
|
|
|
|
|
|
|
|
i |
|
бивается на N промежутков, и для каждого mp = mp + mpi, где i = 1; : : : ; N решается задача минимизации.
Удобно записать задачу в матричной форме:
|
|
|
|
~ |
|
|
(9) |
|
|
A~x = f |
|
|
|||
ãäå |
m1 |
m2 |
m3 |
|
; f~ = |
mp |
(10) |
A = |
|||||||
|
1 |
1 |
1 |
|
|
1 |
|
Запишем функцию Лагранжа этой задачи:
1 |
|
~ |
|
L(~x; u) = |
2 |
(W~x; ~x) (A~x f; ~u) |
|
Если взять градиент по ~x, то получим: |
|
||
|
|
T |
~ |
r~x = W~x A |
~u = 0 |
||
~x = W 1AT ~u |
|
||
AW 1AT ~u = f~ |
|
~u = (AW 1AT ) 1~x
1 T 1 T 1 ~
~x = W A (AW A ) f
(11)
(12)
2
2.3 Задача Марковица с запретом "short sale"
Постановка задачи:
8mp = (m;~ ~x) |
|
max |
|
p2 |
= (W~x ; ~x) min |
||
> |
~ |
|
(13) |
>(~x; 1) = 1 |
|
|
|
> |
|
|
|
< |
|
|
|
>
>
>
: ~ ~x > 0
Для решения этой задачи рассмотрим однокритериальную задачу:
8(~x;~1) = 1 |
|
|
|
|
|
|
||||||
> |
2 = (W~x ; ~x) |
|
|
min |
|
|
||||||
|
p |
|
|
|
|
|
|
|
|
|
|
|
<~x |
> |
~0 |
|
|
|
|
|
|
|
|||
> |
|
|
|
|
|
|
|
|
|
|
||
: |
|
|
|
|
~ |
|
|
|
|
|
|
|
Представим ограничения в виде A~x > b, где |
|
|
|
001 |
||||||||
A = |
00 1 01; f~ |
= |
||||||||||
|
|
|
1 |
0 |
0 |
|
|
|
|
0 |
|
|
|
|
B1 1 1C |
|
|
|
B1C |
||||||
|
|
B |
0 |
0 |
C |
|
|
|
B C |
|||
|
|
@ |
|
|
|
A |
|
|
|
@ |
|
A |
Тогда функция Лагранжа этой задачи имеет вид: |
|
|
|
|||||||||
|
|
|
|
1 |
|
|
|
|
|
|
|
~ |
L(~x; u) = |
|
2 |
(W~x; ~x) |
(A~x b; ~u) |
||||||||
Если взять градиент по ~x, то получим: |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
T |
|
|
~ |
|
|
r~x = W~x A |
~u = 0 |
|
~x = W 1AT ~u
Рассмотрим целевую функцию
(14)
(15)
(16)
(17)
(18)
|
1 |
|
1 |
T |
|
1 |
T |
~u) (AW |
1 |
T |
~ |
(~u) = L(~x(~u); ~u) = |
2 |
(WW |
|
A |
~u; W |
|
A |
|
A |
~u; ~u) + (b; ~u) |
c = AW 1AT
Получили новую задачу:
(
(~u) = |
1 |
~ |
2 |
(c~u; ~u) (b; ~u) min |
~
~u > 0
Возьмем градиент по ~u
r ~ ~
~u = c~u b = 0
~
c~u = b
1 ~
=2(c~u; ~u) + (b; ~u)
(19)
(20)
(21)
3
Систему (21) можно решить с помощью метода Гаусса-Зейделя.
ui(l+1) = |
1 |
|
cii |
||
|
"bi =1 cijxj(l+1) |
j=i+1 cij(l)# |
(22) |
i 1 |
n+1 |
|
Xj |
X |
|
При решение методом Гаусса-Зейделя нужно учитывать наше ограничение: u(il+1) = maxfu~(il+1); 0g; i = 1; : : : ; n
u(nl+1+1) = u~(nl+1+1)
И затем определяем ~x и mp
Далее рассматриваем многокритериальную задачу:
|
|
|
|
8mp |
= (m;~ ~x) |
|
|
max |
|
|
|
|
|
|
||||
|
|
|
|
p2 = (W~x ; ~x) min |
|
|
|
|
|
|||||||||
|
|
|
|
> |
|
~ |
|
|
|
|
|
|
|
|
|
|
(23) |
|
|
|
|
|
>(~x; 1) = 1 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
< |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>~x > ~0 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Значение |
mp |
берется из |
|
> |
|
[mp; mmax] |
|
|
|
mmax |
= max mi |
|
|
|||||
|
|
|
: |
|
, ãäå |
|
. Данная задача |
|||||||||||
|
|
|
диапазона |
|
|
|
|
|
|
|
f |
g |
||||||
решается аналогично, только |
|
|
|
|
|
|
|
|
|
|
|
i |
|
|||||
0 |
0 |
1 |
0 |
1 |
~ |
|
0 |
0 |
1 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
= B |
1 |
0 |
0 |
C |
|
= B |
0 |
C |
|
|
|
|||
|
|
|
|
1 |
1 |
1 |
|
1 |
|
|
(24) |
|||||||
|
|
|
A |
B |
0 |
0 |
1 |
C |
; f |
|
B |
0 |
C |
|
|
|
||
|
|
|
|
Bm |
m |
m |
C |
|
|
Bm C |
|
|
|
|||||
|
|
|
|
B |
1 |
2 |
|
3C |
|
|
B |
pC |
|
|
|
|||
|
|
|
|
@ |
|
|
|
|
A |
|
|
@ |
|
A |
|
|
|
3Результат
Все графики и листинг программы, написанный на C++, представленны в Приложении.
Для случая запрета "short sale"не удалось реализовать алгоритм, так как матрица из (19) для случая коррелированной и некоррелированной матрица W имеют следую-
щий соответствено вид:
c = |
0 0 |
6;67 |
0 |
6;67 1 |
; c = |
0 13;54 14;88 |
0 |
1;34 1 |
; |
||||||
|
|
10 |
0 |
0 |
10 |
|
|
B |
22;32 |
13;54 |
0 |
8;78 |
|
|
|
|
B10 |
6;67 |
2;86 |
19;52C |
|
8;78 |
1;34 |
2;86 |
12;98C |
|
|||||
|
B |
0 |
|
0 |
2;86 |
2;86 |
C |
|
B |
0 |
0 |
2;86 |
2;86 |
C |
|
|
@ |
|
|
|
|
|
A |
|
@ |
|
|
|
|
A |
|
Собственные числа для них, посчитанные в Mathcad 14, будут равны соответсвенно:
~ = |
0 |
7;934 |
1 |
; ~ = |
0 1;898 10 15 |
1 |
|
|
B |
27;64 |
C |
|
B |
34;55 |
C |
|
3;478 |
|
15;26 |
||||
|
B |
2;5 10 3 |
C |
|
B |
3;228 |
C |
|
@ |
|
A |
|
@ |
|
A |
Что говорит нам о том, что матрица c в обоих случаях не является положительно
определенной, и следовательно метод Гаусса-Зейделя к ней не может быть применен. Так же в обоих случаях не удалось найти c 1.
4
4Вывод
1.Учет корреляций в случае разрешения операции "short sale"приводит к росту рисков в области малых математических ожиданий.
2.Рост эффективности инвестиционного портфеля приводит к ускорению роста рисков.
5
Приложение
Рис. 1: Зависимость риска от эффективности портфеля в условиях "Short Sale"
#include <fstream> #include "matrix.h" #include "vector.h" using namespace std;
void Short_Sale(matrix W, vector m); void Markowitz(matrix W, vector m);
vector Seidel(matrix A, vector b, float eps); int main()
{
//зада¼м ковариационную матрицу matrix W(3,3);
W.a[0][0]=0.1; W.a[0][1]=0; W.a[0][2]=0; W.a[1][0]=0; W.a[1][1]=0.15; W.a[1][2]=0; W.a[2][0]=0; W.a[2][1]=0; W.a[2][2]=0.35;
//задаем вектор эффективностей vector m(3);
m.x[0]=1.2; m.x[1]=1.3; m.x[2]=1.5; Short_Sale(W,m);
Markowitz(W,m);
cin.get(); return 0;
}
6
void Short_Sale(matrix W, vector m)
{
//решение задачи в постановке Short Sale vector one(m.n);
for (int i=0; i<one.n; i++) one.x[i]=1;
float m_p,S; vector x(m.n); matrix A(2,3);
A.a[0][0]=1; A.a[0][1]=1; A.a[0][2]=1; A.a[1][0]=m.x[0]; A.a[1][1]=m.x[1]; A.a[1][2]=m.x[2]; vector f(2);
f.x[0]=1;
//определение максимального значение эффективности портфеля float m_p_max=0;
for (int i=0; i<m.n; i++)
if (m.x[i]>m_p_max) m_p_max=m.x[i]; //решение однокритериальной задачи (2) x=(Invert(W)*one)/((Invert(W)*one)*one); m_p=x*m;
S=(W*x)*x; ofstream fout;
fout.open("short sale.txt");
fout <<"Expected valuet\tVariance\n"; fout << m_p <<"\t"<< S <<"\n"; //решение многокритеривальной задачи (8) //зада¼м число разбиений
int N=1000; float c;
c=(m_p_max-m_p)/N;
for (int i=1; i<=N; i++)
{
m_p=m_p+c; f.x[1]=m_p;
x=Invert(W)*Transpose(A)*Invert(A*Invert(W)*Transpose(A))*f;
S=(W*x)*x;
fout << m_p <<"\t"<< S <<"\n";
}
fout.close();
}
void Markowitz(matrix W, vector m)
{
//решение задачи в постановки запрета Short Sale float m_p,S,m_p_max;
vector x(m.n);
7
//определение максимального значение эффективности портфеля m_p_max=0;
for (int i=0; i<m.n; i++)
if (m.x[i]>m_p_max) m_p_max=m.x[i]; //решение однокритериальной задачи (14) matrix A(4,3);
A.a[0][0]=1; A.a[0][1]=0; A.a[0][2]=0;
A.a[1][0]=0; A.a[1][1]=1; A.a[1][2]=0;
A.a[2][0]=0; A.a[2][1]=0; A.a[2][2]=1;
A.a[3][0]=1; A.a[3][1]=1; A.a[3][2]=1; vector b(4);
b.x[0]=0; b.x[1]=0; b.x[2]=0; b.x[3]=1; matrix c(4,4); c=A*Invert(W)*Transpose(A);
vector U(c.m); U=Seidel(c,b,0.1);
//далее программа зависает, т.к. метод Зейделя рассходится
}
vector Seidel(matrix A, vector b, float eps)
{
//решение СЛАУ методом Гаусса-Зейделя vector x(b.n);
for (int i=0; i<x.n; i++) x.x[i]=0;
float c; do
{
for(int i=0; i<x.n; i++)
{
c=0;
for (int j=0; j<x.n; j++)
if (j!=i) c=c+A.a[i][j]*x.x[j]; x.x[i]=(b.x[i]-c)/A.a[i][i];
}
}
while(norm(A*x-b)>eps); return x;
}
8