exponenta event banner

addInequality

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

Описание

пример

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

Задана матрица ограничений линейного неравенства 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