Работа с ограничениями портфеля CVaR с использованием параметров по умолчанию

Конечным элементом для полной спецификации задачи оптимизации портфеля является набор допустимых портфелей, который называется портфельным набором. Портфельный набор XRn задается как конструкция пересечение наборов, образованное набором ограничений на веса портфеля. Набор портфеля обязательно и в достаточной степени должен быть непустым, закрытым и ограниченным набором.

При настройке портфельного набора убедитесь, что портфельный набор удовлетворяет этим условиям. Самый основной набор портфеля или набор портфелей по умолчанию требует, чтобы веса портфеля были неотрицательными (с использованием ограничения, связанного ниже) и чтобы сумма 1 (с использованием ограничения бюджета). Для получения информации о рабочем процессе при использовании PortfolioCVaR объекты, см. Рабочий процесс объекта PortfolioCVaR.

Установка ограничений по умолчанию для весов портфеля с использованием объекта PortfolioCVaR

Задача портфеля CVaR по умолчанию имеет два ограничения на веса портфеля:

  • Веса портфеля должны быть неотрицательными.

  • Веса портфеля должны равняться 1.

Неявно, эти ограничения подразумевают, что веса портфеля не больше 1, хотя это является излишним ограничением, которое необходимо наложить на проблему.

Установка ограничений по умолчанию с помощью функции PortfolioCVaR

Учитывая задачу оптимизации портфеля с NumAssets = 20 ресурсы, используйте PortfolioCVaR объект, чтобы настроить задачу по умолчанию и явным образом задать границы и бюджетные ограничения:

p = PortfolioCVaR('NumAssets', 20, 'LowerBound', 0, 'Budget', 1);
disp(p)
  PortfolioCVaR with properties:

             BuyCost: []
            SellCost: []
        RiskFreeRate: []
    ProbabilityLevel: []
            Turnover: []
         BuyTurnover: []
        SellTurnover: []
        NumScenarios: []
                Name: []
           NumAssets: 20
           AssetList: []
            InitPort: []
         AInequality: []
         bInequality: []
           AEquality: []
           bEquality: []
          LowerBound: [20x1 double]
          UpperBound: []
         LowerBudget: 1
         UpperBudget: 1
         GroupMatrix: []
          LowerGroup: []
          UpperGroup: []
              GroupA: []
              GroupB: []
          LowerRatio: []
          UpperRatio: []

Установка ограничений по умолчанию с помощью setDefaultConstraints Функция

Альтернативным подходом является использование setDefaultConstraints функция. Если количество активов уже известно в PortfolioCVaR объект, использование setDefaultConstraints без аргументов для настройки необходимых ограничений и бюджетных ограничений. Предположим, что у вас есть 20 активов для настройки набора портфелей для задачи по умолчанию:

p = PortfolioCVaR('NumAssets', 20);
p = setDefaultConstraints(p);
disp(p)
   PortfolioCVaR with properties:

             BuyCost: []
            SellCost: []
        RiskFreeRate: []
    ProbabilityLevel: []
            Turnover: []
         BuyTurnover: []
        SellTurnover: []
        NumScenarios: []
                Name: []
           NumAssets: 20
           AssetList: []
            InitPort: []
         AInequality: []
         bInequality: []
           AEquality: []
           bEquality: []
          LowerBound: [20×1 double]
          UpperBound: []
         LowerBudget: 1
         UpperBudget: 1
         GroupMatrix: []
          LowerGroup: []
          UpperGroup: []
              GroupA: []
              GroupB: []
          LowerRatio: []
          UpperRatio: []
        MinNumAssets: []
        MaxNumAssets: []
           BoundType: [20×1 categorical]

Если количество активов неизвестно, setDefaultConstraints принимает NumAssets как необязательный аргумент для формирования набора портфелей для задачи по умолчанию. Предположим, что у вас есть 20 активов:

p = PortfolioCVaR;
p = setDefaultConstraints(p, 20);
disp(p)
 PortfolioCVaR with properties:

             BuyCost: []
            SellCost: []
        RiskFreeRate: []
    ProbabilityLevel: []
            Turnover: []
         BuyTurnover: []
        SellTurnover: []
        NumScenarios: []
                Name: []
           NumAssets: 20
           AssetList: []
            InitPort: []
         AInequality: []
         bInequality: []
           AEquality: []
           bEquality: []
          LowerBound: [20×1 double]
          UpperBound: []
         LowerBudget: 1
         UpperBudget: 1
         GroupMatrix: []
          LowerGroup: []
          UpperGroup: []
              GroupA: []
              GroupB: []
          LowerRatio: []
          UpperRatio: []
        MinNumAssets: []
        MaxNumAssets: []
           BoundType: [20×1 categorical]

См. также

| | | | | | | | |

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

Подробнее о

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