Как решить вопрос оптимизации портфеля с помощью обобщенной целевой функции?
У меня есть портфель из 5 акций, для которого я хочу найти оптимальное сочетание минимизации дисперсии портфеля и максимизации ожидаемых будущих дивидендов. Последнее из прогнозов аналитиков. Моя проблема в том, что я знаю, как решить проблему минимальной дисперсии, но я не уверен, как поместить квадратичную форму в правильную матричную форму для целевой функции quadprog.
Стандартная проблема минимальной дисперсии гласит
Min! ( portfolio volatility )
где r
имеет 252 ежедневных доходности пяти акций, d
имеет ожидаемый годовой доход от дивидендов (где firm_A
платит 1 %, firm_B
платит 2 % и т. д.)
и я запрограммировал это следующим образом
dat = rep( rnorm( 10, mean = 0, sd = 1 ), 252*5 )
r = matrix( dat, nr = 252, nc = 5 )
d = matrix( c( 1, 2, 1, 2, 2 ) )
library(quadprog)
# Dmat (covariance) and dvec (penalized returns) are generated easily
risk.param = 0.5
Dmat = cov(r)
Dmat[is.na(Dmat)]=0
dvec = matrix(colMeans(r) * risk.param)
dvec[is.na(dvec)]=1e-5
# The weights sum up to 1
n = 5
A = matrix( rep( 1, n ), nr = n )
b = 1
meq = 1
res = solve.QP( Dmat, dvec, A, b, meq = 1 )
Очевидно, что доходы в r
стандартная норма, следовательно, каждая акция получает около 20% веса.
Q1:
Как я могу объяснить тот факт, что firm_A
выплачивает дивиденд 1, firm_B
дивиденд от 2 и т. д.?
Новая целевая функция гласит:
Max! ( 0.5 * Portfolio_div - 0.5 * Portfolio_variance )
но я не знаю, как это жестко закодировать. Дисперсию портфеля было легко положить в Dmat
но новая целевая функция имеет Portfolio_div
элемент определяется как Portfolio_div = w * d
где w
имеет пять весов.
Большое спасибо.
EDIT:
Может быть, имеет смысл добавить описание проблемы более высокого уровня: я могу использовать оптимизацию с минимальной дисперсией с кодом выше. Минимизация дисперсии портфеля означает оптимизацию весов матрицы вариации-ковариации Dmat
(размером 5х5). Тем не менее, я хочу добавить дополнительную часть для оптимизации, которые дивиденды в d
умножается на веса (отсюда размерности 5x1). Те же веса также используются для Dmat
,
Q2:
Как я могу добавить вектор d
к коду?
EDIT2:
Я думаю, что ответ просто использовать
dvec = -1/d
поскольку я максимизирую ожидаемые дивиденды, сводя к минимуму обратное отрицательное.
Q3:
Может кто-нибудь сказать мне, если это правильно?
1 ответ
Открытие банки с червями:
TLDR
В то время как я уважаю большую работу, проделанную Гарри МАРКОВИЦОМ (Нобелевская премия 1990 года), я ценю гораздо больше его удивительной основы детерминированного моделирования CACI Simulation COMET III, чем предположение теории Портфолио, что variance
per se - это правящий драйвер минимизации для процесса оптимизации портфеля.
Вождение этой основной точки зрения
(что все еще может встретить немного плохо сформированную мотивацию больших средств,
которые живут счастливо от их сборов 2 на 20
из-за характера и масштаба "своей" перекошенной перспективы восприятия того, что являются прямыми потерями,
которые они признают неприобретенным здоровенным и безрисковым сбором за управление
связанные с оттоком паники толпы, приписываемой эрозии AUM,
вместо реальных прибылей и убытков, полученных из-за их (не) способности приносить любые доходы AUM выше среднего)
в дальнейшем,
ближе к вашей идее
проблема заключается в правильной формулировке { penalty | utility }
функция
В то время как variance
берется в классической теории эффективной границы в качестве штрафного фактора, действующего в min!
глобальный поиск, он не имеет ничего общего с реальной прибылью. Вы штрафуетесь даже за компоненты дисперсии положительной стороны, что само по себе бессмысленно.
Наоборот, dividend
это прямая выгода, абсолют utility
, входя в max!
Процесс оптимизации.
Итак, первый шаг в Q3
& Q1
должен быть дизайн последовательного utility function
изолированный от относительных, не связанных с доходом факторов, но содержащий все другие абсолютные факторы - затраты на вход, транзакционные издержки, затраты на перебалансировку - иначе ваша полезная модель будет вводить в заблуждение вашу стратегию управления активами портфеля.
A2:
Без этого заранее разработанного свойства никто не может утверждать, что модель стоит одного ЦП, чтобы даже начать глобальную оптимизацию модели.