exponenta event banner

Оптимизация портфеля Black-Litterman

В этом примере показан рабочий процесс реализации модели Black-Litterman с помощью Portfolio класс. Модель Блэка-Литтермана - это подход к распределению активов, который позволяет инвестиционным аналитикам включать субъективные взгляды (основанные на оценках инвестиционных аналитиков) в равновесную доходность рынка. Смешивая мнения аналитиков и равновесную доходность вместо того, чтобы полагаться только на доходность активов за прошлые периоды, модель Блэка-Литтермана обеспечивает систематический способ оценки среднего и ковариации доходности активов.

В модели Black-Litterman смешанный ожидаемый доход - μ-= [PTΩ-1P+C-1]-1 [PTΩ-1q+C-1π], и неуверенность оценки - cov (μ) = [PTΩ-1P+C-1]-1. Чтобы использовать модель Блэка-Литтермана, необходимо подготовить входные данные: P, q, Λ, λ и C. Входные данные для P, q и Λ связаны с видом и определены инвестиционным аналитиком. δ - равновесное возвращение, а C - неопределенность в предшествующем убеждении. В этом примере показано, как определить эти входные данные и использовать полученные результаты смешения при оптимизации портфеля. Для получения дополнительной информации о концепции и деривации модели Блэка-Литтермана см. раздел Приложения Модель Блэка-Литтермана в байесовской структуре .

Определение вселенной активов

dowPortfolio.xlsx набор данных включает 30 активов и один эталонный тест. Семь активов из этого набора данных составляют инвестиционную вселенную в этом примере. Безрисковая ставка принимается равной нулю.

T = readtable('dowPortfolio.xlsx');

Определите совокупность основных средств и извлеките доходность основных средств из данных цены.

assetNames = ["AA", "AIG", "WMT", "MSFT", "BA", "GE", "IBM"];
benchmarkName = "DJI";
head(T(:,["Dates" benchmarkName assetNames]))
ans=8×9 table
       Dates        DJI      AA       AIG      WMT     MSFT      BA       GE       IBM 
    ___________    _____    _____    _____    _____    _____    _____    _____    _____

    03-Jan-2006    10847    28.72    68.41     44.9    26.19    68.63     33.6    80.13
    04-Jan-2006    10880    28.89    68.51    44.99    26.32    69.34    33.56    80.03
    05-Jan-2006    10882    29.12     68.6    44.38    26.34    68.53    33.47    80.56
    06-Jan-2006    10959    29.02    68.89    44.56    26.26    67.57     33.7    82.96
    09-Jan-2006    11012    29.37    68.57     44.4    26.21    67.01    33.61    81.76
    10-Jan-2006    11012    28.44    69.18    44.54    26.35    67.33    33.43     82.1
    11-Jan-2006    11043    28.05     69.6    45.23    26.63     68.3    33.66    82.19
    12-Jan-2006    10962    27.68    69.04    44.43    26.48     67.9    33.25    81.61

retnsT = tick2ret(T(:, 2:end));
assetRetns = retnsT(:, assetNames);
benchRetn = retnsT(:, "DJI");
numAssets = size(assetRetns, 2);

Определение представлений рынка

Взгляды представляют субъективные взгляды инвестиционного аналитика относительно будущих изменений рынка, выраженных как q =P*μ + ε, ε ~ N (0, Ω), Ω = диагональ (ω1, ω2...ωv), где v - общее количество взглядов. Дополнительные сведения см. в разделе «Допущения и представления» Приложения. С v-представлениями и k-активами P является матрицей v-by-k, q - вектором v-by-1, Λ - диагональной матрицей v-by-v (представляющей независимую неопределённость в представлениях). Эти взгляды не обязательно должны быть независимыми между собой, и можно выбрать структуру Λ для учета неопределенностей инвестиционного аналитика во взглядах [4]. Чем меньше λ i в Λ, тем меньше дисперсия в распределении i-го вида и тем сильнее или больше определенный i-й вид инвестора. В этом примере предполагается наличие трех независимых представлений.

  1. AIG собирается получить 5% годовой прибыли с неопределенностью 1e-3. Это слабый абсолютный взгляд из-за его высокой неопределенности.

  2. WMT будет иметь 3% годовой прибыли с неопределенностью 1e-3. Это слабый абсолютный взгляд из-за его высокой неопределенности.

  3. MSFT собирается превзойти IBM на 5% годовой доходности с неопределенностью 1e-5. Это сильный относительный взгляд из-за его низкой неопределенности.

v = 3;  % total 3 views
P = zeros(v, numAssets);
q = zeros(v, 1);
Omega = zeros(v);

% View 1
P(1, assetNames=="AIG") = 1; 
q(1) = 0.05;
Omega(1, 1) = 1e-3;

% View 2
P(2, assetNames=="WMT") = 1; 
q(2) = 0.03;
Omega(2, 2) = 1e-3;

% View 3
P(3, assetNames=="MSFT") = 1; 
P(3, assetNames=="IBM") = -1; 
q(3) = 0.05;
Omega(3, 3) = 1e-5;

Визуализация трех представлений в табличной форме.

viewTable = array2table([P q diag(Omega)], 'VariableNames', [assetNames "View_Return" "View_Uncertainty"]) 
viewTable=3×9 table
    AA    AIG    WMT    MSFT    BA    GE    IBM    View_Return    View_Uncertainty
    __    ___    ___    ____    __    __    ___    ___________    ________________

    0      1      0      0      0     0      0        0.05             0.001      
    0      0      1      0      0     0      0        0.03             0.001      
    0      0      0      1      0     0     -1        0.05             1e-05      

Потому что возврат от dowPortfolio.xlsx набор данных - это ежедневная доходность, а ракурсы - годовая доходность, необходимо преобразовать ракурсы для ежедневной доходности.

bizyear2bizday = 1/252;
q = q*bizyear2bizday; 
Omega = Omega*bizyear2bizday;

Оценка ковариации по историческим возвратам основных средств

Λ - ковариация доходности исторического актива.

Sigma = cov(assetRetns.Variables);

Определение неопределенности C

Модель Блэка - Литтермана делает предположение, что структура C пропорциональна ковариации Λ. Таким образом, C = start, где start- малая константа. Более мелкая («меньшая» («меньшая»), указывает на более высокую уверенность в предшествующем убеждении («вере»), выраженном («вере»). Работа Хе и Литтермана использует значение 0,025. Другие авторы предлагают использовать 1/n, где n - количество точек данных, используемых для генерации ковариационной матрицы [3]. В этом примере используется 1/n.

tau = 1/size(assetRetns.Variables, 1);
C = tau*Sigma;

Подразумеваемая на рынке равновесная доходность

При отсутствии каких-либо взглядов равновесная доходность, вероятно, равна подразумеваемой доходности от сохранения равновесного портфеля. На практике применимым равновесным портфельным держанием может быть любой оптимальный портфель, который инвестиционный аналитик будет использовать при отсутствии дополнительных взглядов на рынок, таких как ориентир портфеля, индекс или даже текущий портфель [2]. В этом примере линейная регрессия используется для поиска рыночного портфеля, который отслеживает результаты эталонного теста DJI. Затем рыночный портфель используется как равновесный портфель, и равновесная доходность подразумевается из рыночного портфеля. findMarketPortfolioAndImpliedReturn функция, определенная в Local Functions, реализует равновесные результаты. Эта функция принимает доходность активов за прошлые периоды и доходность эталонных показателей в качестве входных данных и выводит рыночный портфель и соответствующую подразумеваемую доходность.

[wtsMarket, PI] = findMarketPortfolioAndImpliedReturn(assetRetns.Variables, benchRetn.Variables);

Вычислить предполагаемую среднюю доходность и ковариацию

Используйте входные значения P, q, Λ, δ и C для вычисления доходности и дисперсии смешанного актива с использованием модели Блэка-Литтермана.

С помощью этой матричной операции можно вычислить мк- и cov (λ) непосредственно:

мк- = [PTΩ-1P + C-1] -1 [PTΩ-1q + C-1δ], cov (λ) = [PTΩ-1P + C-1] -1

mu_bl = (P'*(Omega\P) + inv(C)) \ ( C\PI + P'*(Omega\q));
cov_mu = inv(P'*(Omega\P) + inv(C));

Сравнивая смешанную ожидаемую отдачу от модели Блэка-Литтермана с предыдущей верой в ожидаемую отдачу, вы обнаруживаете, что ожидаемая отдача от модели Блэка-Литтермана действительно представляет собой смесь как предыдущей веры, так и взглядов инвесторов. Например, как показано в таблице ниже, предыдущее представление предполагает сходную доходность для MSFT и IBM, но в смешанном ожидаемом доходности MSFT имеет более высокую доходность, чем IBM, более чем на 4%. Это различие связано с навязанным сильным мнением, что MSFT превосходит IBM на 5%.

table(assetNames', PI*252, mu_bl*252, 'VariableNames', ["Asset_Name", ...
    "Prior_Belief_of_Expected_Return", "Black_Litterman_Blended_Expected_Return"])
ans=7×3 table
    Asset_Name    Prior_Belief_of_Expected_Return    Black_Litterman_Blended_Expected_Return
    __________    _______________________________    _______________________________________

      "AA"                    0.19143                                0.19012                
      "AIG"                   0.14432                                0.13303                
      "WMT"                   0.15754                                 0.1408                
      "MSFT"                  0.14071                                0.17557                
      "BA"                    0.21108                                 0.2017                
      "GE"                    0.13323                                0.12525                
      "IBM"                   0.14816                                0.12877                

Оптимизация портфеля и результаты

Portfolio объект в Financial Toolbox™ реализует структуру оптимизации портфеля средних отклонений Марковица. Использование Portfolio можно найти эффективный портфель для данного риска или уровня доходности, а также максимизировать коэффициент Шарпа.

Использовать estimateMaxSharpeRatio с Portfolio объект для поиска распределений с максимальным коэффициентом Шарпа для следующих портфелей:

  • Портфель со средним значением активов и ковариацией от возврата активов за прошлые периоды

  • Портфель с возвратом смешанных активов и ковариацией от модели Black-Litterman

port = Portfolio('NumAssets', numAssets, 'lb', 0, 'budget', 1, 'Name', 'Mean Variance');
port = setAssetMoments(port, mean(assetRetns.Variables), Sigma);
wts = estimateMaxSharpeRatio(port);

portBL = Portfolio('NumAssets', numAssets, 'lb', 0, 'budget', 1, 'Name', 'Mean Variance with Black-Litterman');
portBL = setAssetMoments(portBL, mu_bl, Sigma + cov_mu);  
wtsBL = estimateMaxSharpeRatio(portBL);

ax1 = subplot(1,2,1);
idx = wts>0.001;
pie(ax1, wts(idx), assetNames(idx));
title(ax1, port.Name ,'Position', [-0.05, 1.6, 0]);

ax2 = subplot(1,2,2);
idx_BL = wtsBL>0.001;
pie(ax2, wtsBL(idx_BL), assetNames(idx_BL));
title(ax2, portBL.Name ,'Position', [-0.05, 1.6, 0]);

table(assetNames', wts, wtsBL, 'VariableNames', ["AssetName", "Mean_Variance", ...
     "Mean_Variance_with_Black_Litterman"])
ans=7×3 table
    AssetName    Mean_Variance    Mean_Variance_with_Black_Litterman
    _________    _____________    __________________________________

     "AA"         1.1823e-16                     0.1115             
     "AIG"        1.2052e-17                    0.23314             
     "WMT"        4.6763e-18                   0.098048             
     "MSFT"         0.059393                    0.15824             
     "BA"            0.32068                    0.10748             
     "GE"          1.576e-15                     0.1772             
     "IBM"           0.61993                    0.11439             

При использовании значений для возврата смешанного актива и ковариации из модели Блэка-Литтермана в оптимизации среднего отклонения оптимальные распределения отражают мнения инвестиционного аналитика напрямую. Распределение из модели Блэка-Литтермана более разнообразно, как показывает круговая диаграмма. Также веса среди активов в модели Black-Litterman согласны с взглядами инвестиционного аналитика. Например, при сравнении результата Black-Litterman с результатом оптимизации простой средней дисперсии можно увидеть, что результат Black-Litterman вкладывается в MSFT больше, чем в IBM. Это связано с тем, что инвестиционный аналитик твердо считает, что MSFT будет превосходить IBM.

Локальные функции

function [wtsMarket, PI] = findMarketPortfolioAndImpliedReturn(assetRetn, benchRetn)
% Find the market portfolio that tracks the benchmark and its corresponding implied expected return.

Подразумеваемый возврат рассчитывается путем обратной оптимизации. Безрисковая ставка принимается равной нулю. Общую формулировку оптимизации портфеля дает задача оптимизации Марковица: argmaxωωTμ-δ2ωTΣω. Здесь λ - вектор N-элемента весов актива, λ - вектор N-элемента ожидаемых доходностей актива, Λ - ковариационная матрица N-на-N возвратов актива, δ - положительный параметр неприятия риска. Учитывая δ, при отсутствии ограничений, замкнутым формальным решением этой задачи является λ = 1δΛ-1λ. Следовательно, при рыночном портфеле подразумеваемая ожидаемая доходность составляет δ = δStartstartmkt .

Чтобы вычислить подразумеваемую ожидаемую доходность, нужны Λ, startmkt, δ.

1) Найди Λ.

Δ рассчитывается по доходности активов за прошлые периоды.

Sigma = cov(assetRetn);

2) Найдите портфель рынка.

Чтобы найти рыночный портфель, регресс против DJI. Наложенные ограничения полностью вложены и длительны только: ∑i=1nωi=1,0≤ωi,∀i∈{1,..., n}

numAssets = size(assetRetn,2);
LB = zeros(1,numAssets);
Aeq = ones(1,numAssets);
Beq = 1;
opts = optimoptions('lsqlin','Algorithm','interior-point', 'Display',"off");
wtsMarket = lsqlin(assetRetn, benchRetn, [], [], Aeq, Beq, LB, [], [], opts);

3) Найти δ.

Умножьте обе стороны δ = δ Здесь предполагается, что Benchmark максимизирует коэффициент Шарпа, и соответствующее значение используется в качестве рыночного коэффициента Шарпа. Кроме того, можно откалибровать годовое отношение Шарпа равным 0,5, что приводит кshpr=0.5/sqrt(252) [1]. startm - стандартное отклонение рыночного портфеля.

shpr = mean(benchRetn)/std(benchRetn);
delta = shpr/sqrt(wtsMarket'*Sigma*wtsMarket); 

4) Вычислите подразумеваемую ожидаемую доходность.

Предполагая, что рыночный портфель максимизирует отношение Шарпа, подразумеваемая доходность, без эффектов от ограничений, вычисляется непосредственно как δ = δStart

PI = delta*Sigma*wtsMarket;
end

Приложение: Модель Блэка-Литтермана в байесовских рамках

Допущения и мнения

Предположим, что инвестиционная вселенная состоит из k активов и вектор доходности активов r моделируется как случайная величина, следуя многомерному нормальному распределению r _ N (λ, Λ). Λ - ковариация от доходности исторических активов. Неизвестный параметр модели является ожидаемым возвращаемым δ. С точки зрения байесовской статистики, модель Блэка-Литтермана пытается оценить, объединив взгляды инвестиционного аналитика (или «наблюдения будущего») и некоторые предшествующие знания о λ.

Кроме того, предположим, что предшествующее знание того, что λ является нормально распределенной случайной величиной (λ, C) [1, 2]. При отсутствии каких-либо взглядов (наблюдений) предшествующее среднее δ, вероятно, будет равновесной доходностью, подразумеваемой из равновесного удержания портфеля. На практике применимое равновесное портфолио не обязательно является равновесным портфелем, а скорее целевым оптимальным портфелем, который инвестиционный аналитик будет использовать в отсутствие дополнительных взглядов на рынок, таких как контрольный показатель портфеля, индекс или даже текущий портфель. C представляет неопределенность в предшествующем, и модель Блэка-Литтермана делает предположение, что структура C равна start- малая константа, и многие авторы используют разные значения. С подробным рассуждением о startможно ознакомиться в [3].

Наблюдения необходимы, чтобы выполнить статистический вывод по λ. В модели Блэка-Литтермана замечания касаются будущей доходности активов, выраженной на уровне портфеля. Представление - это ожидаемый возврат портфеля, состоящего из совокупности k активов. Обычно возврат портфеля имеет неопределенность, поэтому добавляется термин ошибки, чтобы поймать уход. Предположим, что существует в общей сложности v видов. Для вида i pi - вектор строки с размерностью 1 x k, а qi - скаляр [2].

qi = Start[ pi * r | λ] + αi, i = 1,2,..., v

V-образные представления можно складывать по вертикали, а Λ - ковариация неопределенностей из всех видов. Предположим, что неопределенности независимы.

q = Λ [P * r | λ] +,, (0, Λ), Λ = diag (

Заметим, что Λ не обязательно должен быть диагональной матрицей. Инвестиционный аналитик может выбрать структуру, чтобы учесть их неопределенности во взглядах [4].

При прежнем предположении r ~ N (λ, Λ) следует, что

q = P * start+, start~ N (0, Λ), Λ = diag (start1, start2,... startv).

Байесовское определение модели Блэка-Литтермана

На основе байесовской статистики известно, что: posterior∝likelihood*prior.

В контексте модели Блэка-Литтермана posterior∝likelihood*prior выражается как f (λ 'q) f (q' λ) * f (λ), где каждый байесовский член определяется следующим образом [2]:

  • Вероятность такова, насколько вероятно, что представления будут иметь место при заданном, и выражается как f (q 'λ) ∝exp [-12 (Pλ-q) Λ-1 (Pλ-q)].

  • Предшествующий предполагает предшествующее знание того, что λ ~ N (λ, C) и выражается как f (λ) ∝exp [-12 (λ-λ) C-1 (λ-λ)].

  • Задняя - это распределение λ заданных взглядов и выражается как f (λ 'q) ∝exp [-12 (Pλ-q) Λ-1 (P, - q) -12 (, - λ) C-1 (, - λ)].

Как указывалось ранее, апостериорное распределение λ также является нормальным распределением. Заканчивая площади, Вы можете получить следующее среднее и ковариацию как μ-= [PTΩ-1P+C-1]-1 [PTΩ-1q+C-1π], cov (μ) = [PTΩ-1P+C-1] -1.

Наконец, объединяя Bayesian следующее распределение μ и модель актива возвращают r~N (μ), у Вас тогда есть следующий прогноз прибыли актива как r~N (μ-, Σ + cov (μ )).

Ссылки

  1. Уолтерс, Дж. «Модель Блэк-Литтермана в деталях». 2014. Доступно по адресу SSRN: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1314585.

  2. Кольм, П. Н., и Риттер, Г. «О байесовской интерпретации Чёрно-Литтермана». Европейский журнал оперативных исследований. Том 258, номер 2, 2017, стр. 564-572.

  3. Аттилио, М. «Beyond Black-Litterman in Practice: A Five-Step Recipe to Input Views on Non-Normal Markets». 2006. Доступно по адресу SSRN: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=872577.

  4. Ульф, Х. «Вычисления подразумевали возврат значимым образом». Журнал управления активами. Том 6, номер 1, 2005, стр. 53-64.

См. также

| | | | | | | | |

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

Подробнее

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