Как найти не коррелирующие между собой сеты настроек?

 
Здравствуйте!подскажите пожалуйста ,есть ли способ среди множества параметров при оптимизации найти такие,которые между собой при одновременном использовании не увеличивают просадку..
К примеру мы имеем разные настройки у одной настройки 1000 сделок и 17% просадки,а у другой 1500 сделок и 20% просадки(и если они практически полностью коррелируют между собой то просадка будет 30-37%).

Можно ли как-то по быстрому это проверить не проводя тесты и не сводя потом эти тесты в репорт менеджере?:).имея тысячи сетов очень много времени уйдёт сводить каждый друг с другом)..может есть какая-то програмка?:)
 
Elena Sokolova:

Сложный путь. Более реалистичный - использовать несколько валют, минимально коррелирующих между собой. Корреляцию валют вычислить легко, есть в кодобазе несколько программ. Просадки в среднем заметно уменьшатся, но, к сожалению, при важных событиях большинство валют могут двигаться одновременно и быстро.

 
Если все отчеты уже построены, то приблизительно (просадка по балансу, а не по эквити), можно найти портфель настроек методами линейной алгебры, по аналогии с тем, как Portfolio Optimizer делает для котировок. Вместо котировок нужно будет подсовывать в линейный "решатель" (alglib) текущие балансы в каждый временной отсчет по каждому набору настроек (предположительно, если использовать модель Trend по этому балансу, или альтернативно Fitting по просадке) . По идее, система с тысячами линейных уравнений должна посчитаться относительно быстро. Я не в курсе, каким образом "репорт менеджер" может сводить все попарные комбинации настроек, а вручную это делать - дохлый номер.
Portfolio Modeller & Manager
Portfolio Modeller & Manager
  • www.mql5.com
Индикатор Portfolio Modeller позволяет создавать портфели из нескольких торговых инструментов различными способами. График портфеля представляет собой суммарное изменение стоимости позиций группы инструментов как единого целого (синтетического инструмента, корзины). Портфель может содержать в себе как длинные, так и короткие позиции различного...
 

Нужны все сделки по каждому проходу оптимизатора. А в отчете оптимизации их нет. Получается, что после оптимизации надо еще отдельные тестирования провести (что не вызывает интереса). 

Исходя их этого получается примерно такой план решения задачи:

1. Требуется доработать эксперта, чтобы при оптимизации, после каждого прохода он сохранял список сделок и сет файл (или в одном файла или как-то связать отдельные файлы, не важно). Это можно сделать написанием библиотеки, а ее потом парой строчек подключать к любому советнику.

2. Имея много-много файлов со сделками, остается при помощи скрипта перебирать все возможные комбинации. Для каждой комбинации - собрать все сделки в один список, отсортировать по времени, посчитать просадку и пр. показатели, если надо.

В общем, не очень уж и сложная работа и не очень большая.  

 

Для начала надо все привести к одному размеру - т.е. зафиксировать баланс/эквити на конец дня для каждой стратегии.

Потом можно объединить стратегии в группы, допустим с помощью методов кластеризации. Упростить задачу можно за счет трансформации баланса в его изменение в виде +1 - прирост за день, -1 убыток, 0 без изменения.

 
  1. Взять только прибыльные проходы.
  2. Все проходы представить, как вектор значений эквити в одни и те же моменты времени. Тем самым получив набор векторов одинаковой длины.
  3. Логарифмировать вектора и нормализовать.
  4. Детрендировать каждый. Например, отнять ЛР.
  5. Решить задачу из линейной алгербы, когда имеется множество векторов. И надо каждому вектору найти оптимальный положительный вес (их сумма равна единице), чтобы среднее значение элемента средневзвешенной суммы было минимально.
  6. Вектора с самыми большими весами - оптимальный портфель.
На Питоне такая задача (п.3-5) обязана решаться в несколько строк. MQL нужен только для п.1-2. При этом для получения вектора эквити не нужно иметь исходник советника. Закрытый EX5 вполне подходит.


Посильная задача для Маркета.


ЗЫ Если разрешить весам быть отрицательными. И при этом сумма их абсолютных значений равна единица. Тогда вектора с самыми большими абсолютными значениями будут указывать на самые коррелируемые в наборе.

 
fxsaber:
  1. Взять только прибыльные проходы.
  2. Все проходы представить, как вектор значений эквити в одни и те же моменты времени. Тем самым получив набор векторов одинаковой длины.
  3. Логарифмировать вектора и нормализовать.
  4. Детрендировать каждый. Например, отнять ЛР.
  5. Решить задачу из линейной алгербы, когда имеется множество векторов. И надо каждому вектору найти оптимальный положительный вес (их сумма равна единице), чтобы среднее значение элемента средневзвешенной суммы было минимально.
  6. Вектора с самыми большими весами - оптимальный портфель

Нормализовать-это отнять среднее значение?

Если далее отнимается ЛР, зачем нормализация? Разве в ЛР это уже не заложено?

 
traveller00:

Нормализовать-это отнять среднее значение?

Нет. Один символ в среднем за сутки меняется на 1%, другой - на 5%. После нормализации они одинаково меняются. Т.е. нормализация - масштабирование.

Нужно это для п.6.


Когда портфель уже подобран, то для расчета лотов нормализацию не делают. Там веса будут отражать уже нужное соотношение объемов в портфеле. Но для поиска портфеля нормализация очень удобна - наглядно виден вклад каждого символа в "мультикорреляцию".

 
Elena Sokolova:
Здравствуйте!подскажите пожалуйста ,есть ли способ среди множества параметров при оптимизации найти такие,которые между собой при одновременном использовании не увеличивают просадку..
К примеру мы имеем разные настройки у одной настройки 1000 сделок и 17% просадки,а у другой 1500 сделок и 20% просадки(и если они практически полностью коррелируют между собой то просадка будет 30-37%).

Можно ли как-то по быстрому это проверить не проводя тесты и не сводя потом эти тесты в репорт менеджере?:).имея тысячи сетов очень много времени уйдёт сводить каждый друг с другом)..может есть какая-то програмка?:)

По-быстрому нельзя.

1) Берете результаты сделок Ваших ТС и переводите их в дневные результаты. Дневные результаты заносите в Excel таблицу, где каждая колонка дневной результат стратегии N. Таблица у Вас должна быть выровнена по датам и количеству строк в каждой колонке. Над каждой колонкой указываете дополнительную ячейку с весом. Вес ставите 1.0.

2) В последнюю колонку записываете сумму результата всех тс помноженную на их вес. Получится взвешенная сумма. Также Для этой колонки рассчитываете максимальную просадку и другие параметры которые Вам интересны, они будут в отдельных ячейках.

3) Открываете в Excel оснастку Поиск решения. И через оптимизатор ньютона начинаете изменять веса дневных результатов так, что бы минимизировать максимальную просадку (нужно будет указать нужную ячейку).

Enjoy.

 
И что потом делать с этими весами, если денег нет? Обычно люди начинают с минимального лота, поэтому в распоряжении только комбинации экспертов, символов, наборов параметров, но не объемы сделок.  
 
Dmitry Fedoseev:
И что потом делать с этими весами, если денег нет? Обычно люди начинают с минимального лота, поэтому в распоряжении только комбинации экспертов, символов, наборов параметров, но не объемы сделок.  

Что делать давно известно. Но если денег СОВСЕМ нет, тогда только на завод :)

Причина обращения: