Методы интегрального программирования для оптимизации портфеля в финансовой инженерии

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

Понимание оптимизации портфеля

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

Практическое управление портфелем должно бороться с дискретными ограничениями, такими как:

Эти дискретные аспекты делают модели непрерывной оптимизации неадекватными. Целое программирование обеспечивает строгую математическую основу для включения таких ограничений непосредственно в задачу оптимизации.

Роль целочисленного программирования в финансовой инженерии

Финансовая инженерия применяет математические и вычислительные методы для решения проблем в финансах. Целое программирование подходит естественным образом, потому что многие финансовые решения по своей сути дискретны: включать ли актив, сколько контрактов на торговлю или какие инструменты хеджирования использовать. В отличие от линейного или квадратичного программирования, которое предполагает переменную непрерывность, целое программирование использует бинарное (0/1) или общее целое число переменные для представления этих вариантов. Это позволяет модели захватывать реальные функции, которые в противном случае были бы приближены или проигнорированы.

Бинарные переменные и выбор активов

Бинарные переменные — это рабочая лошадка проблем выбора активов. Для каждого актива-кандидата двоичная переменная указывает на включение (1) или исключение (0). Объективная функция и ограничения затем могут быть выражены в терминах этих двоичных решений. Например, фонд может захотеть выбрать подмножество из 20 акций из подходящей вселенной 500. Ограничение, что выбирают ровно 20 активов, — это линейная сумма двоичных переменных, равная 20. Без целочисленного программирования пришлось бы полагаться на эвристический скрининг или ранговые методы, которые не имеют формальных гарантий оптимальности.

Бинарные переменные также позволяют моделировать взаимную эксклюзивность (выберите актив А или актив В, но не оба), логические условия (если актив X включен, то актив Y также должен быть включен) и многоуровневые инвестиционные стратегии.

Целые переменные для инвестиционных количеств

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

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

Реальные мировые ограничения

Помимо простого выбора активов и количественных решений, целочисленное программирование может кодировать широкий спектр практических инвестиционных правил:

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

Формулирование модели интегрального программирования

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

Максимизировать (или минимизировать) f(x) при условии A x ≤ b, l ≤ x ≤ u, x i ∈ Z для i ∈ I

где x является вектором переменных решений, A является матрицей ограничения, b является правым боковым вектором, а I является набором индексов для целых переменных.Объект f(x) часто линейный или квадратичный, представляющий ожидаемую доходность, дисперсию или комбинацию.

Объективные функции

На практике цель может быть выбрана в соответствии с целями инвестора:

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

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

Ограничения

Типичные ограничения в модели портфеля целочисленного программирования включают:

  • Бюджетное ограничение: Сумма инвестиций равна общему капиталу. Для целых размеров лота бюджетное ограничение может включать в себя целочисленную переменную, умноженную на цену лота.
  • Ограничение порядочности: Сумма переменных выбора бинарных активов ≤ K (максимальное количество активов).
  • Низкая граница веса актива: если актив i включен, его вес ≥ L i. Для включения или выключения ограничения используется двоичная переменная.
  • Верхняя граница на вес актива : аналогичная логика с бинарными переменными для обеспечения максимальных пределов удержания.
  • Ограничения по сектору или факторному воздействию : линейные комбинации переменных решений, ограниченных выше и ниже.
  • Ограничения на операционные издержки : фиксированная стоимость за сделку может быть смоделирована с использованием бинарных переменных, которые несут стоимость, если сделка происходит.

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

Образец модели

Рассмотрим упрощенную проблему выбора портфеля с N активами. Пусть x i будет непрерывным весом актива i (фракция богатства), а y i - двоичной переменной, указывающей, удерживается ли актив i. Модель может выглядеть так:

Минимизируйте Σ i Σ j σ ij x i x j (вариантность)
С учетом:
Σ i r i x i ≥ R target (мишень ожидаемой доходности)
Σ i x i = 1 (полностью инвестирован)
l i ≤ x i ≤ u i ≤ u i для всех i (вес между l i и u i только в случае владения)
Σ i y i ≤ K (в большинстве активов K)
x i ≥ 0, y i ∈ {0,1}

Это смешанная квадратичная программа. Ограничения, связывающие x i и y i, гарантируют, что если y i = 0, вес x i должен быть равен нулю; если y i = 1, вес ограничен между l i и u i. Ограничение кардинальности ограничивает количество активов.

Решать модели интегрального программирования

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

Ветвь и граница

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

Методы сокращения самолетов

Срезные плоскости добавляют новые линейные ограничения (разрезы) к непрерывному расслаблению, которые затягивают осуществимую область без удаления каких-либо целых осуществимых точек. Эти разрезы уменьшают разрыв интегральности — разницу между оптимальной целью расслабления и истинным целым оптимом. Общие разрезы, используемые в оптимизации портфеля, включают разрезы Гомори, разрезы округления смешанных чисел и разрезы покрытия. Многие решатели автоматически применяют плоскости разреза во время процесса разветвления и разреза.

Эвристика и метаэвристика

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

  • Круглая эвристика: решить непрерывную релаксацию и круглые дробные целочисленные переменные до 0 или 1 на основе порогов.
  • Локальный поиск : начните с возможного решения из целого числа и изучите небольшие изменения (например, замена актива в и из) для улучшения цели.
  • Генетические алгоритмы и смоделированные отжига : популяционные или случайные методы ходьбы, которые могут обрабатывать невыпуклости.
  • Лагранжевая релаксация: расслабляет усложняющие ограничения и использует субградиентную оптимизацию для генерации хороших двойных решений, которые могут быть преобразованы в первичные решения.

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

Практическая реализация

Решение целочисленных моделей программирования в финансовой инженерии требует надежного программного обеспечения оптимизации. Коммерческие решатели, такие как Gurobi, CPLEX и MOSEK, предлагают современные реализации алгоритмов разветвления и включают в себя специфические функции портфеля. Альтернативы с открытым исходным кодом, такие как SCIP, GLPK и CBC COIN-OR, также доступны, но могут быть медленнее для крупных случаев. Интерфейсы программирования предоставляются в Python (PuLP, Pyomo, CVXOPT), MATLAB, R и C++. Для приложений портфеля характерно предварительное вычисление ковариационных матриц и ожидаемых результатов, а затем подача проблемы решателю через API. Параллельная обработка и облачные вычисления могут дополнительно ускорить время решения.

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

Преимущества и ограничения

Интегрированное программирование дает несколько преимуществ оптимизации портфеля:

  • Реализм: он фиксирует дискретные ограничения, которые игнорируют непрерывные модели, такие как минимальные размеры покупок, размеры лотов и ограничения кардинальности.
  • Оптимальность: В отличие от эвристических методов, целочисленное программирование может гарантировать глобальную оптимальность (или доказуемую связь на субоптимальности) для задач умеренного размера.
  • Гибкость: широкий спектр объективных функций и ограничений может быть выражен в линейной или квадратичной форме, что делает структуру адаптируемой к различным инвестиционным мандатам.
  • Прозрачность : Предположения и ограничения модели являются явными и воспроизводимыми.

Однако существуют заметные ограничения:

  • Вычислительная сложность: Проблемы программирования целых чисел NP-тверды. Даже экземпляры с умеренными размерами с сотнями бинарных переменных могут быть сложными. Среда выполнения Solver может быть непредсказуемой, что является проблемой для приложений реального времени.
  • Чувствительность данных: Оптимизация портфеля опирается на оценки ожидаемой доходности, волатильности и корреляций. Небольшие ошибки оценки могут привести к радикально разным решениям, феномену, известному как максимизация ошибок. Целое программирование по своей сути не решает эту проблему; надежные формулы оптимизации иногда объединяются с IP для обработки неопределенности.
  • Большие размеры портфеля: Для вселенных с тысячами активов точное целочисленное программирование может стать непрактичным.
  • Моделирование сложности: Перевод правил реального мира в линейные целочисленные ограничения может быть сложным и может потребовать бинарных переменных для каждого правила, взрывающегося размера задачи.

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

Реальные приложения

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

  • Отслеживание индексов : построение портфеля акций K, который минимизирует ошибку отслеживания относительно широкого индекса, такого как S&P 500.
  • Репликация хедж-фондов : использование целочисленных ограничений для имитации профиля риска-возврата стратегии хедж-фонда с ограниченным набором ликвидных инструментов.
  • Управление активами и ответственностью: для пенсионных фондов и страховых компаний, целочисленное программирование помогает сопоставить денежные потоки от активов к выплатам по обязательствам, где сроки погашения облигаций дискретны.
  • Алгоритмическое исполнение торгов: оптимизация последовательности и размера ордеров для минимизации влияния на рынок и транзакционных издержек, часто выдаваемых за смешанную целочисленную динамическую программу.
  • Риск-бюджетирование : распределение рискового капитала по различным стратегиям или классам активов, где каждое распределение является либо фиксированным процентом, либо нулевым (двоичное решение).
  • Строительство портфеля «зеленых» : включающее экологические, социальные и управленческие критерии (ESG) в качестве бинарных ограничений (например, исключить все компании с воздействием угля).

Например, статья 2018 года в Operations Research продемонстрировала, что разветвленный решатель может решить проблемы отслеживания индексов с до 1000 акций и кардинальным значением 50 в течение нескольких минут (см. Bertsimas и Stellato, 2018 ). Практики часто объединяют целочисленное программирование с прогнозами машинного обучения, чтобы включить альфа-сигналы в оптимизацию.

Заключение

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

Для дальнейшего чтения заинтересованные читатели могут изучить запись Википедии о целочисленном программировании, документацию для Gurobi Optimizer или учебник Integer Programming от Conforti, Cornuéjols и Zambelli. Практическое руководство по оптимизации портфеля с целочисленными переменными можно найти в документации CVXPY.