Домашнее задание по теме "Коническая оптимизация для управления портфелем"
для получение полного бала необходимо решить задачу 4 и одну из задач 5 или 6.
Задача 7 - задача для сомостоятельной работы для тех кто хочет больше углубиться в тему. Любые мысли на тему ее решения приветствуются, но в зачет по домашнему заданию не входят.
Задача 4
Напишите функцию, которая решает задачу выбора оптимального портфеля Марковица по следующим входным данным:
матрица разложения инструментов по факторам: один размер определяет число инструментов, второй размер определяет число факторов;
матрица ковариации факторов (порядок факторов считать согласованным с матрицей ;
вектор длины идиосинкратического риска: компонента вектора равна ;
вектор ожидаемых доходностей инструментов;
параметр "неприятия риска" ;
максимальная сумма всех позиций портфеля по абсолютной величине (maxGross);
флаг, разрешающий или запрещающий короткие (отрицательные) позиции инструментов в портфеле;
в случае если короткие позиции разрешены, минимальная/максимальная сумма всех позиций портфеля (minNet / maxNet);
Требования к выходным данным:
позиции всех инструментов в портфеле;
позиции портфеля по всем факторам;
риск портфеля и ожидаемую доходность.
Было бы очень хорошо аккуратно обрабатывать случаи, когда оптимизатор говорит, что проблема либо не имеет решения, либо выдет статус решения, отличный от Optimal solution found.
Сигнатура функции:
Когда решение готово запусите код в следующей ячейке, он распечатает результаты для некоторых вариантов расчета с тестовыми данными.
Задача 5
Добавьте в задачу оптимизации 4 линейные органичения по факторам. К входным данным добавляется список индексов факторов, для которых будут ограничения. Каждое ограничение представляет собой пару чисел: максимальное и минимальное значение суммарной позиции портфеля по фактору.
Задача 6
Модифицируйте функцию из задачи 3 или задачи 4 для решения задачи ребалансировки портфеля (см. слайд "Оптимальная ребалансировка портфеля" лекции). Имеется начальный портфель , который требуется оптимально изменить путем добавления "вектора ребалансировки" . Компоненты этого вектора могут быть как положительны (докупаем акций), так и отрицательными (продаем акции), но результирующий портфель должен иметь все положительные компоненты, причем
.
В модифицированной функции оптимизации Марковица добавляется сумма транзакционных издержек . Издержки торговли одним инструментом не влияют на другие инструменты, они пропорциональны количеству проторгованного:
.
Коэффициенты пропорциональности считаем постоянными величинами, зависящими отсвойств акции. Вектор этих коэффициентов добавляется в спсиок входных данных.
Задача 7 (сложная)
Написать функцию, реализующую оптимальную ликвидацию портфеля в несколько шагов. Имеется начальный портфель , от которого нужно полностью избавиться за несколько шагов, то есть построить кусочно-линейную траекторию с узлами , . Число шагов известно заранее, это параметр задачи. Траектория ликвидации портфеля должна быть монотонной по каждому инструменту. Траектория должна быть оптимальной в том смысле, что она минимизирует функционал
Транзакционные издержки в этом случае (в отличие от задачи 6) являются квадратичной функцией по каждому инструменту.
Литературы по этой задаче в последние годы очень много, ищите по кодовымсловам Almgren - Chriss portfolio execution model.