Mean Variance Portfolio Selection

Contents

Problem description

An investor wishes to invest a certain amount of money. He is evaluating four different securities (assets) for his investment. The securities are US Treasury Bills (‘T-bills’), a computer hardware company, a computer software company, and a high-risk investment in a theater production. He estimates the mean yield on each dollar he invests in each of the securities, and also adopts the Markowitz idea of getting estimates of the variance/covariance matrix of estimated returns on the securities. (For example, hardware and software company worths tend to move together, but are oppositely correlated with the success of theatrical production, as people go to the theater more when they have become bored with playing with their new computers and computer games.) The return on theatrical productions are highly variable, whereas the T-bill yield is certain. The estimated returns and the variance/covariance matrix are given in the table below.

Estimated returns and variance/covariance matrix

+----------------+--------+--------+--------+-------+
|                |Hardware|Software|Show-biz|T-bills|
+----------------+--------+--------+--------+-------+
|Estimated return|   8    |   9    |    12  |   7   |
+----------------+--------+--------+--------+-------+
|Hardware        |   4    |   3    |    -1  |   0   |
|Software        |   3    |   6    |     1  |   0   |
|Show-biz        |  -1    |   1    |    10  |   0   |
|T-bills         |   0    |   0    |     0  |   0   |
+----------------+--------+--------+--------+-------+

Question 1: Which investment strategy should the investor adopt to minimize the variance subject to getting some specified minimum target yield?

Question 2: Which is the least variance investment strategy if the investor wants to choose at most two different securities (again subject to getting some specified minimum target yield)?

Variables

estreturn                  Estimated return of securities
covmat                     The variance/covariance matrix
target                     Minimum target yield
maxassets                  Number of securities

Reference

Applications of optimization... Gueret, Prins, Seveaux

% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com
% Copyright (c) 2005-2009 by Tomlab Optimization Inc., $Release: 7.2.0$
% Written Oct 7, 2005.   Last modified Apr 8, 2009.

Problem setup

estreturn = [8 9 12 7]';
covmat    = [ 4  3 -1  0;...
    3  6  1  0;...
    -1  1 10  0;...
    0  0  0  0];
target    = 8.5;

n = length(estreturn);
buy = tom('buy',n,1);

% Bounds
bnds = {0 <= buy <= 1};

% Cost constraints
con1 = {estreturn'*buy >= target};
con2 = {sum(buy) == 1};

% Objective
objective = 0.5*buy'*covmat*buy;

constraints = {bnds, con1, con2};
options = struct;
options.solver = 'cplex';
options.name   = 'Mean Variance Portfolio Selection';
sol1 = ezsolve(objective,constraints,[],options);

buybin = tom('buybin',n,1,'int');
bnds2 = {0 <= buybin <= 1};

maxassets = 2;
con3 = {sum(buybin) <= maxassets};
con4 = {buy - buybin <= 0};

constraints = {bnds, con1, con2, con3, con4};
sol2 = ezsolve(objective,constraints,[],options);

PriLev = 1;
if PriLev > 0
    names  = ['Hardware';
        'Software';
        'Show-biz';
        'T-bills '];
    disp('Answer to Question 1:')
    for i = 1:length(sol1.buy),
        disp(['   invest ' num2str(sol1.buy(i)*100) ...
            '% of the capital in ' names(i,:) ])
    end
    disp('Answer to Question 2 (limited number of securities):')
    x = sol2.buy;
    x(find(x < 1e-6)) = 0;
    for i = 1:length(x),
        if x(i) ~= 0,
            disp(['   invest ' num2str(x(i)*100) ...
                '% of the capital in ' names(i,:)  ])
        end
    end
end

% MODIFICATION LOG
%
% 051202 med   Created.
% 060117 per   Added documentation.
% 060125 per   Moved disp to end
% 090308 med   Converted to tomSym
Problem type appears to be: qp
===== * * * =================================================================== * * *
TOMLAB - Tomlab Optimization Inc. Development license  999001. Valid to 2010-02-05
=====================================================================================
Problem:  1: Mean Variance Portfolio Selection  f_k       0.362379808516659960
                                              f(x_0)      0.000000000000000000

Solver: CPLEX.  EXIT=0.  INFORM=1.
CPLEX Barrier QP solver
Optimal solution found

FuncEv   12 GradEv   12 ConstrEv   12 Iter   12 
CPU time: 0.015625 sec. Elapsed time: 0.015000 sec. 
Problem type appears to be: miqp
===== * * * =================================================================== * * *
TOMLAB - Tomlab Optimization Inc. Development license  999001. Valid to 2010-02-05
=====================================================================================
Problem: ---  1: Mean Variance Portfolio Selection  f_k       0.450000000000000120
                                           sum(|constr|)      0.000000000000000009
                                  f(x_k) + sum(|constr|)      0.450000000000000120
                                                  f(x_0)      0.000000000000000000

Solver: CPLEX.  EXIT=0.  INFORM=101.
CPLEX Branch-and-Cut MIQP solver
Optimal integer solution found

FuncEv   15 GradEv   15 Iter    4 
Answer to Question 1:
   invest 15.1442% of the capital in Hardware
   invest 4.3269% of the capital in Software
   invest 25.2404% of the capital in Show-biz
   invest 55.2885% of the capital in T-bills 
Answer to Question 2 (limited number of securities):
   invest 30% of the capital in Show-biz
   invest 70% of the capital in T-bills