MATLAB Implementation of Black Litterman Model

This code implements the Black and Litterman Model As given in the paper He & Litterman: The intuition Behind Black- Litterman

Model Portfolios.

% First The Inputs:

% Correlation Matrix: Page 18

Corrmat = ...

[1,0.4880,0.4780,0.5150,0.4390,0.5120,0.4910;

0.4880,1,0.6640,0.6550,0.3100,0.6080,0.7790;

0.4780,0.6640,1,0.8610,0.3550,0.7830,0.6680;

0.5150,0.6550,0.8610,1,0.3540,0.7770,0.6530;

0.4390,0.3100,0.3550,0.3540,1,0.4050,0.3060;

0.5120,0.6080,0.7830,0.7770,0.4050,1,0.6520;

0.4910,0.7790,0.6680,0.6530,0.3060,0.6520,1;];

% Risk Aversion Parameter---Page 10

RiskAversion = 2.5;

% Standard Deviations and Market Capitalization Weights--Table 2 Page 19

stdevs = ...

[16.0000

20.3000

24.8000

27.1000

21.0000

20.0000

18.7000]./100;

MktWeight = ...

[ 1.6000

2.2000

5.2000

5.5000

11.6000

12.4000

61.5000]./100;

tau = 0.05;

## Market Equilibrium Risk Premiums : THE PI

Equation 2 Page 3 PI = RiskAversion * Covariance * MktWeight

% Need to Convert Correlation into Covariance

Covmat = Corrmat .* (stdevs * stdevs');

% Now we have everything to implement the Equation

%EqRiskPrem = RiskAversion * Covmat * MktWeight;

EqRiskPrem = RiskAversion * Covmat * MktWeight;

% Print Out Table 2 in Page 19

AssetNames = {'Australia','Canada','France','Germany','Japan',...

'UK','USA'};

Table2 = [{'Assets' 'Std Dev' 'Weq' 'PI'};

{'------' '------' '---' '--'};

AssetNames' num2cell([stdevs MktWeight EqRiskPrem]*100)]

Table2 =

'Assets' 'Std Dev' 'Weq' 'PI'

'------' '------' '---' '--'

'Australia' [ 16] [ 1.6000] [3.9376]

'Canada' [20.3000] [ 2.2000] [6.9152]

'France' [24.8000] [ 5.2000] [8.3581]

'Germany' [27.1000] [ 5.5000] [9.0272]

'Japan' [ 21] [11.6000] [4.3028]

'UK' [ 20] [12.4000] [6.7677]

'USA' [18.7000] [61.5000] [7.5600]

## Views Based Optimal Weights

%View1 is The German Equity Market Will Outperform the rest of European

% Markets by 5% a year.

P = [ 0 %Australia

0 %Canada

-29.5 %France

100 %Germany

0 %Japan

-70.5 %UK

0]'./100; %USA

Q = 5/100;

% The Black Litterman Expected Returns are Calculated

% By Equation 8 and the Optimal Portfolio Weights are

% Calculated By

%RiskAversion * Covariance * ExpectedReturns(MU)

% Lambda = 0.302; Page 11

Omega = diag(diag(P*tau*Covmat*P'));

% Equation 8--Expected Returns : MU

PostCov = inv(inv(tau*Covmat) + (P' * inv(Omega) * P));

SigmaP = Covmat + PostCov;

ExpRet=inv(inv(tau*SigmaP)+P'*inv(Omega)*P)* ...

(inv(tau*SigmaP)*EqRiskPrem +P'*inv(Omega)*Q);

% ExpRet = inv(inv(tau*Covmat) + P' * inv(Omega) * P) * ...

%(inv(tau*Covmat) * EqRiskPrem + P' * inv(Omega) * Q);

% Optimal Weights

OptimalWeights = (1/RiskAversion)* inv(SigmaP) * ExpRet;

Tab4Col4 = OptimalWeights - (MktWeight)/(1+tau);

Table4 = [{'Assets' 'P' 'MU' 'W' 'W - Weq/1+tau'};

{'------' '--' '---' '--' '-------------'};

AssetNames' num2cell([P' ExpRet OptimalWeights ...

round(Tab4Col4 * 1000)./1000]*100)]

Table4 =

'Assets' 'P' 'MU' 'W' 'W - Weq/1+tau'

'------' '--' '---' '--' '-------------'

'Australia' [ 0] [ 4.3328] [ 1.5238] [ 0]

'Canada' [ 0] [ 7.5838] [ 2.0952] [ 0]

'France' [-29.5000] [ 9.2991] [-4.0555] [ -9]

'Germany' [ 100] [11.0615] [35.7733] [ 30.5000]

'Japan' [ 0] [ 4.5087] [11.0476] [ 0]

'UK' [-70.5000] [ 6.9550] [-9.7178] [ -21.5000]

'USA' [ 0] [ 8.0756] [58.5714] [ 0]

## 8 comments:

bupka's online menyediakan buku terpakai (used books) berkualitas dan asli original dengan harga miring,banyak buku teknik. silahkan kunjungi

http://bupka.wordpress.com

buku MATLAB yg dibicarakan diatas, ada stok saat ini.

silahkan liat2 lainnya juga.

Thank you for publishing the Matlab codes for Black-Litterman.

I am modified your codes to incorporate 2--instead of 1--views.

When I ran your coding for Table4=...I got

??? Error using ==> vertcat

CAT arguments dimensions are not consistent.

How to modify your code to make it work for 2 views?

Great stuff, thanks a lot for publishing ! I love it. I love it so much, that the greedy visual-data gnome in me wants more!

can you put the link for the code?

I get a different result for

Pi(the equilibrium risk premiums). Australia is the same, but the rest are different?Grateful to check out your website, I seem to be ahead to more excellent sites and I wish that you wrote more informative post for us. Well done work.

Quantum Binary SignalsProfessional trading signals delivered to your cell phone daily.

Follow our trades today &

gain up to 270% per day.eTorois the best forex broker for newbie and advanced traders.Post a Comment