www.gusucode.com > GAVPai_Book_MathworksCntrlFileEx_May2019 > GAVPai_Book_MathworksCntrlFileEx_May2019/Chapter3_Nikkei225Index_KPortfolios.m

    % Vijayalakshmi Pai G A, Metaheuristics for Portfolio Optimization, An
% Introduction using MATLAB, ISTE-Wiley, 2017.

% k-portfolio performance: Equal weighted portfolio construction and Inverse volatility
% weighted portfolio construction for a k-portfolio over Nikkei 225 Index
% Obtains the Risk, Return and Diversification Ratios of the k-portfolios

% Chapter 3  Sec. 3.5,  Sec. 3.6 D and Sec. 3.6 E  

% Program coding:  Dr G A Vijayalakshmi Pai
% Note: Coding style has been kept naive and direct to favor novices in
% MATLAB. Users familiar with MATLAB are encouraged to improvise the code

%------------------------------------------------------------------------

clear all

portfolio_size = 30;

% import mean returns and variance-covariance matrix of returns for the
% k-portfolio of Nikkei225 Index
% row 1: mean daily returns,  rows 2 to 31: variance-covariance matrix of
% daily returns, row 32: asset labels

file_name ='kportfolio_Nikkei225_mean_varcovar_returns.xls';        
m = xlsread(file_name); 

% extract mean and variance-covariance of daily returns (percentage) for the assets
% in Portfolio P
mean_data = m(1,:);
cov_data= m(2:portfolio_size+1, :);
 
% Equal weighted k-portfolio : Risk, Return and Diversification ratio
eq_weight_mat = ones(1,portfolio_size) * 1/portfolio_size;
eq_portfolio_risk = sqrt( eq_weight_mat * cov_data * eq_weight_mat');

eq_ann_portfolio_return = 261* sum(eq_weight_mat.*mean_data)
eq_ann_portfolio_risk = sqrt(261)* eq_portfolio_risk

eq_stdev_assets = sqrt(diag(cov_data));
eq_DivRatio = ((sum(eq_stdev_assets' .* eq_weight_mat)) / eq_portfolio_risk)


% Inverse volatility weighted k-portfolio: Risk, Return and Diversification
% ratio
iv_stdev_assets = sqrt(diag(cov_data))';
iv_recipro_stdev_assets = ( 1./iv_stdev_assets );
iv_recipro_stdev_assets_sum = sum( iv_recipro_stdev_assets);
iv_weight_mat = iv_recipro_stdev_assets/iv_recipro_stdev_assets_sum ;
iv_portfolio_risk = sqrt( iv_weight_mat * cov_data * iv_weight_mat');

iv_ann_portfolio_return = 261* sum(mean_data.*iv_weight_mat)
iv_ann_portfolio_risk = sqrt(261)* iv_portfolio_risk

iv_DivRatio = ((sum(iv_stdev_assets .* iv_weight_mat)) / iv_portfolio_risk)