addInequality

Добавьте линейные ограничения неравенства для весов портфеля к существующим ограничениям

Описание

пример

obj = addInequality(obj,AInequality,bInequality) добавляет линейные ограничения неравенства для весов портфеля к существующим ограничениям для Portfolio, PortfolioCVaR, или PortfolioMAD объекты. Для получения дополнительной информации о соответствующих рабочих процессах при использовании этих различных объектов смотрите Рабочий процесс объекта портфеля, Рабочий процесс объекта PortfolioCVaR и Рабочий процесс объекта PortfolioMAD.

Учитывая линейную матрицу ограничений неравенства AInequality и векторные bInequality, каждый вес в портфолио Port должны удовлетворять следующим требованиям:

AInequality * Port <= bInequality

Эта функция «стекает» дополнительные линейные ограничения неравенства на любые существующие линейные ограничения неравенства, которые существуют в объекте входного портфеля. Если никаких ограничений не существует, эта функция является такой же, как и setInequality.

Примеры

свернуть все

Установите линейное ограничение неравенства, чтобы гарантировать, что первые три актива составляют самое большее 50% портфеля. Затем добавьте еще одно линейное ограничение неравенства, чтобы убедиться, что последние три актива составляют не менее 50% портфеля.

p = Portfolio;
A = [ 1 1 1 0 0 ];    % first inequality constraint
b = 0.5;
p = setInequality(p, A, b);

A = [ 0 0 -1 -1 -1 ];    % second inequality constraint
b = -0.5;
p = addInequality(p, A, b);

disp(p.NumAssets);
     5
disp(p.AInequality);
     1     1     1     0     0
     0     0    -1    -1    -1
disp(p.bInequality);
    0.5000
   -0.5000

Установите линейное ограничение неравенства, чтобы гарантировать, что первые три актива составляют самое большее 50% портфеля. Затем добавьте еще одно линейное ограничение неравенства, чтобы убедиться, что последние три актива составляют не менее 50% портфеля.

p = PortfolioCVaR;
A = [ 1 1 1 0 0 ];    % first inequality constraint
b = 0.5;
p = setInequality(p, A, b);

A = [ 0 0 -1 -1 -1 ];    % second inequality constraint
b = -0.5;
p = addInequality(p, A, b);

disp(p.NumAssets);
     5
disp(p.AInequality);
     1     1     1     0     0
     0     0    -1    -1    -1
disp(p.bInequality);
    0.5000
   -0.5000

Установите линейное ограничение неравенства, чтобы гарантировать, что первые три актива составляют самое большее 50% портфеля. Затем добавьте еще одно линейное ограничение неравенства, чтобы убедиться, что последние три актива составляют не менее 50% портфеля.

p = PortfolioMAD;
A = [ 1 1 1 0 0 ];    % first inequality constraint
b = 0.5;
p = setInequality(p, A, b);

A = [ 0 0 -1 -1 -1 ];    % second inequality constraint
b = -0.5;
p = addInequality(p, A, b);

disp(p.NumAssets);
     5
disp(p.AInequality);
     1     1     1     0     0
     0     0    -1    -1    -1
disp(p.bInequality);
    0.5000
   -0.5000

Входные параметры

свернуть все

Объект для портфеля, заданный с помощью Portfolio, PortfolioCVaR, или PortfolioMAD объект. Для получения дополнительной информации о создании объекта портфеля см.

Типы данных: object

Линейные ограничения неравенства, заданные как матрица.

Примечание

Ошибка возникает, если AInequality пуст и bInequality не пуст.

Типы данных: double

Линейные ограничения неравенства, заданные как вектор.

Примечание

Ошибка возникает, если bInequality пуст и AInequality не пуст.

Типы данных: double

Выходные аргументы

свернуть все

Обновленный объект портфеля, возвращенный как Portfolio, PortfolioCVaR, или PortfolioMAD объект. Для получения дополнительной информации о создании объекта портфеля см.

Совет

  • Можно также использовать запись через точку для добавления линейных ограничений неравенства для весов портфеля.

    obj = obj.addInequality(AInequality, bInequality)

  • Можно также удалить линейные ограничения неравенства из любого из объектов портфеля с помощью записи через точку.

    obj = obj.setInequality([ ], [ ])

Введенный в R2011a
Для просмотра документации необходимо авторизоваться на сайте