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

Во многих приложениях создание нового оптимального портфеля требует сравнения нового портфеля с начальным или текущим портфелем для формирования списков покупок и продаж. The Portfolio свойство объекта InitPort позволяет идентифицировать начальный или текущий портфель. Начальный портфель также играет важную роль, если у вас есть транзакционные издержки или ограничения на оборот. Первоначальный портфель не должен быть осуществимым в пределах ограничений проблемы. Это может произойти, если веса в портфеле сдвинулись так, что некоторые ограничения будут нарушены. Чтобы проверить, является ли ваш начальный портфель допустимым, используйте checkFeasibility функция, описанная в Проверке портфелей. Предположим, что у вас есть начальный портфель в x0, затем используйте Portfolio объект для настройки начального портфеля:

x0 = [ 0.3; 0.2; 0.2; 0.0 ];
p = Portfolio('InitPort', x0);
disp(p.InitPort)
 0.3000
 0.2000
 0.2000
      0

Как и со всеми свойствами массива, можно задать InitPort при скалярном расширении. Это полезно для создания одинаково взвешенного начального портфеля из, пример, 10 активов:

p = Portfolio('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

Чтобы удалить начальный портфель из Portfolio объект, используйте либо Portfolio объект или setInitPort функция с пустым входом для InitPort свойство. Если установлены транзакционные затраты или ограничения на оборот, очистить InitPort невозможно свойство таким образом. В этом случае очистить InitPortсначала очистите зависимые свойства, а затем очистите InitPort свойство.

The InitPort свойство также может быть установлено с setInitPort который позволяет вам задать количество активов, если вы хотите использовать скалярное расширение. Для примера, учитывая начальный портфель в x0, использование setInitPort для установки InitPort свойство:

p = Portfolio;
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 = Portfolio;
p = setInitPort(p, 1/4, 4);
disp(p.InitPort)
 0.2500
 0.2500
 0.2500
 0.2500

Функции объекта портфеля, которые работают с транзакционными затратами или ограничениями оборота, также зависят от InitPort свойство. Итак, set функции для транзакционных издержек или ограничений оборота позволяют присвоить значение для InitPort свойство в рамках их реализации. Для получения дополнительной информации смотрите Работа со средними ограничениями оборота с использованием объекта портфеля, Работа с односторонними ограничениями оборота с использованием объекта портфеля и Работа с транзакционными затратами для получения дополнительной информации. Если используются либо транзакционные затраты, либо ограничения на оборот, то InitPort свойство должно иметь непустое значение. Отсутствие определенного значения, назначенного через Portfolio объект или различные set функций, Portfolio наборы объектов InitPort на 0 и предупреждает, если BuyCost, SellCost, или Turnover заданы свойства. Следующий пример иллюстрирует, что происходит, если ограничение среднего оборота задано с помощью начального портфеля:

p = Portfolio('Turnover', 0.3, 'InitPort', [ 0.3; 0.2; 0.2; 0.0 ]);
disp(p.InitPort)
 0.3000
 0.2000
 0.2000
      0
Напротив, этот пример показывает, что происходит, если ограничение среднего оборота задано без начального портфеля:
p = Portfolio('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 Portfolio.checkarguments at 367
  In Portfolio.Portfolio>Portfolio.Portfolio at 171 
     0

См. также

| | | |

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

Подробнее о

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