Реализация вот этой идеи: smart-lab.ru/blog/1190346.php
Цель: рассчитать оптимальные доли акций и облигаций в портфеле на основе макроэкомических данных (входных параметров), в применении к турецкой экономике.
Входные параметры (месячные данные):
- LEI (Leading Economic Indicator)
- Наклон кривой доходности (конкретно, разность доходностей между 10-летними и 2-летними облигациями)
- Процентная ставка
- Курс доллара к лире, скользящая трехмесячная доходность
- BIST (индекс турецкой биржи), скользящая трехмесячная доходность
- BIST, скользящая трехмесячная волатильность
Выходные данные:
- Вес индекса турецкой биржи BIST в портфеле
- Вес индекса краткосрочных облигаций (TKISA) в портфеле
- Вес индекса долгосрочных облигаций (TUZUN) в портфеле
Буду использовать простую модель:

x — вектор входных параметров (6 штук), нормализирую их перед использованием в модели (посчитаю z-score)
w — веса в портфеле (3 штуки). Softmax функция нужна, чтобы загнать веса в интервал [0,1].
Надо найти матрицу W и вектор b.
Найду их, оптимизируя показатель Сортино за период 2010-2020 (тренировочный период)
Потому проверю эти коэффициенты на периоде 2021-2025 (тестовый период).
=== Вот решение и статистика за тренировочный период 2010-2020 ===
Коэффициенты:
| |
TUZUN |
TKISA |
XU100 |
| LEI |
0.1333 |
-0.5713 |
0.4345 |
| Slope_2y10y |
0.2613 |
-0.2301 |
0.0533 |
| TRINT |
0.6164 |
-0.6816 |
0.0447 |
| USDTRY_3MRet |
-1.2266 |
0.3303 |
0.8089 |
| XU100_3MRet |
-1.4484 |
-0.4009 |
1.9253 |
| XU100_3MVol |
-0.5698 |
1.1607 |
-0.5406 |
| bias_b |
-1.9616 |
2.5757 |
-0.7231 |


| |
CAGR |
Ann. Vol |
Ann. Sharpe (rf=0) |
Ann. Sortino (rf=0) |
Max DD |
| Strategy |
0.234 |
0.093 |
2.309 |
46.459 |
-0.012 |
| BIST |
0.079 |
0.235 |
0.438 |
0.82 |
-0.31 |
Сильно дёрганная реалокация портфеля, но в остальном все выглядит прилично, хорошие показатели.
=== Теперь применим это решение для тестового периода 2021-2025 ===


| |
CAGR |
Ann. Vol |
Ann. Sharpe (rf=0) |
Ann. Sortino (rf=0) |
Max DD |
| Strategy |
0.667 |
0.213 |
2.629 |
14.641 |
-0.032 |
| BIST |
0.502 |
0.317 |
1.518 |
3.538 |
-0.204 |
Хм, это выглядит очень хорошо по всем параметрам! Я удивлён. Даже слишком хорошо, чтобы быть правдой.
Что нужно сделать/проверить:
- Не закрался ли look ahead bias (и вообще перепроверить все расчёты и python-код).
- Не попадает ли оптимизатор в локальные максимумы?
- Слишком дерганное распределение весов по времени — не ввести ли регуляризацию?
- Провести forward тестирование и исследовать устойчивость коэффициентов во времени.
- Исследовать, какие из параметров имеют больший вклад, и попробовать уменьшить их число.
- Изучить матрицу коэффициентов на предмет того, имеют ли эти коэффициенты экономический смысл.
Rustem32, да, однозначно. Это очень простая линейная модель и у нее должна быть прозрачная интерпретация.
Например, вот эта строчка коэффициентов:
Она говорит, что при увеличении волатильности биржи, нужно выдергивать деньги из биржи и из долгосрочных облигаций, и вкладывать в краткосрочные. Не совсем понятно, почему из долгосрочных нужно выдергивать, но с биржей разумно.XU100_3MVol -0.5698 1.1607 -0.5406
Или вот это:
Slope_2y10y 0.2613 -0.2301 0.0533
При увеличении разрыва между доходностью долгосрочных и краткосрочных облигаций нужно перекладывать из краткосрочных в долгосрочные. Тоже вполне разумно.
в кои веки интересны пст на смартлабе...
успехов
Yakovlev Aleksey, спасибо за комментарий!
Понимаю это опасение. А что, если оставить только 2 коэффициента, по аналогии с вашей моделью: вход — это наклон кривой доходности, а выход — это процент биржи в портфеле? Или еще проще, не процент, а 0% или 100%, в зависимости от наклона? Модель с двумя параметрами вряд ли склонна к подгонке.
Шаг оптимизации по какому-то показателю доходность/риск мне кажется важным элементом, у вас его нет. Аналогия с алготрейдингом слишком привлекательная, не могу от нее отказаться.
А я его уже учёл:
4. Курс доллара к лире, скользящая трехмесячная доходность
Под доходностью имеется в виду относительное приращение курса. Не беру сам курс — неправильно было бы скармливать модели какие-то абсолютные величины; нужно какое-то нормирование, чтобы она имела смысл на разных периодах.