Чтобы назвать объект PortfolioMAD, используйте свойство Name
. Name
является информационным и не имеет никакого эффекта ни на какие вычисления портфеля. Если свойство Name
непусто, Name
является заголовком для графика границы эффективности, сгенерированного plotFrontier
. Например, если вы создаете фонд распределения активов, вы могли бы назвать Фонд Распределения активов объекта PortfolioMAD:
p = PortfolioMAD('Name','Asset Allocation Fund'); disp(p.Name); Asset Allocation Fund
Основное количество в объекте PortfolioMAD является количеством активов во вселенной актива. Это количество сохраняется в свойстве NumAssets
. Несмотря на то, что можно установить это свойство непосредственно, оно обычно выводится из других свойств, таких как количество активов в сценариях или начальном портфеле. В некоторых случаях номер активов, возможно, должен быть определен непосредственно. Этот пример показывает, как настроить объект PortfolioMAD, который имеет четыре актива:
p = PortfolioMAD('NumAssets', 4);
disp(p.NumAssets);
4
После установки свойства NumAssets
вы не можете изменить его (если никакие другие свойства не установлены, которые зависят от NumAssets
). Единственный способ изменить количество активов в существующем объекте PortfolioMAD с известным количеством активов состоит в том, чтобы создать новый объект PortfolioMAD.
При работе с портфелями необходимо задать вселенную активов. Несмотря на то, что можно выполнить полный анализ, не называя активы во вселенной, полезно сопоставить идентификатор с каждым активом, как вы создаете и работаете с портфелями. Можно создать список идентификаторов актива как вектор ячейки векторов символов в свойстве AssetList
. Можно настроить список с помощью следующих двух методов.
Предположим, что у вас есть объект PortfolioMAD, p
, с активами с символами 'AA'
', 'BA'
, 'CAT'
, 'DD'
и 'ETR'
. Можно создать список этих символов актива в объекте с помощью PortfolioMAD
:
p = PortfolioMAD('assetlist', { 'AA', 'BA', 'CAT', 'DD', 'ETR' }); disp(p.AssetList);
'AA' 'BA' 'CAT' 'DD' 'ETR'
AssetList
сохраняется как массив ячеек, который содержит векторы символов, и что необходимо передать массив ячеек в PortfolioMAD
, чтобы установить AssetList
. Кроме того, заметьте, что свойство NumAssets
установлено в 5
на основе количества символов, используемых, чтобы создать список активов:disp(p.NumAssets);
5
Можно также задать список активов с помощью функции setAssetList
. Учитывая список символов актива 'AA'
, 'BA'
, 'CAT'
, 'DD'
, and'ETR'
, можно использовать setAssetList
с:
p = PortfolioMAD; p = setAssetList(p, { 'AA', 'BA', 'CAT', 'DD', 'ETR' }); disp(p.AssetList);
'AA' 'BA' 'CAT' 'DD' 'ETR'
setAssetList
также позволяет вам ввести символы непосредственно как список, разделенный запятыми, не создавая массив ячеек из символьных векторов. Например, учитывая список символов активов 'AA'
, 'BA'
, 'CAT'
, 'DD'
и 'ETR'
, используют setAssetList
:
p = PortfolioMAD; p = setAssetList(p, 'AA', 'BA', 'CAT', 'DD', 'ETR'); disp(p.AssetList);
'AA' 'BA' 'CAT' 'DD' 'ETR'
setAssetList
имеет много дополнительных функций, чтобы создать списки идентификаторов актива. Если вы используете setAssetList
с только объектом PortfolioMAD, он создает список активов по умолчанию согласно имени, заданному в скрытой общественной собственности defaultforAssetList
(который является 'Asset'
по умолчанию). Количество созданных имен актива зависит от количества активов в свойстве NumAssets
. Если NumAssets
не установлен, то NumAssets
принят, чтобы быть 1
.
Например, если объект PortfolioMAD, p
создается с NumAssets
= 5
, то этот фрагмент кода показывает поведение именования значения по умолчанию:
p = PortfolioMAD('numassets',5);
p = setAssetList(p);
disp(p.AssetList);
'Asset1' 'Asset2' 'Asset3' 'Asset4' 'Asset5'
defaultforAssetList
на 'ETF'
, можно затем создать список по умолчанию для ETFs:p = PortfolioMAD('numassets',5); p.defaultforAssetList = 'ETF'; p = setAssetList(p); disp(p.AssetList);
'ETF1' 'ETF2' 'ETF3' 'ETF4' 'ETF5'
Если свойство NumAssets
уже установлено, и вы передаете в слишком многих или очень небольшом числе идентификаторов, объекте PortfolioMAD
, и функция setAssetList
обрезает или заполняет список пронумерованными именами актива по умолчанию, которые используют имя, заданное в скрытой общественной собственности defaultforAssetList
. Если список является усеченным или заполненным, предупреждающее сообщение указывает на несоответствие. Например, примите, что у вас есть объект PortfolioMAD с пятью ETFs, и вы только знаете первые три '921937835'
CUSIPs, '922908769'
и '922042775'
. Используйте этот синтаксис, чтобы создать список активов, который заполняет остающиеся идентификаторы актива пронумерованными заполнителями 'UnknownCUSIP'
:
p = PortfolioMAD('numassets',5); p.defaultforAssetList = 'UnknownCUSIP'; p = setAssetList(p, '921937835', '922908769', '922042775'); disp(p.AssetList);
Warning: Input list of assets has 2 too few identifiers. Padding with numbered assets. > In PortfolioMAD.setAssetList at 121 Columns 1 through 4 '921937835' '922908769' '922042775' 'UnknownCUSIP4' Column 5 'UnknownCUSIP5'
Также предположите, что вы имеете слишком много идентификаторов и нуждаетесь только в первых четырех активах. Этот пример иллюстрирует усечение списка активов с помощью объекта PortfolioMAD
:
p = PortfolioMAD('numassets',4); p = PortfolioMAD(p, 'assetlist', { 'AGG', 'EEM', 'MDY', 'SPY', 'VEU' }); disp(p.AssetList);
Warning: AssetList has 1 too many identifiers. Using first 4 assets. > In PortfolioMAD.checkarguments at 410 In PortfolioMAD.PortfolioMAD>PortfolioMAD.PortfolioMAD at 187 'AGG' 'EEM' 'MDY' 'SPY'
Скрытый uppercaseAssetList
общественной собственности является булевым флагом, чтобы задать, преобразовать ли имена актива к прописным буквам. Значением по умолчанию для uppercaseAssetList
является false
. Этот пример показывает, как использовать флаг uppercaseAssetList
, чтобы обеспечить идентификаторы, чтобы быть прописными буквами:
p = PortfolioMAD; p.uppercaseAssetList = true; p = setAssetList(p, { 'aa', 'ba', 'cat', 'dd', 'etr' }); disp(p.AssetList);
'AA' 'BA' 'CAT' 'DD' 'ETR'
PortfolioMAD
| checkFeasibility
| estimateBounds
| setAssetList
| setInitPort