Актив возвращается, и моменты актива возвращается Используя объект портфеля

Поскольку задачи оптимизации портфеля среднего отклонения требуют оценок для среднего значения, и ковариация актива возвращается, Portfolio объект имеет несколько способов установить и получить свойства AssetMean (для среднего значения) и AssetCovar (для ковариации). Кроме того, возврат для безрискового актива сохранен в свойстве RiskFreeRate так, чтобы все активы в AssetMean и AssetCovar опасные активы. Для получения информации о рабочем процессе при использовании Portfolio объекты, смотрите Рабочий процесс Объекта Портфеля.

Присвоение Используя функцию портфеля

Предположим, что у вас есть среднее значение, и ковариация актива возвращается в переменных m и C. Свойства в течение моментов возвратов актива установлены с помощью Portfolio объект:

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
    0.00408 0.0289 0.0204 0.0119;
    0.00192 0.0204 0.0576 0.0336;
    0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
p = Portfolio('AssetMean', m, 'AssetCovar', C);
disp(p.NumAssets)
disp(p.AssetMean)
disp(p.AssetCovar)
      4

    0.0042
    0.0083
    0.0100
    0.0150

    0.0005    0.0003    0.0002         0
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
         0    0.0010    0.0028    0.0102
Заметьте, что объект Portfolio определяет количество активов в NumAssets с моментов. Portfolio объект включает отдельную инициализацию моментов, например:
m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
      0.00408 0.0289 0.0204 0.0119;
      0.00192 0.0204 0.0576 0.0336;
      0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
 
p = Portfolio;
p = Portfolio(p, 'AssetMean', m);
p = Portfolio(p, 'AssetCovar', C);
[assetmean, assetcovar] = p.getAssetMoments
assetmean =

    0.0042
    0.0083
    0.0100
    0.0150


assetcovar =

    0.0005    0.0003    0.0002         0
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
         0    0.0010    0.0028    0.0102
getAssetMoments функция позволяет вам получить значения для AssetMean и AssetCovar свойства одновременно.

Присвоение Используя setAssetMoments Функция

Можно также установить свойства момента актива с помощью setAssetMoments функция. Например, учитывая среднее значение и ковариацию актива возвращается в переменных m и C, свойства момента актива могут быть установлены:

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
    0.00408 0.0289 0.0204 0.0119;
    0.00192 0.0204 0.0576 0.0336;
    0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
 
p = Portfolio;
p = setAssetMoments(p, m, C);
[assetmean, assetcovar] = getAssetMoments(p)
assetmean =

    0.0042
    0.0083
    0.0100
    0.0150

assetcovar =

    0.0005    0.0003    0.0002         0
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
         0    0.0010    0.0028    0.0102

Скалярное расширение аргументов

Оба Portfolio возразите и setAssetMoments функция выполняет скалярное расширение на аргументах в течение моментов актива, возвращается. При использовании Portfolio объект, количество активов должно быть уже задано в переменной NumAssets. Если NumAssets не был уже установлен, скалярный аргумент интерпретирован как скаляр с NumAssets установите на 1. setAssetMoments обеспечивает дополнительный дополнительный аргумент, чтобы задать количество активов так, чтобы скалярное расширение работало с правильным количеством активов. Кроме того, если или скаляр или вектор вводятся для ковариации актива, возвращается, диагональная матрица формируется таким образом, что скаляр расширяется по диагонали, и вектор становится диагональю. Этот пример демонстрирует скалярное расширение для четырех совместно независимых активов с общим средним 0.1 и общее отклонение 0.03:

p = Portfolio;
p = setAssetMoments(p, 0.1, 0.03, 4);
[assetmean, assetcovar] = getAssetMoments(p)
assetmean =

    0.1000
    0.1000
    0.1000
    0.1000

assetcovar =

    0.0300         0         0         0
         0    0.0300         0         0
         0         0    0.0300         0
         0         0         0    0.0300
Если по крайней мере один аргумент правильно определен размеры, вы не должны включать дополнительный NumAssets аргумент. Этот пример иллюстрирует постоянно-диагональную ковариационную матрицу, и среднее значение актива возвращается для четырех активов:
p = Portfolio;
p = setAssetMoments(p, [ 0.05; 0.06; 0.04; 0.03 ], 0.03);
[assetmean, assetcovar] = getAssetMoments(p)
assetmean =

    0.0500
    0.0600
    0.0400
    0.0300

assetcovar =

    0.0300         0         0         0
         0    0.0300         0         0
         0         0    0.0300         0
         0         0         0    0.0300
Кроме того, скалярное расширение работает с Portfolio возразите если NumAssets известен или выведен из входных параметров.

Оценка моментов актива от цен или возвращается

Другой способ установить моменты возвратов актива состоит в том, чтобы использовать estimateAssetMoments функция, которая принимает или цены или возвращается и оценивает среднее значение, и ковариация актива возвращается. Или цены или возвращаются, хранятся как матрицы с выборками, спускающимися по строкам и активам, идущим через столбцы. Кроме того, цены или возвраты могут храниться в a table или timetable (см. Оценку Моментов Актива от Данных временных рядов). Проиллюстрировать использование estimateAssetMoments, сгенерируйте случайные выборки 120 наблюдений за активом, возвращается для четырех активов из среднего значения, и ковариация актива возвращается в переменных m и C с portsim. Поведение по умолчанию portsim создает симулированные данные с предполагаемым средним значением и ковариацией, идентичной входным моментам m и C. В дополнение к ряду возврата, созданному portsim в переменной X, ценовой ряд создается в переменной Y:

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
      0.00408 0.0289 0.0204 0.0119;
      0.00192 0.0204 0.0576 0.0336;
      0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
X = portsim(m', C, 120);
Y = ret2tick(X);

Примечание

Оптимизация портфеля требует, чтобы вы использовали совокупные доходы и не только, цена возвращается. Так, "возвраты" должны быть совокупными доходами, и "цены" должны быть ценами совокупного дохода.

Учитывая актив возвращается и цены в переменных X и Y сверху, эта последовательность примеров демонстрирует эквивалентные способы оценить моменты актива для Portfolio объект. Portfolio объект создается в p с моментами актива возвращает набор непосредственно в Portfolio объект и второй Portfolio объект создается в q получить среднее значение и ковариацию актива возвращается из актива, возвращают данные в X использование estimateAssetMoments:

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
      0.00408 0.0289 0.0204 0.0119;
      0.00192 0.0204 0.0576 0.0336;
      0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
 
X = portsim(m', C, 120);
p = Portfolio('mean', m, 'covar', C);
q = Portfolio;
q = estimateAssetMoments(q, X);
 
[passetmean, passetcovar] = getAssetMoments(p)
[qassetmean, qassetcovar] = getAssetMoments(q)
passetmean =

    0.0042
    0.0083
    0.0100
    0.0150

passetcovar =

    0.0005    0.0003    0.0002         0
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
         0    0.0010    0.0028    0.0102

qassetmean =

    0.0042
    0.0083
    0.0100
    0.0150

qassetcovar =

    0.0005    0.0003    0.0002    0.0000
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
    0.0000    0.0010    0.0028    0.0102
Заметьте, как любой подход имеет те же моменты. Поведение по умолчанию estimateAssetMoments должен работать с активом, возвращается. Если, вместо этого, у вас есть цены активов в переменной Y, estimateAssetMoments признает, что аргумент пары "имя-значение" называет 'DataFormat' с соответствующим набором значений к 'prices' указать, что вход к функции в форме цен активов и не возвращается (значение по умолчанию для 'DataFormat' аргументом является 'returns'). Этот пример сравнивает прямое присвоение моментов в Portfolio объект p с предполагаемыми моментами из данных цен активов в Y в Portfolio объект q:
m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
      0.00408 0.0289 0.0204 0.0119;
      0.00192 0.0204 0.0576 0.0336;
      0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
 
X = portsim(m', C, 120);
Y = ret2tick(X);

p = Portfolio('mean',m,'covar',C);
        
q = Portfolio;
q = estimateAssetMoments(q, Y, 'dataformat', 'prices');
 
[passetmean, passetcovar] = getAssetMoments(p)
[qassetmean, qassetcovar] = getAssetMoments(q)
passetmean =

    0.0042
    0.0083
    0.0100
    0.0150

passetcovar =

    0.0005    0.0003    0.0002         0
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
         0    0.0010    0.0028    0.0102

qassetmean =

    0.0042
    0.0083
    0.0100
    0.0150

qassetcovar =

    0.0005    0.0003    0.0002    0.0000
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
    0.0000    0.0010    0.0028    0.0102

Оценка моментов актива с Недостающими данными

Часто при работе с несколькими активами, у вас есть недостающие данные, обозначенные NaN значения в вашем возврате или ценовых данных. Несмотря на то, что Многомерная Нормальная Регрессия вдается в подробности о регрессии с недостающими данными, estimateAssetMoments функция имеет имя аргумента пары "имя-значение" 'MissingData' это указывает с булевым значением, использовать ли недостающую поддержку данных программного обеспечения Financial Toolbox™. Значение по умолчанию для 'MissingData' false который удаляет все выборки с NaN значения. Если, однако, 'MissingData' установлен в true, estimateAssetMoments использует алгоритм ECM, чтобы оценить моменты актива. Этот пример иллюстрирует, как это работает над ценовыми данными с отсутствующими значениями:

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
      0.00408 0.0289 0.0204 0.0119;
      0.00192 0.0204 0.0576 0.0336;
      0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
 
X = portsim(m', C, 120);
Y = ret2tick(X);
Y(1:20,1) = NaN;
Y(1:12,4) = NaN;

p = Portfolio('mean',m,'covar',C);
        
q = Portfolio;
q = estimateAssetMoments(q, Y, 'dataformat', 'prices');
 
r = Portfolio;
r = estimateAssetMoments(r, Y, 'dataformat', 'prices', 'missingdata', true);

[passetmean, passetcovar] = getAssetMoments(p)
[qassetmean, qassetcovar] = getAssetMoments(q)
[rassetmean, rassetcovar] = getAssetMoments(r)
passetmean =

    0.0042
    0.0083
    0.0100
    0.0150


passetcovar =

    0.0005    0.0003    0.0002         0
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
         0    0.0010    0.0028    0.0102


qassetmean =

    0.0045
    0.0082
    0.0101
    0.0091


qassetcovar =

    0.0006    0.0003    0.0001   -0.0000
    0.0003    0.0023    0.0017    0.0011
    0.0001    0.0017    0.0048    0.0029
   -0.0000    0.0011    0.0029    0.0112


rassetmean =

    0.0045
    0.0083
    0.0100
    0.0113


rassetcovar =

    0.0008    0.0005    0.0001   -0.0001
    0.0005    0.0032    0.0022    0.0015
    0.0001    0.0022    0.0063    0.0040
   -0.0001    0.0015    0.0040    0.0144
Portfolio объект p содержит необработанные моменты, объект q содержит оцененные моменты в который NaN значения отбрасываются, и объект r содержит необработанные моменты, которые вмещают отсутствующие значения. Каждый раз, когда вы запускаете этот пример, вы будете получать различные оценки за моменты в q и r, и они будут также отличаться с моментов по p.

Оценка моментов актива от данных временных рядов

estimateAssetMoments функция также признает, что актив возвращается или цены, сохраненные в a table или timetable. estimateAssetMoments неявно работает с матрицами данных или данных в объекте таблицы или расписания использование тех же правил для того, являются ли данные возвратами или ценами.

Чтобы проиллюстрировать использование таблицы и расписания, использовать array2table и array2timetable создать a table и a timetable это содержит актив, возвращается сгенерированный с portsim (см. Оценку Моментов Актива от Цен, или Возвращается). Два объекта портфеля затем создаются с AssetReturns на основе таблицы и объекта расписания.

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
      0.00408 0.0289 0.0204 0.0119;
      0.00192 0.0204 0.0576 0.0336;
      0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
 
assetRetnScenarios = portsim(m', C, 120);
dates = datetime(datenum(2001,1:120,31), 'ConvertFrom', 'datenum');
assetsName = {'Bonds', 'LargeCap', 'SmallCap', 'Emerging'};
assetRetnTimeTable = array2timetable(assetRetnScenarios,'RowTimes',dates, 'VariableNames', assetsName);      
assetRetnTable = array2table(assetRetnScenarios, 'VariableNames', assetsName);


% Create two Portfolio objects:
% p with predefined mean and covar: q with asset return scenarios to estimate mean and covar.
p = Portfolio('mean', m, 'covar', C);
q = Portfolio;

% estimate asset moments with timetable
q = estimateAssetMoments(q, assetRetnTimeTable);
[passetmean, passetcovar] = getAssetMoments(p)
[qassetmean, qassetcovar] = getAssetMoments(q)

% estimate asset moments with table
q = estimateAssetMoments(q, assetRetnTable);
[passetmean, passetcovar] = getAssetMoments(p)
[qassetmean, qassetcovar] = getAssetMoments(q)
passetmean =

    0.0042
    0.0083
    0.0100
    0.0150


passetcovar =

    0.0005    0.0003    0.0002         0
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
         0    0.0010    0.0028    0.0102


qassetmean =

    0.0042
    0.0083
    0.0100
    0.0150


qassetcovar =

    0.0005    0.0003    0.0002   -0.0000
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
   -0.0000    0.0010    0.0028    0.0102


passetmean =

    0.0042
    0.0083
    0.0100
    0.0150


passetcovar =

    0.0005    0.0003    0.0002         0
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
         0    0.0010    0.0028    0.0102


qassetmean =

    0.0042
    0.0083
    0.0100
    0.0150


qassetcovar =

    0.0005    0.0003    0.0002   -0.0000
    0.0003    0.0024    0.0017    0.0010
    0.0002    0.0017    0.0048    0.0028
   -0.0000    0.0010    0.0028    0.0102
Как вы видите, соответствие моментов между th два портфеля. Кроме того, estimateAssetMoments также имена актива извлечений или идентификаторы от a table или timetable когда имя аргумента 'GetAssetList' установите на true (его значением по умолчанию является false). Если 'GetAssetList' значением является true, идентификаторы используются, чтобы установить AssetList свойство объекта. Показать это, формирование Portfolio объект q повторяется от предыдущего примера с 'GetAssetList' отметьте набор к true извлекает метки столбца из объекта таблицы или расписания:
q = estimateAssetMoments(q,assetRetnTable,'GetAssetList',true);
disp(q.AssetList)
'Bonds'    'LargeCap'    'SmallCap'    'Emerging'
Отметьте, устанавливаете ли вы 'GetAssetList' отметьте набор к true и ваши входные данные находятся в матрице, estimateAssetMoments использует схему маркировки значения по умолчанию от setAssetList описанный в Подготовке Списка Идентификаторов Актива.

Смотрите также

| | | |

Связанные примеры

Больше о

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