Реферат: Программа оптимизации рискового портфеля

Введение.

На финансовом рынке обращается множество ценных бумаг:государственные ценные бумаги, муниципальные облигации, корпоративные акции ит.д. Если у участника рынка есть свободные деньги, то их можно отнести в банк иполучать проценты или купить на них ценные бумаги и получать дополнительныйдоход. Но в какой банк отнести? Какие ценные бумаги купить? Малорисковые ценныебумаги, как правило, и малодоходны, высокодоходные, как правило, болеерисковые. Экономическая наука может дать некоторые рекомендации для решенияэтого вопроса.

Постановка задачи.

Рассмотрим общую задачу распределения капитала, которыйучастник рынка хочет потратить на покупку ценных бумаг, по различным видамценных бумаг. Предваряя точные математические постановки, констатируемочевидную общую цель инвестора – вложить деньги так, чтобы сохранить свойкапитал, а при возможности и нарастить его.

Набор ценных бумаг, находящихся у участника рынка,называется его портфелем. Стоимость портфеля – это суммарная стоимость всехсоставляющих его бумаг. Если сегодня его стоимость есть  Р , а через год онаокажется равной  Р¢, то (Р¢-Р)/Рестественно назвать доходностью портфеля в процентах годовых. Т.е. доходностьпортфеля – это доходность на единицу его стоимости.

Пусть хi – доля капитала,потраченная на покупку ценных бумаг i-го вида.Рассуждения о долях эквивалентны тому, что весь выделенный капитал принимаетсяза единицу. Пусть di – доходность впроцентах годовых ценных бумаг i-го вида в расчете наодну денежную единицу.

Найдем доходность всего портфеля dp.С одной стороны, через год капитал портфеля будет равен 1+ dp,с другой -  стоимость бумаг i-го вида увеличиться с хдо xi<sub/>+ di*xi, так чтосуммарная стоимость портфеля будет равна Sxi<sub/>+ Sxi*di = 1 + Sxi*di. Приравнивая оба выражения для стоимостипортфеля, получаем dp<sub/>=Sxi*di.

Итак, задача увеличения капитала портфеля эквивалентнааналогичной задаче о доходности портфеля, выраженной через доходности бумаг иих доли.

Как правило, доходность бумаг колеблется во времени, так чтобудем считать ее случайной величиной. Пусть mi,si– средняя ожидаемая доходность и среднее квадратическое отклонение (СКО) этойслучайной доходности, т.е. mi=M[di] —  математическоеожидание доходности и ri=ÖVii,где 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=ÖD[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) уравнения.

Запишем полученные уравнения в матричной форме, используяследующие обозначения:

/> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> <td/> /> <td/> /> <td/> /> <td/> /> />

        1                x1                             m1

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

         .                  .                    .

        1                xn                             mn

Штрих применяется для обозначения операции транспонированияматрицы.

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=Ö 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];forl:=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 beginE[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]<mi then mi:=m[i];

         end;

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

        write('  Она должна быть в пределах эффективностейценных бумаг: ');

        out5:

        readln(mp);

      if (mp<mi) or (mp>ma) 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.

еще рефераты
Еще работы по экономико-математическому моделированию