Portfolios and linear programming 5

From UBC Wiki

Toy Model

Virtual Background Yilin, Emily, Justin, and Kihye have $100,000 to invest in some stocks A, B, and C. The table below shows the expected risks and expected return of our options:

Stock Name Return (Annual) (%) Risk Factor
A 5 1
B 10 4
C 20 12

After some consideration, we decided to be mild aggressive in terms of risk. We assumed the average risk factor on investments <= 7. The average risk formula is given by Vanderbei’s textbook: (r*x)/(∑xi) <= 7) Let x1, x2, x3 be the amount of money used to invest in stock A, B, and C. Let r be the vector of expected risk for stocks.

Transfer to LP format (Primal):

Maximize z= 0.05x1 + 0.1x2 + 0.2x3

St.

x1 + x2 + x3 < = 100,000

-6x1 – 3x2 + 5x3 < = 0

X1, x2, x3 > = 0 Note: the second constraint is just the simplification of the risk constraints on average risk (r*x)/(∑xi) <= 7).

Transfer to LP format (Dual):

Minimize w= 100,000y1 St.

y1 – 6y2 > = 0.05

y1 – 3y2 >= 0.10

y1 + 5y2 > = 0.20

Y1, y2 > = 0

Solution

Optimal Value: $13750 Solutions: x* = (0, 62500, 37500)

y* = (0.1375, 0.0125)

For detailed steps, please refer to the hand-writing solutions.

Explanations of the Results

Our optimal solution implies that, if we invest $62,500 in B and $37,500 in C, our profit will be $13,750. Our profit is the maximum amount that we can achieve under current condition (available cash and risk level preference). Increasing the amount of cash or accepting more risk will, of course, increase our profit. Our dual solution implies how much (at most) does it make sense to pay for a little bit more money resources, and risks.

y1* = 0.1375 implies we are only willing to invest in an additional dollar if and only if we can increase our output by 13.75%.

y2* = 0.0125 implies we are only willing to take 1 unit increase in risk if and only if we can increase our output by 1.25%.

Actual Portfolio

Objective and Assumption

Our investment team have $1,000,000 to invest in ETFs that are listed on

TD bank ETF.

Our goal is to maximize the yearly profit as much as possible while controlling the average risk factor smaller or equal to 9 and 13 in two rounds. Assume that the currency exchange rate is stable and the evaluation gained from the website is accurate.

Data Selection Methods

After ranking by "Morning Star Rating" from top to bottom, we selected the top 30 ETFs and

then eliminate the ones with negative yearly return. We label the rest ETFs as x1 to x16.

Information on those ETFs is shown in table below.

Table 1: ETFs names, returns, risks, and profits

Asset Name YTD Invested Amount(Dollars) YTD 1-YR Risk Factor Profit gained*100
AdvisorShares Madrona Domestic ETF 2.81 x1 2.81% 9.49 2.81x1
AdvisorShares TrimTabs Float Shrink ETF 4.66 x2 4.66% 9.91 4.66x2
AlphaClone Alternative Alpha ETF 7.83 x3 7.83% 12.29 7.83x3
Amundi ETF MSCI USA EUR A/I 2.34 x4 2.34% 8.63 2.34x14
Amundi ETF MSCI USA EUR A/I EUR 2.09 x5 2.09% 8.83 2.09x15
Amundi ETF MSCI USA EUR A/I EUR 2.28 x6 2.28% 8.53 2.28x16
Amundi ETF MSCI USA EUR A/I GBP 1.51 x7 1.51% 8.67 1.51x17
Amundi ETF MSCI World ex EMU A/I 4.21 x8 4.21% 8.22 4.21x22
Amundi ETF MSCI World ex EMU A/I EUR 4.2 x9 4.2% 8.66 4.2x23
Amundi ETF MSCI World ex EMU A/I EUR 4.02 x10 4.02% 7.95 4.02x24
Amundi ETF MSCI World ex Europe EUR A/I 3.52 x11 3.52% 8.31 3.52x25
Amundi ETF MSCI World ex Europe EUR A/I EUR 3.3 x12 3.3% 8.18 3.3x26
Amundi ETF MSCI World ex EuropeEUR A/I EUR 4.16 x13 4.16% 9.27 4.16x27
Amundi ETF MSCI World ex Europe USD A/I 3.36 x14 3.36% 7.66 3.36x28
Amundi ETF MSCI World EUR A/I 4.77 x15 4.77% 8.42 4.77x29
Amundi ETF MSCI World EUR A/I EUR 4.76 x16 4.76% 8.62 4.76x30



Conservative Round 1: Setting average risk factor < = 9

Objective function

max 0.0281x1 + 0.0466x2 + 0.0783x3 + 0.0234x4 + 0.0209x5 + 0.0228x6 + 0.0151x7 + 0.0421x8

+ 0.042x9 + 0.0402x10 + 0.0352x11 + 0.033x12 + 0.0416x13 + 0.0336x14 + 0.0477x15 +

0.0476x16

Constraints

x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 < = 1000000

0.49x1+ 0.71x2+ 3.29x3 - 0.37x4 - 0.17x5 - 0.47x6 - 0.33x7 - 0.78x8 -0.34x9 -0.05x10 -0.29x11 -

0.82x12+ 0.27x13 -1.34x14 - 0.58x15 - 0.38x16 < = 0

If denoting the risk factor of all the ETFs chosen as r, and set the constraint of the average risk factor as 9, then the second constraint above is just the simplification of (Σ r*xi)/(Σ xi) < = 9. (Multiply both sides by (Σ xi), and then move 9*(Σ xi) to the LHS.)

Summarized Result Of Round 1 Table 2: Round 1 Summarized Results

Optimal Profits (dollars) 52286.05
Name of ETFs Amount Invested (dollars)
AlphaClone Alternative Alpha ETF (x3) 149870.8
Amundi ETF MSCI World EUR A/I (x15) 850129.2


Bold Round 2—allow average risk factor to go up to 13

Objective function

max 0.0281x1 + 0.0466x2 + 0.0783x3 + 0.0234x4 + 0.0209x5 + 0.0228x6 + 0.0151x7 + 0.0421x8

+ 0.042x9 + 0.0402x10 + 0.0352x11 + 0.033x12 + 0.0416x13 + 0.0336x14 + 0.0477x15 +

0.0476x16

Constraints

x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 < = 1000000

-3.51x1 -3.29x2 - 0.71x3 - 4.37x4 - 4.17x5 - 4.47x6 - 4.33x7 - 4.78x8 -4.34x9 -4.05x10 -4.29x11 -

4.82x12 -3.73x13 -5.34x14 - 4.58x15 - 4.38x16 < = 0


Round 2 Summarized Results Table 3: Round 2 Summarized Results

Optimal Profits (Dollars) 78300.0
Name of ETF(s) Amount Invested(dollars)
AlphaClone Alternative Alpha ETF (x3) 1000000


Conclusion:

Invest in 85% in x3 and 15% in x15 if we want to be conservative (let risk bound <= 9); invest 100% in x15 if we want to be bold (let risk bound <= 13)

Detailed Results From LINGO Round 1 Results

Global optimal solution found.
 Objective value:                              52286.05
 Infeasibilities:                              0.000000
 Total solver iterations:                             2
 Model Class:                                        LP
 Total variables:                     16
 Nonlinear variables:                0
 Integer variables:                    0
 Total constraints:                    3
 Nonlinear constraints:             0
 Total nonzeros:                      48
 Nonlinear nonzeros:                   0
                               Variable           Value        Reduced Cost
                                     X1        0.000000           0.2806047E-01
                                     X2        0.000000           0.1130000E-01
                                     X3        149870.8            0.000000
                                     X4        0.000000           0.2596047E-01
                                     X5        0.000000           0.3004186E-01
                                     X6        0.000000           0.2576977E-01
                                     X7        0.000000           0.3457674E-01
                                     X8        0.000000           0.4018605E-02
                                     X9        0.000000           0.7597674E-02
                                    X10        0.000000           0.1169070E-01
                                    X11        0.000000           0.1479302E-01
                                    X12        0.000000           0.1280233E-01
                                    X13        0.000000           0.1282093E-01
                                    X14        0.000000           0.8090698E-02
                                    X15        850129.2            0.000000
                                    X16        0.000000           0.1681395E-02
                                    Row    Slack or Surplus      Dual Price
                                      1        52286.05            1.000000
                                      2        0.000000           0.5228605E-01
                                      3        0.000000           0.7906977E-02

Round2 Results

 Global optimal solution found.
 Objective value:                              78300.00
 Infeasibilities:                              0.000000
 Total solver iterations:                             0
 Model Class:                                        LP
 Total variables:                     16
 Nonlinear variables:                0
 Integer variables:                    0
 Total constraints:                    3
 Nonlinear constraints:             0
 Total nonzeros:                      48
 Nonlinear nonzeros:                0
                               Variable           Value        Reduced Cost
                                     X1        0.000000           0.5020000E-01
                                     X2        0.000000           0.3170000E-01
                                     X3        1000000.            0.000000
                                     X4        0.000000           0.5490000E-01
                                     X5        0.000000           0.5740000E-01
                                     X6        0.000000           0.5550000E-01
                                     X7        0.000000           0.6320000E-01
                                     X8        0.000000           0.3620000E-01
                                     X9        0.000000           0.3630000E-01
                                    X10        0.000000           0.3810000E-01
                                    X11        0.000000           0.4310000E-01
                                    X12        0.000000           0.4530000E-01
                                    X13        0.000000           0.3670000E-01
                                    X14        0.000000           0.4470000E-01
                                    X15        0.000000           0.3060000E-01
                                    X16        0.000000           0.3070000E-01
                                    Row    Slack or Surplus      Dual Price
                                      1        78300.00            1.000000
                                      2        0.000000           0.7830000E-01
                                      3        710000.0            0.000000

Reference:

1. Vanderbei, Robert J. Linear Programming Foundations and Extensions. 3rd ed. New York: Springer, 2008.

2. "LINDO™ Software for Integer Programming, Linear Programming, Nonlinear Programming, Stochastic Programming, Global Optimization." LINDO™ Software for Integer Programming, Linear Programming, Nonlinear Programming, Stochastic Programming, Global Optimization. Accessed June 17, 2015.

3. "ETF Quickrank." ETF Quickrank. Accessed June 17, 2015.


Additional Notes: Coding Example in Round 1

Max 2.81x1 + 4.66x2 + 7.83x3 + 2.34x14 + 2.09x15 + 2.28x16 + 1.51x17 + 4.21x22 + 4.2x23 + 4.02x24 + 3.52x25 + 3.3x26 + 4.16x27 + 3.36x28 + 4.77x29 + 4.76x30 st x1 + x2 + x3 + x14 + x15 + x16 + x17 + x22 + x23 + x24 + x25 + x26 + x27 + x28 + x29 + x30 < = 10000 0.49x1+ 0.71x2+ 3.29x3 - 0.37x14 - 0.17x15 - 0.47x16 - 0.33x17 - 0.78x22 -0.34x23 -0.05x24 -0.29x25 -0.82x26+ 0.27x27 -1.34x28 - 0.58x29 - 0.38x30 < = 0