Portfolios and linear programming 5
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
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