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

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

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

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

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

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

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

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

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

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

См. также

| | | |

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

Подробнее о