具有高水平约束的Scipy投资组合优化

时间:2020-02-28 11:21:59

标签: python pandas optimization scipy finance

是论坛的新手,所以希望这个问题能正确解释。

我正在尝试通过导入excel表(以下示例)使用Scipy创建优化的投资组合。目的是最大程度地减少预期收益与风险因素(即-预期收益/风险因素)的负比。

+-------------+--------------+-----------------+-------------+
| Asset_Class | Asset_Class2 | Expected Return | Risk Factor |
+-------------+--------------+-----------------+-------------+
| Govt        | Sov          | 0.6%            | 0.5%        |
| Govt        | Muni         | 1.3%            | 0.5%        |
| Govt        | Supra        | 1.5%            | 0.5%        |
| Corp        | HY           | 10.0%           | 20.0%       |
| Corp        | Financials   | 1.6%            | 5.0%        |
| Corp        | Industrials  | 1.3%            | 5.0%        |
| Corp        | Utilites     | 1.8%            | 5.0%        |
| Corp        | EM           | 6.0%            | 10.0%       |
| Equity      | Growth       | 8.0%            | 30.0%       |
| Equity      | Value        | 6.0%            | 20.0%       |
+-------------+--------------+-----------------+-------------+

我遇到的问题是我需要在'Asset_Class'级别对投资组合应用约束,因此,例如,应用于Sov,Muni和Supra存储桶的权重之和必须> 10%且< 100%。限制表的示例如下。

+-------------+-----------+------------+
| Asset_Class | Low_Limit | High_Limit |
+-------------+-----------+------------+
| Govt        | 10%       | 100%       |
| Corp        | 10%       | 60%        |
| Equity      | 0%        | 10%        |
+-------------+-----------+------------+

有什么想法可以在分组级别上限制权重? 感谢您的帮助!

编辑:预期输出将是一个按“ Asset_Class2”(或“ Asset_Class”)分组的数据框,例如下面的示例,同时还会输出预期收益和风险。

+--------------+--------+
| Asset_Class2 | Weight |
+--------------+--------+
| Sov          | 0.2    |
| Supra        | 0.1    |
| HY           | 0.15   |
| Financials   | 0.2    |
| Industrials  | 0.015  |
| Utilities    | 0.1    |
| EM           | 0.185  |
| Growth       | 0.02   |
| Value        | 0.03   |
+--------------+--------+

+--------------------------+-------+
| Weighted Expected Return | 0.041 |
| Weighted Risk Factor     | 0.112 |
+--------------------------+-------+

0 个答案:

没有答案