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)