Case Study: Portfolio Replication with Cardinality and Buyin Constraints

Back to main page

Case study background and problem formulations

Instructions for optimization with PSG Run-File, PSG MATLAB Toolbox, PSG MATLAB Subroutines and PSG R.

Sources of Data
  • Mezali, H. and Beasley, J.E. (2014). Index Tracking with Fixed and Variable Transaction Costs.
    Optimization Letters. 8:61-80.
  • OR-library. URL http://people.brunel.ac.uk/∼mastjjb/jeb/info.html Datasets: indtrack1, indrtack2, …, indtrack5
  • PROBLEM 1: Index Tracking, Minimizing Max Risk

    Minimize Max_Risk (minimizing the maximum absolute difference between tracking portfolio and index returns)
    subject to
    Cardn_pos <= Const1 (constraint on the number of assets in the new tracking portfolio)
    Buyin_pos <= 0 (constraint prohibiting small positions)
    Linear + trcost<= Const2 (bound on sum of “new tracking portfolio value” + “transaction cost” <= “current tracking portfolio value”)
    trcost <= Const3 (upper bound on transaction cost)
    – trcost + Const4*Polynom_abs + Const5*(Cardn_pos+Cardn_neg) < = 0 (constraint defines variable and fixed transaction costs)
    Box constraints (bounds on variables)
    ——————————————————————–
    Max_Risk = Maximum Risk for Loss
    Cardn_pos = Cardinality Positive
    Byin_pos = Buy-in Positive
    Polynom_abs = Polynomial Absolute Function = weighted sum of absolute values of positions
    Box constraints = constraints on individual decision variables
    ——————————————————————–

    Problem “problem_fc_indtrack1_max_0025”

    # of Variables # of Scenarios Objective Value Solving Time, PC 3.14GHz (sec)
    Dataset1 32 145 0.037679 0.04
    Environments
    Run-File Problem Statement Data Solution
    Matlab Toolbox Data
    Matlab Subroutines Matlab Code Data
    R R Code Data
    Download other data sets in Run-File Environment.
    Instructions for importing problems from Run-File to PSG MATLAB.

    Problem Datasets # of Variables # of Scenarios Objective Value Solving Time (sec), PC 2.66GHz
    Dataset2 Problem Statement Data Solution 32 145 0.026224 0.15
    Dataset3 Problem Statement Data Solution 32 145 0.0212003 0.05
    Dataset4 Problem Statement Data Solution 32 145 0.0205298 1.09
    Dataset5 Problem Statement Data Solution 86 145 0.03192982 1.09
    Dataset6 Problem Statement Data Solution 86 145 0.0275899 1.5
    Dataset7 Problem Statement Data Solution 86 145 0.01864025 0.62
    Dataset8 Problem Statement Data Solution 86 145 0.01957557 0.41
    Dataset9 Problem Statement Data Solution 90 145 0.030248 1.89
    Dataset10 Problem Statement Data Solution 90 145 0.024271042 4.94

    PROBLEM 2: Index Tracking, Minimizing Mean Absolute Deviation

    Minimize Meanabs (minimizing the average of the absolute differences between tracking portfolio return and index return)
    subject to
    Cardn_pos <= Const1 (constraint on the number of assets in the new tracking portfolio)
    Buyin_pos <= 0 (constraint prohibiting small positions)
    Linear + trcost<= Const2 (bound on sum of “new tracking portfolio value” + “transaction cost” <= “current tracking portfolio value”)
    trcost <= Const3 (upper bound on transaction cost)
    – trcost + Const4*Polynom_abs + Const5*(Cardn_pos+Cardn_neg) < = 0 (constraint defines variable and fixed transaction costs)
    Box constraints (bounds on variables)

    ——————————————————————–
    Meanabs = Mean Absolute Error
    Cardn_pos = Cardinality Positive
    Byin_pos = Buyin Positive
    Polynom_abs = Polynomial Absolute Function, which is the weighted sum of absolute values
    Box constraints = constraints on individual decision variables
    ——————————————————————–

    Problem “problem_indtrack_avg”

    # of Variables # of Scenarios Objective Value Solving Time, PC 3.14GHz (sec)
    Dataset1 32 145 0.026434 0.16
    Environments
    Run-File Problem Statement Data Solution
    Matlab Toolbox Data
    Matlab Subroutines Matlab Code Data
    R R Code Data

    Download other data sets in Run-File Environment.
    Instructions for importing problems from Run-File to PSG MATLAB.

    Problem Datasets # of Variables # of Scenarios Objective Value Solving Time (sec), PC 2.66GHz
    Dataset2 Problem Statement Data Solution 32 145 0.021158 0.13
    Dataset3 Problem Statement Data Solution 32 145 0.016447 0.17
    Dataset4 Problem Statement Data Solution 32 145 0.041988 2.34
    Dataset5 Problem Statement Data Solution 86 145 0.026179 2.73
    Dataset6 Problem Statement Data Solution 86 145 0.01914 2.70
    Dataset7 Problem Statement Data Solution 86 145 0.017013 2.34
    Dataset8 Problem Statement Data Solution 86 145 0.028690 2.01
    Dataset9 Problem Statement Data Solution 90 145 0.021414 1.74
    Dataset10 Problem Statement Data Solution 90 145 0.017894 6.11

    PROBLEM 3: Index Tracking, Minimizing Max Risk (MIP Formulation)

    The same problem formulation as Problem 1, but with options “Linearize=1, MIP=1”. Problem is solved as a Mixed Integer Linear Programming (MILP) problem by solver CARGRB “in one shot”.
    Minimize Max_Risk (minimizing the maximum absolute difference between tracking portfolio return and index return)
    subject to
    Cardn_pos <= Const1 (constraint on the number of assets in the new tracking portfolio)
    Buyin_pos <= 0 (constraint prohibiting small positions)
    Linear + trcost<= Const2 (bound on sum of “new tracking portfolio value” + “transaction cost” <= “current tracking portfolio value”)
    trcost <= Const3 (upper bound on transaction cost)
    – trcost + Const4*Polynom_abs + Const5*(Cardn_pos+Cardn_neg) < = 0 (constraint defines variable and fixed transaction costs)
    Box constraints (bounds on variables)

    ——————————————————————–
    Max_Risk = Maximum Risk for Loss
    Cardn_pos = Cardinality Positive
    Byin_pos = Buyin Positive
    Polynom_abs = Polynomial Absolute Function, which is the weighted sum of absolute values
    Box constraints = constraints on individual decision variables
    ——————————————————————–
    Problem “problem_FC_indtrack_max”

    # of Variables # of Scenarios Objective Value Solving Time, PC 3.14GHz (sec)
    Dataset1 32 145 0.009309 0.04
    Environments
    Run-File Problem Statement Data Solution
    Matlab Toolbox Data
    Matlab Subroutines Matlab Code Data
    R R Code Data

    Download other data sets in Run-File Environment.
    Instructions for importing problems from Run-File to PSG MATLAB.

    Problem Datasets # of Variables # of Scenarios Objective Value Solving Time (sec), PC 2.66GHz
    Dataset2 Problem Statement Data Solution 32 145 0.005673 0.09
    Dataset3 Problem Statement Data Solution 32 145 0.003917 0.07
    Dataset4 Problem Statement Data Solution 32 145 0.010724 0.10
    Dataset5 Problem Statement Data Solution 86 145 0.008652 0.06
    Dataset6 Problem Statement Data Solution 86 145 0.0059 0.08
    Dataset7 Problem Statement Data Solution 86 145 0.0048 0.28
    Dataset8 Problem Statement Data Solution 86 145 0.008948 0.07
    Dataset9 Problem Statement Data Solution 90 145 0.00754 0.08
    Dataset10 Problem Statement Data Solution 90 145 0.006416 0.06

    PROBLEM 4: Index Tracking, Minimizing Mean Absolute Deviation (MIP Formulation)

    The same problem formulation as Problem 2, but with options “Linearize=1, MIP=1”. Problem is solved as a Mixed Integer Linear Programming (MILP) problem by solver CARGRB “in one shot”.
    Minimize Meanabs (minimizing the average of the absolute differences between tracking portfolio return and index return)
    subject to
    Cardn_pos <= Const1 (constraint on the number of assets in the new tracking portfolio)
    Buyin_pos <= 0 (constraint prohibiting small positions)
    Linear + trcost<= Const2 (bound on sum of “new tracking portfolio value” + “transaction cost” <= “current tracking portfolio value”)
    trcost <= Const3 (upper bound on transaction cost)
    – trcost + Const4*Polynom_abs + Const5*(Cardn_pos+Cardn_neg) < = 0 (constraint defines variable and fixed transaction costs)
    Box constraints (bounds on variables)

    ——————————————————————–
    Meanabs = Mean Absolute Error
    Cardn_pos = Cardinality Positive
    Byin_pos = Buyin Positive
    Polynom_abs = Polynomial Absolute Function, which is the weighted sum of absolute values
    Box constraints = constraints on individual decision variables
    ——————————————————————–Problem “problem_FC_indtrack_avg”

    # of Variables # of Scenarios Objective Value Solving Time, PC 3.14GHz (sec)
    Dataset1 32 145 0.0086524 0.06
    Environments
    Run-File Problem Statement Data Solution
    Matlab Toolbox Data
    Matlab Subroutines Matlab Code Data
    R R Code Data

    Download other datasets in Run-File Environment.
    Instructions for importing problems from Run-File to PSG MATLAB.

    Problem Datasets # of Variables # of Scenarios Objective Value Solving Time (sec), PC 2.66GHz
    Dataset2 Problem Statement Data Solution 32 145 0.0086395 0.09
    Dataset3 Problem Statement Data Solution 32 145 0.0086396 0.07
    Dataset4 Problem Statement Data Solution 32 145 0.011104 1.70
    Dataset5 Problem Statement Data Solution 86 145 0.009091 0.43
    Dataset6 Problem Statement Data Solution 86 145 0.008142 0.42
    Dataset7 Problem Statement Data Solution 86 145 0.007221 0.21
    Dataset8 Problem Statement Data Solution 86 145 0.008620 0.24
    Dataset9 Problem Statement Data Solution 90 145 0.007671 0.32
    Dataset10 Problem Statement Data Solution 90 145 0.006068 1.87

    CASE STUDY SUMMARY

    All PROBLEMS

    Index tracking is a portfolio optimization problem which generates return of an index with a tracking portfolio. The tracking portfolio contains a small number of securities.Problem 1 minimizes maximum absolute difference between return of the tracking portfolio and return of the index. The problem is formulated with continuous variables by using Portfolio Safeguard (PSG) functions “cardn_pos” and “buyin_pos”. PSG functions “polynom_abs”, “cardn_pos”, and “cardn_neg” are used for calculation transaction costs.Problem 2 is similar to the Problem 1, but it minimizes the mean absolute difference between return of the tracking portfolio and return of the index.Problem 3 solves Problem 1 by using Boolean variables.Problem 4 solves Problem 2 by using Boolean variables.A number of papers relating to index tracking have been discussed in Canakgoz and Beasley 2009 and Beasley et al. 2003. The case study solves a set of instances from the OR-library (Basley 1990) with parameters considered in Beasley et al. 2003 and Canakgoz et al. 2009. The problem statements and the setting of the experiments closely follow the paper by Mezali and Beasley (2012). However the problem statements were formulated with PSG nonlinear functions without discrete variables (which leads to a simple programming of optimization problems).

    References

    • Beasley J E (1990). OR-Library: distributing test problems by electronic mail, Journal of the Operational Research Society, 41(11): 1069–1072. ( http://people.brunel.ac.uk/∼mastjjb/jeb/info.html)
    • Beasley J E, Meade N and Chang T-J (2003). An evolutionary heuristic for the index tracking problem, European Journal of Operational Research, 148(3), 621–643.
    • Canakgoz N A and Beasley J E (2009). Mixed-integer programming approaches for index tracking and enhanced indexation, European Journal of Operational Research, 196(1), 384-399.
    • Mezali, H. and Beasley, J.E. (2012). Index Tracking with Fixed and Variable Transaction Costs. Optimization Letters. Submitted for publication.