|
13 | 13 | "\n", |
14 | 14 | "The problems become increasingly hard, ranging from CVaR efficient frontier optimization of long-only cash portfolios without transaction costs to CVaR optimization of derivatives portfolios with transaction costs, absolute leverage constraints, and risk budgets.\n", |
15 | 15 | "\n", |
16 | | - "Finally, we add non-uniform scenario probabilities to all these problems through a Sequential Entropy Pooling CVaR stress-test (see Chapter 5 in the Portfolio Construction and Risk Management book: https://antonvorobets.substack.com/p/pcrm-book).\n", |
| 16 | + "Finally, we add non-uniform scenario probabilities to all these problems through a Sequential Entropy Pooling CVaR stress-test, see Chapter 5 in the Portfolio Construction and Risk Management book: https://antonvorobets.substack.com/p/pcrm-book\n", |
17 | 17 | "\n", |
18 | | - "In total, there are 24 CVaR optimization problems that are optimized with 100 different expected return vectors. Note that for portfolios that contain derivatives Entropy Pooling is applied to compute consistent derivatives expected returns as described in: https://ssrn.com/abstract=4825945 \n", |
| 18 | + "In total, there are 24 CVaR optimization problems that are optimized with 100 different expected return vectors. Note that for portfolios that contain derivatives, Entropy Pooling is applied to compute consistent derivatives expected returns as described in: https://ssrn.com/abstract=4825945 \n", |
19 | 19 | "\n", |
20 | 20 | "You can use the results to see which CVaR optimization problems are possible to solve and in what time. You can potentially compare the speed and stability to your own CVaR optimization implementations.\n", |
21 | 21 | "\n", |
22 | | - "If you can solve all problems using a Python API significantly faster than in this Notebook, and your implementation is not publicly available, please contant us at [email protected]. We might be willing to buy your implementation.\n", |
| 22 | + "If you can solve all problems using a Python API significantly faster than in this notebook, and your implementation is not publicly available, please contant us at [email protected]. We might be willing to buy your implementation.\n", |
23 | 23 | "\n", |
24 | 24 | "The CVaR optimization problems below have been solved using the following CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz (2.30 GHz)" |
25 | 25 | ] |
|
1077 | 1077 | }, |
1078 | 1078 | { |
1079 | 1079 | "cell_type": "code", |
1080 | | - "execution_count": 10, |
| 1080 | + "execution_count": null, |
1081 | 1081 | "id": "e48928d3", |
1082 | 1082 | "metadata": {}, |
1083 | 1083 | "outputs": [], |
|
1093 | 1093 | "\n", |
1094 | 1094 | "# Constraints cash-only portfolio with transaction costs\n", |
1095 | 1095 | "pf_cash = ia.Portfolio(current_portfolio_cash, benchmark_cash)\n", |
1096 | | - "bounds_lower_cash = np.zeros(I_cash)\n", |
1097 | | - "bounds_upper_cash = np.ones(I_cash)\n", |
1098 | 1096 | "pf_cash.set_individual_bounds(bounds_lower_cash, bounds_upper_cash)\n", |
1099 | 1097 | "\n", |
1100 | 1098 | "# Constraints derivatives portfolios without transaction costs\n", |
|
1108 | 1106 | "\n", |
1109 | 1107 | "# Constraints derivatives portfolios with transaction costs\n", |
1110 | 1108 | "pf = ia.Portfolio(current_portfolio, benchmark)\n", |
1111 | | - "bounds_lower = np.zeros(I)\n", |
1112 | | - "bounds_lower[-6:] = -0.5 # Derivatives shorting bounds\n", |
1113 | | - "bounds_upper = np.ones(I)\n", |
1114 | | - "bounds_upper[-6:] = 0.5 # Derivatives upper bounds\n", |
1115 | 1109 | "pf.set_individual_bounds(bounds_lower, bounds_upper)\n", |
1116 | 1110 | "pf.set_gross_exposure_max(2) # Total derivatives leverage at most 2x" |
1117 | 1111 | ] |
|
0 commit comments