Во многих приложениях, создавая новый оптимальный портфель требует, чтобы сравнение нового портфеля с начальным или текущим портфелем сформировало списки из покупок и продаж. Свойство объекта 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, сначала очистите зависимые свойства и затем очистите theInitPort свойство.
Свойство 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
0p = 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
0PortfolioCVaR | checkFeasibility | estimateBounds | setAssetList | setInitPort