На головну    

 Програма оптимізації ризикового портфеля - Економіко-математичне моделювання

Введення.

На фінансовому ринку звертається безліч цінних паперів: державні цінні папери, муніципальні облігації, корпоративні акції і т.д. Якщо в учасника ринку є вільні гроші, то їх можна віднести в банк і одержувати відсотки або купити на них цінні папери і отримувати додатковий дохід. Але в який банк віднести? Які цінні папери купити? Малоризиковим цінні папери, як правило, і малоприбуткові, високоприбуткові, як правило, більш ризикові. Економічна наука може дати деякі рекомендації для вирішення цього вопроса.Постановка завдання.

Розглянемо загальну задачу розподілу капіталу, який учасник ринку хоче витратити на покупку цінних паперів, з різних видів цінних паперів. Випереджаючи точні математичні постановки, констатуємо очевидну загальну мету інвестора - вкласти гроші так, щоб зберегти свій капітал, а при можливості і наростити його.

Набір цінних паперів, що знаходяться в учасника ринку, називається його портфелем. Вартість портфеля - це сумарна вартість всіх складових його паперів. Якщо сьогодні його вартість є Р, а через рік вона виявиться рівною Р ?, то (Р ? -Р) / Р природно назвати прибутковістю портфеля у відсотках річних. Тобто дохідність портфеля - це дохідність на одиницю його вартості.

Нехай ХI- частка капіталу, витрачена на покупку цінних паперів i-го виду. Міркування про частки еквівалентні тому, що весь виділений капітал приймається за одиницю. Нехай di- прибутковість у відсотках річних цінних паперів i-го виду в розрахунку на одну грошову одиницю.

Знайдемо прибутковість всього портфеля dp. З одного боку, через рік капітал портфеля буде дорівнювати 1+ dp, з іншого - вартість паперів i-го виду збільшитися з х до xi + di * xi, так що сумарна вартість портфеля буде дорівнює Sxi + Sxi * di = 1 + Sxi * di. Прирівнюючи обидва вирази для вартості портфеля, отримуємо dp = Sxi * di.

Отже, завдання збільшення капіталу портфеля еквівалентна аналогічної задачі про прибутковості портфеля, вираженої через прибутковості паперів та їх частки.

Як правило, дохідність паперів коливається в часі, так що будемо вважати її випадковою величиною. Нехай mi, si- середня очікувана прибутковість і середнє квадратичне відхилення (СКО) цієї випадкової дохідності, тобто mi = M [di] - математичне очікування дохідності та ri = OVii, де Vii- варіація або дисперсія i-ой прибутковості. Будемо називати mi, riсоответственно ефективністю і ризиком i-ої цінного паперу. Через Vijобозначім ковариацию доходностей цінних паперів i-го і j-го виду (або кореляційний момент Kij).

Так як прибутковість складових портфель цінних паперів випадкова, то і прибутковість портфеля є також випадкова величина. Математіческте очікування дохідності портфеля є M [dp] = x1 * M [d1] + ... + xn * M [dn] = Sxi * miобозначім його через mp. Дисперсія прибутковості портфеля є D [dp] = SSxi * xj * Vij. Так само, як і для цінних паперів, назвемо mpеффектівностью портфеля, а величину sp = OD [dp] - ризиком портфеля rp. Зазвичай дисперсія дохідності портфеля називається його варіацією Vp.

Отже, ефективність і ризик портфеля виражені через ефективності складових його цінних паперів та їх спільні коваріаціі.Портфель Марковіца мінімального ризику.

Існує кілька варіантів завдань оптимізації ризикового портфеля. Ми розглянемо тільки одну. Це так званий «портфель Марковіца». Це завдання було сформульована і вирішена американським економістом Г. Марковіцем (H. Markovitz) в 1952 році, за що пізніше він отримав нобелівську премію.

Нехай є n видів цінних паперів, з яких інвестор хоче сформувати портфель. Необхідно знайти xi, які мінімізують варіацію портфеля

Vp = SS xi * xj * Vij

за умови, що забезпечується задане значення ефективності портфеля mp, тобто Sxi * mi = mp.

Оскільки xi- частки, то в сумі вони повинні складати одиницю: Sxi = 1.

Залишивши за інвестором вибір середньої ефективності портфеля і допомагаючи йому мінімізувати в цьому випадку невизначеність, отримуємо наступну задачу з оптимізації портфеля цінних паперів:

min SS xi * xj * Vij

Sxi = 1

Smi * xi = mp

xi?0, ..., xn?0

Це завдання квадратичного програмування. Опустивши умови невід'ємності змінних, отримуємо власне завдання Марковіца.Решеніе.

За допомогою функції Лагранжа зведемо задачу на умовний екстремум до задачі на безумовний екстремум:

L (x1, ..., xn, m, l) = SS Vij * xi * xj- l * (Smi-1) - m * (Smi * xi- mp),

¶L / ¶xs = 2 * SVis * xi- l - m * ms = 0, s = 1, ..., n. (*)

похідні по l, m відтворюють зазначені вище два співвідношення, тим самим для (n + 2) змінних x1, ..., xn, l, m отримуємо (n + 2) рівняння.

Запишемо отримані рівняння в матричній формі, використовуючи такі позначення:

1 x1m1

e =. x =. m =. x ? = (x1, ..., xn), m ? = (m1, ..., mn)

. . .

1 xnmn

Штрих застосовується для позначення операції транспонування матриці.

B- матриця ковариаций, B-1-зворотна їй матриця. Отже рівняння (*) приймуть вигляд:

B * x = (l / 2) * e + (m / 2) * m,

e ? * x = 1,

m ? * x = mp.

Основне припущення цієї моделі полягає в тому, що між ефективностями m1, ..., mnнет лінійного зв'язку, тому ковариационная матриця B невирождени (| B | 0), отже, існує зворотна матриця В-1. Використовуючи цей факт дозволимо в матричній формі щодо х:

х = (l / 2) * В-1 * е + (m / 2) * В-1 * m, (**)

підставивши це рішення в перше і друге умови, отримаємо два рівняння для визначення l / 2 і m / 2:

(Е ? * В-1 * е) * l / 2 + (е ? * В-1 * m) * m / 2 = 1

(M ? * B-1 * e) * l / 2 + (m ? * В-1 * m) * m / 2 = mp.

Вирішуючи два останніх рівняння за правилом Крамера, знаходимо

l / 2 = ((m ? * В-1 * m) -mp * (е ? * В-1 * m)) / ((е ? * В-1 * е) * (m ? * В-1 * m) - (m ? * B-1 * e) 2)

m / 2 = (mp * (е ? * В-1 * е) - (m ? * B-1 * e)) / ((е ? * В-1 * е) * (m ? * В-1 * m) - (m ? * B-1 * e) 2)

Підставляючи це рішення в (**) отримуємо наступну структуру оптимального портфеля:

[(M ? * В-1 * m) -mp * (е ? * В-1 * m)] * В-1 * е + [mp * (е ? * В-1 * е) - (m ? * B-1 * e)] * В-1 * m

x * =

(Е ? * В-1 * е) * (m ? * В-1 * m) - (m ? * B-1 * e) 2

Простий підстановкою переконуємося, що е ? * х * = 1 і m ? * х * = mp.

Крім того, знаходимо мінімальну дисперсію, відповідну оптимальній структурі:

[M2p * (е ? * В-1 * е) - 2 * mp * (m ? * B-1 * e) + (m ? * В-1 * m)]

D * p =

[(Е ? * В-1 * е) * (m ? * В-1 * m) - (m ? * B-1 * e) 2]

Тоді s * p = O D * p, що і є мінімальним ризиком портфеля.

Якщо x * i?0, то це означає рекомендацію вкласти частку x * iналічного капіталу в цінні папери i-го виду. Якщо ж x * i <0, то змістовно це означає провести операцію "short sale" ("короткий продаж").

Що це за операція? Інвестор, який формує портфель, зобов'язується через якийсь час поставити цінні папери i-го виду (разом з доходом, який вони принесли б їх власнику за цей час). За це зараз він отримує їх грошовий еквівалент. Ці гроші він приєднує до свого капіталу і купує рекомендовані оптимальним рішенням цінні папери. Так як цінні папери інших видів (тобто не i-го виду) більш ефективні, то інвестор виявляється у виграші.

Математично ця операція означає, що потрібно виключити цей вид цінних паперів з розгляду і вирішити задачу заново.Прімер.

Дано: m1 = 11, s1 = 4, m2 = 10, s2 = 3, m3 = 9, s3 = 1, цінні папери не корельовані. Визначити оптимальний портфель при mp = 10.

Відповідь: Частки цінних паперів x1 = 0,3396; x2 = 0,3208; x3 = 0,3396. Мінімальний ризик sp = 1,699. Ефект диверсифікації портфеля наочно видно на даному прикладі. Портфель має таку ж ефективність, як якби він був складений тільки з паперів 2-го виду, але його ризик значно менше, ніж у паперів 2-го виду (1,699 <3) .Програма.

Далі наведена програма, яка розраховує структуру портфеля при заданій ефективності та його мінімальний ризик.

program riski;

uses crt;

type mas = array [1..10] of real;

mas2 = array [1..10,1..10] of real;

var a: real;

m, be, bm: mas;

B, E, b1, e1: mas2;

i, k, c, v, l, j, n: integer;

mp, ebe, mbm, ebm, x, mbe: real;

procedure base;

begin

for i: = 1 to n do {звернення матриці B}

begin

for c: = 1 to n do {дублювання матриць}

begin

for v: = 1 to n do

begin

B1 [c, v]: = B [c, v];

e1 [c, v]: = e [c, v];

end;

end;

for k: = 1 to n do

begin

B [i, k]: = B1 [i, k] / b1 [i, i]; {Ділимо рядка на дозволяє елемент}

E [i, k]: = E1 [i, k] / b1 [i, i]; for l: = 1 to n do

begin {знаходимо інші елементи}

if l i then

begin

B [l, k]: = (B1 [l, k] - (B1 [l, i] * B1 [i, k] / B1 [i, i]));

E [l, k]: = (E1 [l, k] - (B1 [l, i] * E1 [i, k] / B1 [i, i]));

end;

end;

end;

end;

for i: = 1 to n do {підсумовування по рядках, формування вектора-стовпця Be}

begin

for j: = 1 to n do

begin

be [i]: = be [i] + e [i, j];

end;

end;

for i: = 1 to n do {формування вектора-стовпця Bm}

begin

for j: = 1 to n do

begin

Bm [i]: = Bm [i] + m [j] * e [i, j];

end;

end;

for i: = 1 to n do

begin {знаходження констант}

ebe: = ebe + be [i]; {Підсумовування по стоблцу}

ebm: = ebm + bm [i];

mbm: = mbm + m [i] * bm [i];

mbe: = mbe + m [i] * be [i];

end;

end;

procedure vvod;

label out1, out2, out3, out4, out5;

var z: real; mi, ma: real;

begin

writeln;

writeln ('КУРСОВИЙ ПРОЕКТ');

writeln;

writeln;

writeln ('З ДИСЦИПЛІНИ МАТЕМАТИЧНІ МЕТОДИ ФІНАНСОВО-ЕКОНОМІЧНОГО АНАЛІЗУ');

writeln;

writeln ('АВТОР: Болдін СЕРГІЙ, ФІНМЕН II-3.');

writeln;

writeln ('ТЕМА: ЗАВДАННЯ ОПТИМІЗАЦІЇ ризикових ПОРТФЕЛЯ.');

writeln;

writeln;

writeln;

out1:

writeln;

writeln ('Введіть кількість видів цінних паперів, з яких ви хочете');

write ('сформувати портфель (не більше 10):');

readln (n);

if (n <= 0) or (n int (n)) or (n> 10) then

begin

writeln ('Помилка вводу! Число повинно бути натуральним і менше 10!');

goto out1;

end;

writeln;

writeln ('Введіть ефективності (прибутковості) цінних паперів:');

for i: = 1 to n do

begin

E [i, i]: = 1;

out2:

write ('', i, '- ого виду:');

readln (m [i]);

if (m [i] <0) then

begin

writeln ('Помилка вводу! Число повинно бути позитивним!');

goto out2;

end;

end;

writeln;

writeln ('!!! При введенні ризиків і спільних варіацій цінних паперів слід');

writeln ('бути уважним, так що програма не розрахована на лінійну');

writeln ('зв'язок доходностей цінних паперів. Тому рекомендується не вводити');

writeln ('пропорційні ризики і спільні варіації цінних паперів !!!');

writeln;

writeln ('Введіть ризик (середньоквадратичне відхилення (СКО)) цінних паперів:');

for i: = 1 to n do

begin

out3:

write ('', i, '- ого виду:');

readln (z);

if (z <0) then

begin

writeln ('Помилка вводу! Число повинно бути позитивним!');

goto out3;

end;

b [i, i]: = z * z;

end;

writeln;

writeln ('Введіть спільну варіацію (кореляційний момент) цінних паперів.');

writeln ('Вона не повинна бути більше твори СКО цих паперів.');

for i: = 1 to n do

begin

for j: = i + 1 to n do {введення матриці ковариаций}

begin

out4:

write ('', i, '- го і', j, '- го виду:');

readln (z);

if abs (z)> = sqrt (b [i, i]) * sqrt (b [j, j]) then

begin

writeln ('Помилка вводу! Число повинно бути позитивним і менше твори СКО цих паперів!');

goto out4;

end;

b [i, j]: = z;

b [j, i]: = z;

if i j then begin E [i, j]: = 0; end;

end;

end;

writeln;

ma: = 0;

for i: = 1 to n do

begin

if m [i]> ma then ma: = m [i];

end;

mi: = 100000000;

for i: = 1 to n do

begin

if m [i]end;

writeln ('Введіть бажану ефективність портфеля.');

write ('Вона повинна бути в межах ефективностей цінних паперів:');

out5:

readln (mp);

if (mpma) then

begin

writeln ('Помилка введення!');

write ('Кількість повинно бути в межах ефективностей цінних паперів !:');

goto out5;

end;

end;

procedure vivod;

begin

writeln;

writeln ('Структура портфеля. Частки цінних паперів.');

for i: = 1 to n do

begin

x: = ((mbm-mp * ebm) * be [i] + (mp * ebe-mbe) * bm [i]) / (ebe * mbm-mbe * mbe);

writeln ('', i, '- го виду:', x: 6: 5);

if x <0 then

begin

writeln ('Так як частка паперів', i, '- го виду негативна, то необхідно');

writeln ('провести операцію "short sale", виключити папери цього виду з портфеля');

writeln ('і вирішити завдання заново.');

end;

end;

writeln;

writeln ('Мінімальний ризик портфеля:', sqrt ((mp * mp * ebe-2 * mp * mbe + mbm) / (ebe * mbm-mbe * mbe)): 6: 5);

end;

begin

clrscr;

textcolor (yellow);

textbackground (blue);

vvod;

base;

vivod;

readln;

end.Спісок літератури:

1. Колеман В.А. Математична економіка. М .: «Юніті» 1998.

2. Малихін В.І. Фінансова математика. М .: «Юніті» 2000.

© 8ref.com - українські реферати