Description

MATLAB code

Results

Table 1. Solutions of Problem with CDaR_DEV Multiple and Problem with CDaR_DEV Single

Figure 1. Comparison of Solutions Obtained with CDaR Dev Multiple and CDaR Dev Single

 

 

Description

Two optimization problems: maximization of average annualized portfolio return with constraints on CDaR Deviation Multiple ( for multiple paths)  and maximization of average annualized portfolio return with constraints on CDaR Deviation (for united single path). For more details about these problems see Formal Problem Statement or:

 

Portfolio Optimization with Drawdown Constraints on a Single Path
Portfolio Optimization with Drawdown Constraints on Multiple Paths

 

MATLAB code for Portfolio Optimization with Drawdown Constraints, Single Path vs Multiple Paths is in file CS_CDaR_Single_Path_vs_CDaR_Multiple_Paths_Toolbox.m.

Data are saved in file CS_CDaR_Single_Path_vs_CDaR_Multiple_Paths_Toolbox_data.mat.

 

MATLAB code

Let us describe the main operations. To run case study you need to do the following main steps:

 

In file CS_CDaR_Single_Path_vs_CDaR_Multiple_Paths_Toolbox.m:

 

Load data prepared in PSG Toolbox format and packed in structure 'toolboxstruc_arr':

 

load CS_CDaR_Single_Path_vs_CDaR_Multiple_Paths_Toolbox_data.mat 'toolboxstruc_arr'

tbpsg_export_to_workspace(toolboxstruc_arr);

 

Generate problem statement for CDaR Deviation Multiple:

 

str1_1 = sprintf('maximize');

str1_2 = sprintf('linear_average_returns(matrix_average_annualized_returns)');

str1_3 = sprintf('Constraint: <= 0.023');

str1_4 = sprintf('cdarmulti_dev(0.8, matrix_1,...,matrix_11)');

str1_5 = sprintf('Box: >= point_lowerbounds, <= point_upperbounds');

str1_6 = sprintf('Solver: TANK, precision = 9');

clear problem_statement1;

problem_statement1 = sprintf('%s\n', str1_1, str1_2, str1_3, str1_4, str1_5, str1_6);

 

% Uncomment the following line to open the problem in Toolbox Window

% tbpsg_toolbox(problem_statement,toolboxstruc_arr);

 

Optimize the first problem:

 

[solution_str1, outargstruc_arr1] = tbpsg_run(problem_statement1, toolboxstruc_arr);

 

Extract optimal solution:      

 

point_variables1 = tbpsg_optimal_point_vars(solution_str1, outargstruc_arr1);

Points1 = tbpsg_optimal_point_data(solution_str1, outargstruc_arr1)';

 

Generate problem statement for CDaR Deviation Single:

 

str2_1 = sprintf('maximize');

str2_2 = sprintf('linear(matrix_average_annualized_returns)');

str2_3 = sprintf('Constraint: <= 0.023');

str2_4 = sprintf('cdar_dev(0.8, matrix_H)');

str2_5 = sprintf('Box: >= point_lowerbounds, <= point_upperbounds');

str2_6 = sprintf('Solver: TANK, precision = 9');

clear problem_statement2;

problem_statement2 = sprintf('%s\n', str2_1, str2_2, str2_3, str2_4, str2_5, str2_6);

 

% Uncomment the following line to open the problem in Toolbox Window

% tbpsg_toolbox(problem_statement,toolboxstruc_arr);

 

Optimize the second problem:

 

[solution_str2, outargstruc_arr2] = tbpsg_run(problem_statement2, toolboxstruc_arr);

 

Extract optimal solution:      

 

point_variables2 = tbpsg_optimal_point_vars(solution_str2, outargstruc_arr2);

Points2 = tbpsg_optimal_point_data(solution_str2, outargstruc_arr2)';

   

 

Results

Table 1. Solutions of Problem with CDaR_DEV Multiple and Problem with CDaR_DEV Single

 

           Solution with CDaR_DEV Multiple   Solution with CDaR_DEV Single

Objective:                                0.2408                                                        0.2289

Components:

ad                                        0.2000                                                        0.2000

bd                                        0.2000                                                        0.2000

bp                                        0.2000                                                        0.2000

cd                                        0.2319                                                        0.2000

cp                                        0.4495                                                        0.3681

dx                                        0.2000                                                        0.2000

ed                                        0.2000                                                        0.2000

eu                                        0.2000                                                        0.2000

fxadjy                                0.2000                                                        0.2000

fxbpjy                                0.5181                                                        0.4836

fxeubp                                0.2000                                                        0.2000

fxeujy                                0.2000                                                        0.2000

fxnzus                                0.2000                                                        0.2000

fxussg                                0.2000                                                        0.2000

fxussk                                0.2000                                                        0.2000

fy                                        0.2000                                                        0.2000

gc                                        0.2000                                                        0.2000

jy                                        0.2333                                                        0.2209

lift                                        0.2000                                                        0.2000

ligi                                        0.2000                                                        0.2000

liib                                        0.2000                                                        0.2000

lmal                                        0.2000                                                        0.2000

manb                                        0.2000                                                        0.2000

sf                                        0.2000                                                        0.2000

sfao                                        0.2576                                                        0.2743

sfbd                                        0.2000                                                        0.2000

si                                        0.2000                                                        0.2000

sijb                                        0.2319                                                        0.2010

sini                                        0.2000                                                        0.2000

ty                                        0.2000                                                        0.2000

uxbu                                        0.5825                                                        0.4977

 

 

Figure 1. Comparison of Solutions Obtained with CDaR Dev Multiple and CDaR Dev Single

 

_amg2527