Jump to content
  • entries
    7
  • comments
    9
  • views
    6,982

Балансировка портфеля МТС

Hohla

347 views

Предлагаю вашему вниманию инструмент для оптимизации рисков портфеля механических торговых систем (ТС). Равномерное распределение рисков ТС в первую очередь необходимо для диверсификации портфеля, уменьшается взаимная корреляция ТС, повышая стабильность счета. В качестве критерия оптимизации можно взять любую из характеристик портфеля, например, фактор возврата. Его максимизация осуществляется подбором вектора рисков систем. Для двух-трех систем данную операцию можно выполнить, оценивая их графики на глаз.  Но, когда дело касается десятков ТС, (в моем арсенале их три дюжины), распределить риски вручную не представляется возможным, т.к. характеристики систем сильно отличаются, а многие коррелируют между собой. Вот графики некоторых из них.

FullPer.png.19845563139e66927b5af28d38176233.png

Алгоритм поиска самих ТС выходит за рамки данной статьи, скажу лишь, что оптимизация систем проводилась на истории 2008-2018гг, после чего вручную отбирались наиболее перспективные. Далее на периодах 2004-2008 … 2018-2019гг системы подвергались слепому тестированию, после которого большая часть снова отсеивалась. В среднем из 100К до счета доходит одна.

 

Немного о с процессе оптимизации рисков. В начале для экспорта истории сделок в МетаТрейдере потребуется функция MATLAB_LOG(), которую логично запускать в обработчике событий OnTester(). В результате ее выполнения формируется файл MatLabTest.csv, содержащий результаты (сделка/дата) всех протестированных в терминале систем.

Далее переходим к пакету MatLab. Все используемые скрипты прилагаются, код содержит многочисленные комментарии, так что при желании разобраться будет не сложно. 

 

Переходим к программе Optimisation.m. В качестве основной функции поиска используется встроенная в MatLab функция  patternsearch(). Возможные значения рисков ограничим диапазоном 0.1...3%. В результате получаем графики портфелей для разных критериев оптимизации (RF, IRF). Для сравнения приведен график портфеля, в котором риск каждой из систем равен R1=1%. Очевидно, что в данном случае оптимизация не дала ощутимого преимущества, то же самое говорят нам цифры:

Opt IRF:               RF=116 iRF=2190 MOSD=0.41 Profit=818   MaxDD=7

Opt RF:                RF=171 iRF=1519 MOSD=0.39 Profit=334   MaxDD=2

Opt R1:                 RF=118 iRF=1511 MOSD=0.38 Profit=1987 MaxDD=17

RF – фактор возврата.

iRF – модифицированный фактор возврата собственной разработки. В отличии от общеизвестного, в расчетах вместо максимальной просадки используется суммарная площадь всех просадок. Как мне кажется, он демонстрирует показатели ТС более полно.

MOSD – отношение мат. ожидания к стандартному отклонению. 

754771111_FullPortfoliosR1IRF.png.0db214e385fbc91a78896d536b9ca6b2.png

Ярко выражен изменяющийся угол наклона графиков. На участках слепого тестирования он более пологий. На мой взгляд корректнее оценивать характеристики ТС как раз на этих периодах исключая периоды оптимизации (подгонки под кривую). Ниже приведены аналогичные графики для тех же семи систем на периодах 2004-2008 … 2018-2019.

 CutPer.png.53fbf28181ba0652384d0edba9c6450c.png

Горизонтальный участок соответствует пропущенным данным участка оптимизации. Графики портфелей для тех же критериев (RF, IRF). Для наглядности они нормализованы к единице.

786967250_CutPortfoliosRFIRF.png.54704e5b67c12b6ffb43b8fdbcc645b0.png

И сравнение портфелей с одиночными (R1) и оптимизированными рисками (IRF).

1960956133_CutPortfoliosR1IRF.png.41a64504b729b897900648303e05f159.png

В данном случае кривая портфеля для рисков, оптимизированных по параметру IRF более плавная, его статистические показатели так же несколько эффективнее.

Opt IRF:               RF=27 iRF=803 MOSD=0.27 Profit=139 MaxDD=5

Opt RF:                RF=36 iRF=577 MOSD=0.26 Profit=48   MaxDD=1

Opt R1:                RF=16 iRF=360 MOSD=0.21 Profit=204 MaxDD=13

По результатам работы программы Optimisation.m формируется файл NewRsk.xlsx следующего вида:

Magic

csv_Risk

RF_Risk

iRF_Risk

1123362

0.5

0.27

0.61

1372348

0.5

0.23

0.1

3110243

0.5

0.12

0.1

6081387

3

0.63

1.32

………………………………………………………………

453540751

0.5

0.1

0.76

511608174

0.5

0.1

0.1

931297936

0.5

0.1

1.6

RF

118

171

116

IRF

1467

1519

2190

MOSD

0.383

0.392

0.405

 

Где Magic – столбец идентификаторов ТС, далее следуют столбцы с векторами рисков для каждого из оптимизируемых параметров и сами показатели портфеля. Осталось только вставить полученные результаты в настройки ТС портфеля.

Буду рад, если кому-то пригодятся мои наработки.

Успехов…

 

FullPortfolios RF,IRF.png

files.rar



2 Comments


Recommended Comments

solandr

Posted

Вопрос по модифицированному фактору возврата. Может быть данный показатель пропорционален фактору возврата, если взять просто среднее значение просадки за все время, когда она имела место быть?

Share this comment


Link to comment
Hohla

Posted

Суть моего фактора возврата в том, что он учитывает все просадки, а не одну. Грубый пример: у двух систем с одинаковым фактором возврата одинаковая максимальная просадка, но у первой она единственная а у второй, помимо максимальной, есть еще пять менее значительных. Модифицированный фактор возврата второй системы будет соответственно меньше.

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×