Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовая по теории игр

.pdf
Скачиваний:
38
Добавлен:
10.05.2014
Размер:
3.37 Mб
Скачать

Курсовой проект по методам оптимизации.

Студента группы Т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