Оптимизация портфеля ценных бумаг с помощью модели Марковица

 ГОУ ВПО «АДЫГЕЙСКИЙ   ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» ФАКУЛЬТЕТ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК

 
Кафедра алгебры и геометрии

КУРСОВАЯ  РАБОТА

 
Соловей Екатерина Александровна

студентка 3-го курса очного отделения  
специальность
010200 «Прикладная математика» 

Оптимизация портфеля ценных бумаг  с помощью модели Марковица 
 

         Научный руководитель:

                     ст.пр. Калашникова  С.И._______ 
                 
                 
                 
                 
                 
                 

      Майкоп, 2011 

СОДЕРЖАНИЕ

ВВЕДЕНИЕ ……………………………………………………………………. 3

ГЛАВА 1. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ В ЭКОНОМИЧЕСКОМ  АНАЛИЗЕ……………………………………………………………………….4

    1. Линейное программирование…………………………………….4
    2. Метод линейного программирования в экономическом   анализе……......................................................................................6

   1.3. Решение задач линейного программирования ………………………8

   1.4. Целочисленные задачи линейного программирования……………...10

ГЛАВА 2. МОДЕЛЬ МАРКОВИЦА ОПТИМИЗАЦИИ ПОРТФЕЛЯ ЦЕННЫХ БУМАГ………………………………………………………………17

   2.1. История создания инвестиционного портфеля……………………….17

    2.2. Модель Марковица……………………………………………………..20

    2.3. Задача Марковица……………………………………………………....27

ЗАКЛЮЧЕНИЕ………………………………………………………………… 34

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ……………………………35

ПРИЛОЖЕНИЕ…………………………………………………………………36 
 
 

 

ВВЕДЕНИЕ

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

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

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

     Этими факторами обусловлен выбор темы данной работы - Оптимизация портфеля ценных бумаг с помощью метода Марковица.

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

 

ГЛАВА 1.  ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ В ЭКОНОМИЧЕСКОМ  АНАЛИЗЕ

    1. Линейное программирование

     Линейное программирование —  раздел математического программирования, применяемый при разработке методов  отыскания экстремума линейных  функций нескольких переменных  при линейных дополнительных  ограничениях, налагаемых на переменные. По типу решаемых задач его  методы разделяются на универсальные  и специальные. С помощью универсальных  методов могут решаться любые  задачи линейного программирования (ЗЛП). Специальные методы учитывают  особенности модели задачи, ее  целевой функции и системы  ограничений.

     Особенностью задач линейного  программирования является то, что  экстремума целевая функция достигает  на границе области допустимых  решений. Классические же методы  дифференциального исчисления связаны  с нахождением экстремумов функции  во внутренней точке области  допустимых значений. Отсюда —  необходимость разработки новых  методов.

     Формы записи задачи линейного  программирования:

     Общей задачей линейного  программирования называют задачу

                        (1.1)

     при ограничениях

             (1.2)

               (1.3)

                 (1.4)

                            (1.5)

    - произвольные                                                                                              (1.6)

 где              - заданные действительные числа; (1.1) – целевая функция; (1.2) – (1.6) –ограничения;                    - план задачи.

     Пусть ЗЛП представлена в следующей  записи:

                                                      (1.7)

                                       (1.8)

                                           (1.9)

     Чтобы задача (1.7) – (1.8) имела решение, система её ограничений (1.8) должна быть совместной. Это возможно, если  r этой системы не больше числа неизвестных n. Случай r>n вообще невозможен. При r=n система имеет единственное решение, которое будет при оптимальным. В этом случае проблема выбора оптимального решения теряет смысл. Выясним структуру координат угловой точки многогранных решений. Пусть r<n. В этом случае система векторов содержит базис — максимальную линейно независимую подсистему векторов, через которую любой вектор системы может быть выражен как ее линейная комбинация. Базисов, вообще говоря, может быть несколько, но не более . Каждый из них состоит точно из r векторов. Переменные ЗЛП, соответствующие r векторам базиса, называют, как известно, базисными и обозначают БП. Остальные n – r переменных будут свободными, их обозначают СП. Не ограничивая общности, будем считать, что базис составляют первые m векторов Этому базису соответствуют базисные переменные , а свободными будут переменные .

     Если свободные переменные приравнять  нулю, а базисные переменные при  этом примут неотрицательные  значения, то полученное частное  решение системы (8) называют опорным  решением (планом).

    Задачи  оптимального планирования, связанные  с отысканием оптимума заданной целевой  функции (линейной формы) при наличии  ограничений в виде линейных уравнений  или линейных неравенств относятся  к задачам линейного программирования.

    Линейное  программирование - наиболее разработанный  и широко применяемый раздел математического  программирования. Это объясняется  следующим:

  • математические модели очень большого числа экономических задач линейны относительно искомых переменных;
  • эти типы задач в настоящее время наиболее изучены;
  • для них разработаны специальные конечные методы, с помощью которых эти задачи решаются, и соответствующие стандартные программы для их решения на ЭВМ;
  • многие задачи линейного программирования, будучи решенными, нашли уже сейчас широкое практическое применение в народном хозяйстве;
  • некоторые задачи, которые в первоначальной формулировке не являются линейными, после ряда дополнительных ограничений и допущений могут стать линейными или могут быть приведены к такой форме, что их можно решать методами линейного программирования.

    Математическая  модель любой задачи линейного программирования включает в себя:

  • максимум или минимум целевой функции (критерий оптимальности);
  • систему ограничений в форме линейных уравнений и неравенств;
  • требование не отрицательности переменных.
 
    1. Метод линейного программирования в экономическом  анализе 

    Метод линейного программирования дает возможность  обосновать наиболее оптимальное экономическое  решение в условиях жестких ограничений, относящихся к используемым в  производстве ресурсам (основные фонды, материалы, трудовые ресурсы). Применение этого метода в экономическом  анализе позволяет решать задачи, связанные главным образом с  планированием деятельности организации. Данный метод помогает определить оптимальные  величины выпуска продукции, а также  направления наиболее эффективного использования имеющихся в распоряжении организации производственных ресурсов.

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

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

    Весьма  распространено решение так называемой транспортной задачи с помощью метода линейного программирования. Содержание этой задачи заключается в минимизации  затрат, осуществляемых в связи с  эксплуатацией транспортных средств  в условиях имеющихся ограничений  в отношении количества транспортных средств, их грузоподъемности, продолжительности  времени их работы, при наличии  необходимости обслуживания максимального  количества заказчиков.

    Кроме этого, данный метод находит широкое  применение при решении задачи составления  расписания. Эта задача состоит в  таком распределении времени  функционирования персонала данной организации, которое являлось бы наиболее приемлемым как для членов этого  персонала, так и для клиентов организации.

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

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

 

1.3. Решение задач линейного программирования

Общей задачей  линейного программирования называется задача, которая состоит в определении максимального (минимального) значения функции

                                                          (1.10)

при условиях  
 
 

где              - заданные постоянные величины и k ≤ m.

  Функция (1.10) называется целевой функцией (или линейной формой) задачи (1.10) — (1.13), а условия (1.11)(1.13) — ограничениями данной задачи.

  Совокупность  чисел Х=(х1,x2,...,хn), удовлетворяющих ограничениям задачи (1.11)(1.13), называется допустимым решением (или планом).

  План, Х*=(х1*, x2* , ..., хn*) при котором целевая функция задачи (1.10) принимает свое максимальное (минимальное) значение, называется оптимальным.

  Значение  целевой функции (1.10) при плане X будем обозначать через  
F(X). Следовательно, X* — оптимальный план задачи, если для любого X выполняется неравенство F (X) ≤ F (X*) [соответственно F(X) ≥ F(X*)].

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

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

  В том случае, когда требуется найти  минимум функции F=c1x1+ c2x2…+ cnxn можно перейти к нахождению максимума функции F1 =-F=-c1x1-c2x2 …- cnxn, поскольку min F = max (—F).

   Ограничение – неравенство исходной задачи линейного программирования, имеющее вид «≤», можно преобразовать в ограничение-равенство добавлением к его левой части дополнительной неотрицательной переменной, а ограничение – неравенство вида «≥» — в ограничение-равенство вычитанием из его левой части дополнительной неотрицательной переменной. Таким образом, ограничение-неравенство 

преобразуется в ограничение-равенство

а ограничение-неравенство 

— в ограничение-равенство 

В то же время  каждое уравнение системы ограничений 

  можно записать в виде неравенств: 

     Число вводимых дополнительных неотрицательных  переменные при преобразовании ограничений-неравенств в ограничения-равенства равно числу преобразуемых неравенств.

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

     Отметим, наконец, что если переменная xk не подчинена условию неотрицательности, то ее следует заменить двумя неотрицательными переменными uk и vk, приняв xk= uk - vk .

1.4.Целочисленные задачи линейного программирования

       Экстремальная задача, переменные которой принимают лишь целочисленные значения, называется задачей целочисленного программирования.

       Определение оптимального плана задачи целочисленного программирования.

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

                                     (1.14)

      при условиях:

                     
 
 

     Если  найти решение задачи (1.14) — (1.17) симплексным методом, то оно может оказаться как целочисленным, так и нет (примером задачи линейного программирования, решение которой всегда является целочисленным, служит транспортная задача). В общем же случае для определения оптимального плана задачи (1.14) — (1.17) требуются специальные методы. В настоящее время существует несколько таких методов, из которых наиболее известным является метод Гомори, в основе которого лежит симплексный метод.

     Метод Гомори.

      Нахождение решения задачи целочисленного программирования методом Гомори начинают с определения симплексным методом оптимального плана задачи (1.14) — (1.17) без учета целочисленности переменных. После того, как этот план найден, просматривают его компоненты. Если среди компонент нет дробных чисел, то найденный план является оптимальным планом задачи целочисленного программирования (1.14) — (1.17). Если же в оптимальном плане задачи (1.14) — (1.17) переменная      принимает дробное значение, то к системе уравнений (1.15) добавляют неравенство

                                                               (1.18)

      и находят решение задачи (1.14) — (1.17), (1.18)

      В неравенстве (1.18)     и       - преобразованные исходные величины aij и bi, значения которых взяты из симплекс-таблицы, а          и        - дробные части чисел (под дробной частью некоторого числа а понимается наименьшее неотрицательное число bтакое, что разность между а и b есть целое). Если в оптимальном плане задачи (1.14) — (1.16) дробные значения принимают несколько переменных, то дополнительное неравенство (1.18) определяется наибольшей дробной частью.

     Если  в найденном плане задачи (1.14) — (1.16), (1.18) переменные принимают дробные значения, то снова добавляют одно дополнительное ограничение и процесс вычислений повторяют. Проводя конечное число итераций, либо получают оптимальный план задачи целочисленного программирования (1.14) — (1.17), либо устанавливают ее неразрешимость.

      Если требование целочисленности (1.17) относится лишь к некоторым переменным, то такие задачи называются частично целочисленными. Их решение также находят последовательным решением задач, каждая из которых получается из предыдущей с помощью введения дополнительного ограничения. В этом случае такое ограничение имеет вид

                                                             (1.19)

     где          определяются из следующих соотношений:

    1. для xj, которые могут принимать нецелочисленные значения,

                                                                при ≥ 0

                                                                           при < 0 

     
    1. для xj, которые могут принимать только целочисленные значения,

                                                                   при

                                                                  при >  

     Из  изложенного выше следует, что процесс  определения оптимального плана задачи целочисленного программирования методом Гомори включает следующие основные этапы:

     1. Используя симплексный метод,  находят решение задачи (1.14) — (1.16) без учета требования целочисленности переменных.

     2. Составляют дополнительное ограничение  для переменной, которая в оптимальном плане задачи (1.14) — (1.16) имеет максимальное дробное значение, а в оптимальном плане задачи (1.14) — (1.17) должна быть целочисленной.

     3. Используя двойственный симплекс-метод,  находят решение задачи, получающейся из задачи (1.14) — (1.16) в результате присоединения дополнительного ограничения.

     4. В случае необходимости составляют  еще одно дополнительное ограничение и продолжают итерационный процесс до получения оптимального плана задачи (1.14) — (1.17) или установления ее неразрешимости. 

    Задача 1. Нефтеперерабатывающий завод располагает двумя сортами нефти: сортом А в количестве 10 единиц, сортом В — 15 единиц. При переработке из нефти получаются два материала: бензин (обозначим Б) и мазут (М). Имеется три варианта технологического процесса переработки:

I: 1ед.А  + 2ед.В дает 3ед.Б + 2ед.М  
II:2ед.А + 1ед.В дает 1ед.Б + 5ед.М  
III:2ед.А + 2ед.В дает 1ед.Б + 2ед.М

    Цена  бензина — 10 долл. за единицу, мазута — 1 долл. за единицу. Требуется определить наиболее выгодное сочетание технологических  процессов переработки имеющегося количества нефти.  
Перед моделированием уточним следующие моменты. Из условия задачи следует, что "выгодность" технологического процесса для завода следует понимать в смысле получения максимального дохода от реализации своей готовой продукции (бензина и мазута). В связи с этим понятно, что "выбор (принятие) решения" завода состоит в определении того, какую технологию и сколько раз применить. Очевидно, что таких возможных вариантов достаточно много.

    Обозначим неизвестные величины:

    хi—количество использования i-го технологического процесса (i=1,2,3).  
Остальные параметры модели (запасы сортов нефти, цены бензина и мазута) известны.  
Теперь одно конкретное решение завода сводится к выбору одного вектора х=( х123), для которого выручка завода равна (32х1+15х2 +12х3) долл. Здесь 32 долл. — это доход, полученный от одного применения первого технологического процесса (10 долл.·3ед.Б + 1 долл.·2ед.М = 32 долл.). Аналогичный смысл имеют коэффициенты 15 и 12 для второго и третьего технологических процессов соответственно. Учет запаса нефти приводит к следующим условиям:

     для сорта  А:  
        для сорта В:

где в первом неравенстве коэффициенты 1, 2, 2 —  это нормы расхода нефти сорта  А для одноразового применения технологических  процессов I, II, III соответственно. Коэффициенты второго неравенства имеют аналогичный  смысл для нефти сорта В.  
Математическая модель в целом имеет вид:

Найти такой  вектор х = ( х123),чтобы максимизировать  
f(x) =32х1+15х2 +12х3 при выполнении условий:

 

 

Сокращенная форма  этой записи такова:

при ограничениях

 
 

Мы получили так называемую задачу линейного программирования.

Решение.

Сформулированную  задачу перепишем так: найти максимальное значение функции

                                                 f(x) =32х1+15х2 +12х3                                    (1.24)

при условиях:                                                                         

(1.25)

 

     Задача  (1.24) — (1.26) является частично целочисленной, так как переменные x1 , x2 и x3 могут принимать нецелочисленные значения.

     Находим симплексным методом решение задачи (1.24) – (1.25)  
(табл. 1).

Таблица 1.

БП Сб Р0 32 15 12 0 0
Р1 Р2 Р3 Р4 Р5
Р4 0 10 1 2 2 1 0
Р5 0 15 2 1 2 0 1
    0 -32 -15 -12 0 0
Р4 0 5/2 0 3/2 1 1 -1/2
Р1 32 15/2 1 1/2 1 0 1/2
    240 0 1 20 0 16
Оптимизация портфеля ценных бумаг с помощью модели Марковица