Оптимизация портфолио Scipy с ограничениями высокого уровня - PullRequest
0 голосов
/ 28 февраля 2020

новичок в форуме, поэтому, надеюсь, этот вопрос объяснен правильно.

Я пытаюсь создать оптимизированный портфель, используя Scipy, импортировав таблицу Excel (пример ниже). Цель состоит в том, чтобы минимизировать отрицательное отношение ожидаемой доходности к фактору риска (т. Е. - ожидаемая доходность / фактор риска).

+-------------+--------------+-----------------+-------------+
| 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%. Ниже приведен пример таблицы пределов. </p>

+-------------+-----------+------------+
| 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 |
+--------------------------+-------+
...