Настройка начального или текущего портфеля

Во многих приложениях создание нового оптимального портфеля требует сравнения нового портфеля с начальным или текущим портфелем для формирования списков покупок и продаж. 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

См. также

| | | |

Похожие примеры

Подробнее о

Внешние веб-сайты