Во многих приложениях создание нового оптимального портфеля требует сравнения нового портфеля с начальным или текущим портфелем для формирования списков покупок и продаж. The PortfolioCVaR
свойство объекта InitPort
позволяет идентифицировать начальный или текущий портфель. Начальный портфель также играет важную роль, если у вас есть транзакционные издержки или ограничения на оборот. Первоначальный портфель не должен быть осуществимым в пределах ограничений проблемы. Это может произойти, если веса в портфеле сдвинулись так, что некоторые ограничения будут нарушены. Чтобы проверить, является ли ваш начальный портфель допустимым, используйте checkFeasibility
функция, описанная в Проверке портфелей CVaR. Предположим, что у вас есть начальный портфель в x0
, затем используйте PortfolioCVaR
объект для настройки начального портфеля:
x0 = [ 0.3; 0.2; 0.2; 0.0 ];
p = PortfolioCVaR('InitPort', x0);
disp(p.InitPort)
0.3000 0.2000 0.2000 0
Как и со всеми свойствами массива, можно задать InitPort
при скалярном расширении. Это полезно для создания одинаково взвешенного начального портфеля из, пример, 10 активов:
p = PortfolioCVaR('NumAssets', 10, 'InitPort', 1/10); disp(p.InitPort)
0.1000 0.1000 0.1000 0.1000 0.1000 0.1000 0.1000 0.1000 0.1000 0.1000
Чтобы удалить начальный портфель из PortfolioCVaR
объект, используйте либо PortfolioCVaR
объект или setInitPort
функция с пустым входом для InitPort
свойство. Если установлены транзакционные затраты или ограничения на оборот, очистить InitPort
невозможно свойство таким образом. В этом случае очистить
InitPort
сначала очистите зависимые свойства, а затем очистите InitPort
свойство.
The InitPort
свойство также может быть установлено с setInitPort
который позволяет вам задать количество активов, если вы хотите использовать скалярное расширение. Для примера, учитывая начальный портфель в x0
, использование setInitPort
для установки InitPort
свойство:
p = PortfolioCVaR; x0 = [ 0.3; 0.2; 0.2; 0.0 ]; p = setInitPort(p, x0); disp(p.InitPort)
0.3000 0.2000 0.2000 0
Чтобы создать одинаково взвешенный портфель четырех активов, используйте setInitPort
:
p = PortfolioCVaR; p = setInitPort(p, 1/4, 4); disp(p.InitPort)
0.2500 0.2500 0.2500 0.2500
PortfolioCVaR
функции объекта, которые работают с транзакционными затратами или ограничениями оборота, также зависят от InitPort
свойство. Таким образом, установленные функции для транзакционных издержек или ограничений оборота позволяют присвоить значение для InitPort
свойство в рамках их реализации. Для получения дополнительной информации смотрите Работа с ограничениями среднего оборота с использованием объекта PortfolioCVaR, Работа с ограничениями одностороннего оборота с использованием объекта PortfolioCVaR и Работа с транзакционными затратами. Если используются либо транзакционные затраты, либо ограничения на оборот, то InitPort
свойство должно иметь непустое значение. Отсутствие определенного значения, назначенного через PortfolioCVaR
объект или различные функции набора, PortfolioCVaR
наборы объектов InitPort
на 0
и предупреждает, если BuyCost
, SellCost
, или Turnover
заданы свойства. В этом примере показано, что происходит, если вы задаете ограничение среднего оборота с начальным портфелем:
p = PortfolioCVaR('Turnover', 0.3, 'InitPort', [ 0.3; 0.2; 0.2; 0.0 ]); disp(p.InitPort)
0.3000 0.2000 0.2000 0
p = PortfolioCVaR('Turnover', 0.3);
disp(p.InitPort)
Warning: InitPort and NumAssets are empty and either transaction costs or turnover constraints specified. Will set NumAssets = 1 and InitPort = 0. > In PortfolioCVaR.checkarguments at 322 In PortfolioCVaR.PortfolioCVaR>PortfolioCVaR.PortfolioCVaR at 195 0
checkFeasibility
| estimateBounds
| PortfolioCVaR
| setAssetList
| setInitPort