Главная Софт Анализ данных Видеоурок по MATLAB - Оптимальный портфель без ограничений на короткие продажи
Видеоурок по MATLAB - Оптимальный портфель без ограничений на короткие продажи
04.11.2010 11:00

Оптимизация портфеля – один из мощнейших методов управления капиталом. В основе его лежит идея диверсификации. При помощи правильного подбора активов и их весов в портфеле можно существенно снизить общую волатильность инвестиции. Это, в свою очередь, обеспечивает дополнительный потенциал для роста, поскольку становится возможным более агрессивно использовать финансовый рычаг. В итоге можно добиться существенного увеличения прибыльности вложений. К несчастью, «оптимальный портфель» для многих инвесторов и трейдеров до сих пор остается больше теоретической концепцией, нежели практической методологией. Во многом это связано с математическими аспектами проблемы. Напр., зная ожидаемую доходность и волатильность, оптимальный рычаг, можно вычислить на обычном микрокалькуляторе или даже в уме. Для расчета же весов оптимального портфеля требуются матричные операции! Такое уже не под силу обычному калькулятору. Вот тут на сцену и выходит MATLAB, который в определенном смысле можно рассматривать как очень навороченный калькулятор. В среде MATLAB матричные операции, необходимые для портфельной оптимизации, становятся столь же простыми как обычное сложение и умножение. В этом мы и убедимся из данного урока…



Рассмотрим возможности портфельной оптимизации в MATLAB на примере российских «голубых фишек» из индекса ММВБ10 за 2009, а именно:

  • Газпром (GAZP)
  • Норникель (GMKN)
  • Лукойл (LKOH)
  • Роснефть (ROSN)
  • Сбербанк (SBER)
  • Сургутнефтегаз (SNGS)
  • ВТБ (VTBR)

  • В 2009 году ММВБ10 дважды менял структуру активов. Неизменными в течение года были 8 акций. Префы Сбербанка были исключены по причине очень сильной корреляции с обыкновенными акциями СБ. Итого осталось 7 акций. Файл с котировками этих инструментов за 2009 год можно скачать в конце урока. Для простоты будем искать оптимальный портфель фьючерсов на эти активы. В таком случае можно воспользоваться концепцией безрисковой ставки. Это подразумеваемая участниками фьючерсного рынка усредненная процентная ставка, близкая к ставке рефинансирования. Для того периода достаточно реалистичной будет цифра 10% годовых. Кроме того, фьючерсы «делают ОК» короткие продажи и высокий уровень финансового рычага, а он нам потребуется, поскольку мы рассчитываем (для простоты примера) на продолжение хорошего роста, который показали «фишки» в прошлом году.



    (Рекомендуется смотреть в полноэкранном режиме)


    Комментарии


    Основные выражения из командной строки:

  • p=price2ret(P);
  • g=(exp(mean(p)'*248)-1)*100
  • s=std(p)*248^0.5;
  • m=mean(p)*248+s.^2/2;
  • C=corr(p);
  • K=corr2cov(s,C);
  • w=K^-1*(m-r)'
  • Lp=sum(abs(w))
  • Mp=(m-r)*w;
  • Sp=sqrt(w'*K*w)
  • Gp=(exp(Mp-Sp^2/2)-1)*100
  • ezplot(@(v)(exp(Mp/Sp.*(v/100)-(v/100).^2/2)-1)*100,[0,450])
  • F=Sp/0.5
  • plot(cumprod(1+(exp(p)-1)*w/F))

  • В этом видеоуроке использовались следующие функции:

  • price2ret() – конвертирует цены в доходности;
  • std() – стандартное отклонение/волатильность;
  • mean() – среднее значение;
  • corr() – корреляция;
  • corr2cov() – конвертирует стандартные отклонения и корреляции в ковариации;
  • sum() – суммирует элементы массива;
  • abs() – абсолютное значение/модуль числа;
  • ezplot() – строит график функции;
  • plot() – строит график по табличным значениям;
  • cumprod() – накопленное произведение;
  • exp() – экспонента.

  • Квинтэссенцией этого урока является строчка: w=K^-1*(m-r)'.

    MATLAB позволяет «забыть», что K – это матрица, а m – вектор. Расчет весов оптимального портфеля визуально, таким образом, превращается в обычное арифметическое выражение. Нетрудно убедится, что оно является обобщением формулы для оптимального финансового рычага:

    (m-r)/s^2 = 1/s^2*(m-r) = V^-1*(m-r),

    V = s^2 – дисперсия актива.


    Веса распределились следующим образом:

  • Газпром: -2.29
  • Норникель: 0.51
  • Лукойл: -1.64
  • Роснефть: 3.29
  • Сбербанк: 3.62
  • Сургутнефтегаз: -0.98
  • ВТБ: -0.87

  • Из урока мы узнали, что оптимальный портфель в общем случае имеет финансовый рычаг и короткие продажи. Короткие продажи возникают из-за сильной корреляции активов, в чем мы убедились, посмотрев на корреляционную матрицу – C. В такой ситуации активы, сильно коррелирующие с лидерами, «приносятся в жертву», т.е. шортятся, даже не смотря на их положительные доходности. В итоге волатильность портфеля снижается больше, чем доходность, это дает доступ к более агрессивному рычагу и увеличивает потенциал роста. В нашем случае в шорт попали: Газпром, Лукойл, Сургутнефтегаз и ВТБ. Они имеют более низкое отношение Шарпа (доходность/волатильность) по сравнению с другими компаниями и при этом сильные корреляции с Роснефтью и Сбербанком – активами с хорошим отношением (m-r)/s. Эти четыре акции, поэтому были пожертвованы в шорте для создания хеджа по Сберу и Роснефти.


    Мы остановили выбор на портфеле с волатильностью 50% годовых. Такой уровень риска обеспечивает потенциал роста около 175%. Совокупный рычаг нашего портфеля составил Lp/F = 13.20/4.53 = 2.92. На практике это означает, что при капитале, допустим, 1 миллион рублей, мы должны купить и продать фьючерсов на сумму 2 млн. 920 тыс. р. В частности, продать фьючерсов Газпрома на 1000000р.*2.29/4.53 = 505519р.; купить Норникеля на 1000000р.*0.51/4.53 = 112583р. и т.д. Зная эти цифры, нетрудно подсчитать необходимое количество контрактов для покупки/продажи. Представляет также интерес сравнить полученный портфель с бенчмарком – ММВБ10: максимальный рост в 277.96% годовых при оптимальном финансовом рычаге по индексу был доступен с волатильностью 163.07%. Оптимизированный портфель при том же уровне волатильности дает рост более 961%! Можно посмотреть на это и под другим углом. Наш портфель дает эквивалентный рост при значительно более низкой волатильности – менее 70%.



    © q-trader

    [обсудить на форуме]


    Вложения:
    ФайлОписаниеРазмер файлаЗагрузки
    Скачать файл (blue-chips.txt)blue-chips.txtКотировки российских голубых фишек за 200912 Kb1632
     

    Комментарии  

     
    0 # riskovik 18.12.2010 21:47
    Я вот что-то никак не могу понять как это волатильность может быть больше 100%. Получается, что в этом случае цена может быть отрицательной :eek:
    А есть ведь еще правило трех сигм. Так это ведь вообще тогда в минус уйдет огого
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # q-trader 20.12.2010 20:08
    Стандартное отклонение - мера волатильности - это просто формальное число. При его расчете нет никаких спец. ограничителей, поэтому она и может быть больше 100%. Однако в нашем случае - процентные величины, поэтому тут не возникает никаких парадоксов. Чтобы получить границы диапазона типичных колебений нужно текущую цену разделить на 1+σ для нижней границы и умножить на тоже число для верхней. Напр., при текущей цене 100 и волатильности 100%, верняя граница будет 200, а нижняя 50
    Т.е. в случае процентных веичин надо делить и умножать, а не вычитать и прибавлять
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # riskovik 21.12.2010 11:34
    Спасибо. Разобрался :-)
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # extybr 28.12.2010 02:50
    Не могу разобраться, как создать ограничения по коротким позициям. А также непонятны некоторые коэффициенты в формулах. Поможете?
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # q-trader 28.12.2010 16:11
    Конечно, помогу :-)

    Чтобы задать ограничения на короткие продажи надо использовать функцию quadprog() - это спец. оптимизатор из разряда квадратическое программировани е. там можно задавать всевозможные структуры ограничений на веса, в том числе и запрет отрицательных. Это уже как бы "отдельная песня". В планах отдельный видеоурок. Но если надо срочно, могу описать пример в текстовом виде
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # extybr 28.12.2010 19:29
    В МатЛабе я новичок. подобные задачи решаю в Excel. Но приходиться создавать отдельный файл для каждого портфеля на n-бумаг, где и высчитываются все параметры. А для определения доли бумаг в портфеле использую функцию "поиск решения", где и задаю ограничения по допустимому риску, по коротким позициям и макс. доли эмитентов в портфеле. Отдельно описать пример лучше в видеоуроке (это затраченное время и силы оценят все)
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # q-trader 28.12.2010 21:02
    Хорошо. Тогда потерпите маленько. Думаю, после праздников будет выложено уже и видео
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # VH 14.01.2011 19:29
    Скажите, применение этого подхода для ФОРЕКС реально?
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # q-trader 14.01.2011 23:28
    Да. Пожалуй, даже форекс больше подходит под его теоретические основы, чем, скажем, акции, поскольку это наверное самый ликвидный рынок - цены движутся часто и относительно "гладко"
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # VH 15.01.2011 13:40
    Спасибо за ответ. А такой момент как "доходность" является ли правомочным для котировок валют? Я имею в виду то, что если принимать колебания курсов как случайное блужданием (ну или почти) да к тому же сильно волатильное, то доходность (в классическом понимании) может стремиться к нулю.
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # q-trader 16.01.2011 20:14
    Это т.н. "ожидаемая доходность". Теория оптимального портфеля ничего не говорит о том откуда ее брать - это просто не ее задача. На практике - это может быть экспертная оценка или простая экстраполяции текущего тренда. Да хоть астропрогноз. Если повезет, и ожидаемые доходности (а также волатильности и корреляции) будут достаточно точно спрогнозированы (угаданы), то результат будет отличным. Но даже если не повезет, скорее всего, убытки будут значительно меньше за счет эффекта диверсификации
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # riskovik 17.01.2011 11:26
    А вы бы какими методами прогнозирования порекомендовали пользоваться?
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # q-trader 17.01.2011 12:42
    Я сторонник комплексного подхода. В идеале ФА+ТА+экстрапол яция. Каждому прогнозу придаем некоторый вес. Таким образом получается более устойчивая оценка
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # riskovik 18.01.2011 18:27
    А как подбирать эти веса?
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # q-trader 18.01.2011 22:16
    Ну, как всегда, обучая по прошлым данным. Ну, или просто кому больше веришь, тому и сильнее вес придать
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # VH 17.01.2011 03:11
    Будет приведён аналогичный пример для валютных пар? Думаю, многим трейдерам будет очень актуально. Желательно с небольшим горизонтом инвестирования: неделя или месяц.
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # q-trader 17.01.2011 12:38
    Ну раз есть спрос - будет и предолжение
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # jer 20.02.2011 12:00
    Скажите, а почему вы не использовали функции из финансового модуля, portalloc и др.?
    Ответить | Ответить с цитатой | Цитировать
     
     
    0 # q-trader 20.02.2011 21:25
    Дело в том, что в этом тулбоксе используется близкая, но несколько другая методология - для 1-периодной модели. В настоящем же уроке рассматривается динамическая оптимизация в непрерывном времени. Кроме того, хотелось продемонстирова ть матричные возможности Матлаба
    Ответить | Ответить с цитатой | Цитировать
     

    Добавить комментарий


    Защитный код
    Обновить



    © 2010–2012. Все права защищены.
    Копирование материалов, размещенных на сайте, разрешается только с рабочей ссылкой на источник.



    | О проекте |  Правовая информация |
    |  Напишите нам |  Карта сайта |



      

     Новости
    главные новости экономики и финансовых рынков: события, мнения, прогнозы.

     Статьи
    материалы по теханализу, фундаментальному анализу, управлению капиталом (манименеджмент) и др.

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

     Калькуляторы
    xls-калькуляторы для оптимизации размера и структуры торговой позиции; опционные калькуляторы.

     Софт
    торговые терминалы, программы для теханализа, оптимизации систем и др.: статьи, обзоры, видеоуроки.

     Архив котировок
    индексы, валюты, сырье: многолетние истории котировок в форматах .xls и .txt.

     Индикаторы
    ºSiX – индикатор настроения рынка на основе расчета соотношения количества опционных контрактов put и call.

     Библиотека
    собрание книг, которые рекомендуется прочесть каждому трейдеру в первую очередь.

     Словарь
    толкование основных экономических, финансовых терминов, трейдерский сленг.

     Форум
    обсуждение материалов сайта и любых вопросов трейдинга и инвестирования.