Блог им. AkakiySigizmundovich

Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)

Приветствую, глубокоуважаемые алготрейдеры.
Представляю вам довольно простую в понимании, и в осуществлении схему позволяющую из одного посредственного торгующего алгоритма построить целую торговую систему работающую на всех тикетах и рынках.
Что необходимо:
1. Подмешиваем шум (осуществляем дизеринг) в проверенный в работе алгоритм в виде внесения дополнительных данных: немного изменяем переменные, параметры, индикаторы, но в пределах работоспособности. Таким образом получаем несколько алгоритмов незначительно отличающиеся друг от друга на основе одного базового, в нашем примере будет 6( количество может быть любое). Оптимизируем их без комиссии что бы не уменьшать количество сделок, так как работа отдельного алгоритма нас не интересует.

Основной обработчик РТС:
Основной обработчик RTS
Обработчик SI:
Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)
Обработчик ED:
Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)


2. Запускаем эти скрипты 1го порядка(обработчики) в торговлю в условиях лаборатории в режиме реального времени на настоящих котировках. Каждому скрипту в случае открытия той или иной позиции присеваем значение 1( или любое другое, зависимости от желаемого ранжирования, можно всем одинаковое, или каким то скриптам отдать приоритет с ранжированием 2 или 3)
3. Создаем скрипт сумматор 2го порядка( непосредственно осуществляющий торговлю), который собирает данные о наличие активных позиций в обработчиках. Суммирует, сглаживает( проводит ресэмплинг ) значения ранжирования и по достижении определенного порога суммы входит, а при снижении выходит из позиции. Проводим оптимизацию и уже только здесь устанавливаем комиссию в тестах.
Эффект переоптимизации отсутствует, так как сигнал на вход и выход не зависит от конкретного обработчика, оптимизируется сумма и они попеременно могут быть любыми в данный момент времени.

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

РТС комиссия 20п на сделку(40 на круг)
Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)

Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)

 Si комиссия на сделку 3 руб. Торговля внутри дня без переноса позиций
Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)
Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)
Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)
 
ED комиссия 2 шага цены( 0.0002)
Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)
Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)
Грааль по всем тикерам и рынкам: Дизеринг с последующим ресемплингом (или система Акакия)
 На всех инструментах по факту торгует один и тот же алгоритм с незначительным добавлением шума.
Учитывая особенности пересчета обработчиков, главный скрипт получает сигнал на вход\выход только на следующей свече, таким образом исключены сделки на утренних и других гэповых свечах. Важно сделать тф торгующего скрипта в тестах  равным или большим чем в обработчиках, в противном случае будет заглядывание вперед. При реальной торговле нужно делать меньше например 1мин или 15 сек, что бы уменьшить задержки в сигналах.


Скрипты обработчики могут иметь одинаковый ТФ как в моем случае, или разный по типу стратегии трех экранов Элдера, торговля с переносом или внутри дня( можно сделать вход в позицию обработчиков в разное последовательное время) работает одинаково хорошо. Можно сделать так же 3 слой( скрипт 3 порядка) который обсчитывает скрипты 2 порядка. Все зависит от цели, фантазии и типа стратегии. Варианты комбинаций и количество обработчиков бесконечны.

★4
25 комментариев
схему позволяющую из одного посредственного торгующего алгоритма построить целую торговую систему работающую на всех тикетах и рынках.
 Такие завораживающе красивые тест-демо-эквити здесь регулярно публикуют продавцы боботов, у которых обычно нет денег на реальную торговлю. А те, кто в отчётах показывает примерно похожие профитные реальные эквити — боботов не продают...
 Парадокс! 
avatar
Я денег за идею не прошу, поделился ей бесплатно.
Поздравляю, вы только что изобрели для себя ансамбль моделей), а и заодно что-то типа метрики, определяющей вероятность (0-5). Тут вам и до ML рукой подать)) — ансамблевые модели типа бустинга, леса.

Ну и это близко к теме торговли облака параметров, как-то так это алго-трейдеры зовут, вроде. Кстати, я бы убрал этап оптимизации отдельных стратегий и вообще этап оптимизации)). 

И как результаты у такого подхода на OOS? Платформа на тестах это не позволяет определить, тока в торговле?

Судя по описанию (хотя, как я сказал, тут много пересечений и с ML лесами и с облаками параметров) вы это сами придумали, скорее всего это говорит о вас как о креативно мыслящем человеке, в нашем деле это полезное свойство).
avatar
Напомнило как рассуждали начальники с позапрошлой работы как прекрасно датасаенсом они будут контролировать нефтедобыча. Исходные данные скудны, датчиков много где нет или сломались.
Но вот мы возмем пару каких то измеряемых параметров, построим модель, и она нам предскажет важный отсутствующий. О, теперь у нас есть важный параметр, тогда мы обучим модель и предскажем ещё один. И так далее из ничего у нас будет все!
avatar
Что такое подход OOS?

Акакий Сигизмундович, Вы лучше на сообщение отвечайте, а не просто в теме). Иначе меня не уведомят об ответе. 

OOS — out-of-sample — данные, которые стратегия при бэктесте, при оптимизации или обучении ещё не видела.

avatar
Replikant_mih, Здесь скорее не облако параметров торгуется. Основной посыл в том что просчитывается что то подобие вектора направленности движения, который и загружается максимальным количеством лотов.
Replikant_mih, на Форвард или бэк тесте результаты получаются в пределах математической модели.

Акакий Сигизмундович, 

Это ж Грааль! Срочно набрать кредитов на всю недвижку и на всех родственников. Через полгода на Гавайи со слугами и челядью уехать отдыхать))))

avatar
А зачем склеивать сигналы стратегий по OR, если можно просто каждому варианту торговать малой суммой. А так не очевидно, почему OR лучше чем AND
avatar
ivanovr, В данном случае для повышения вероятности выявления направленности движения, так как обработчики представляют трендовую стратегию.


avatar
Выходит, что обманутые шумом модели будут давать ложные входы на всю катушку. Лучше уж каждой страте дать не большой объём. Чем увереннее ансамбль в успехе, тем на больший объём в сумме откроется.
avatar
ivanovr, Почему же обманутые? Добавляя шум и одновременно увеличивая из количество вы снижаете требование к каждому обработчику, но за счет увеличения их количества(выборки) повышается точность.( На одном интервале они могут давать разные сигналы, но существуют отрезки на которых направленность большинства из них будет совпадать -вот как раз этот период нам и нужен)
Акакий Сигизмундович, но если делаем OR, то направленность большинства не используем. Вот если как я предлагаю, давать каждой маленькую сумму, то другое дело.
avatar
Этот механизм прекрасно работает при обработке различных цифровых сигналов( аудио, видео, графика) чем ценовые ряды от них отличаются? Такой же набор случайных величин.
Акакий Сигизмундович, Напишите о чем речь? Дизеринг частично знаем что такое.
avatar

Я правильно понял вашу идею?
Возьмем для простоты один тикер.

Берем какую-то одну  идею. На ее основе делаем 6 разных систем (просто с разными параметрами основной идеи). Но не торгуем эти 6 систем параллельно (как портфель), а собираем сигналы от них (-1,0,1) в едином скрипте. И уже в этом скрипте решаем, что если у нас появилось 4 сигнала (например), то встаем в лонг. Упало до 2-х сигналов — выходим из лонгов.

Я корректно все описал?

Если да, то используете ли какое-то дополнительное управление капиталом/ риск-менеджмент? Ну допустим, при 4 сигналах встаем одним сайзом, при 6 сигналах — уже другим.

И спасибо за интересную статью!

avatar
NeHonduras, Да, вы все верно поняли. Дополнительное управление размером  уже предусмотрено системой ранжирования, но вполне можно добавить повышающие или понижающие коэффициенты на размер в зависимости от доп условий.

Акакий Сигизмундович, ага, спасибо за ответ!

А можете чуть-чуть пояснить, почему пришли именно к такому решению, а не просто торговать портфель систем? Это как-то упрощает управление? Упрощает анализ? 

avatar
NeHonduras, Результаты тестов более приближенны к реальности, нежели чем скрипты торгующие условными заявками на гэпах. На некоторых тикетах профит увеличивается  ощутимо. Естественно анализ и управление в несколько раз проще. Так же такая система более устойчива к сбоям и разрывам связи, так как сигналы на вход выход статичны.
Акакий Сигизмундович, По тестам и реальности торговле понял, спасибо.
Не очень понял про устойчивость к обрывам связи и статичности условий. Откуда они берутся? Ведь все сигналы динамические все равно. У вас было 6, а когда станет 4 — еще неизвестно ведь? Или вы имеете ввиду, что просто реже сделки совершаются, и поэтому устойчивее? Например ряд может быть [6,5,6,5,5,5,5,6,5,4]. И если бы вы торговали портфелем классическим, то каждая [6,5] — это была бы сделка, а т.к. у вас шаг больше — то сделки реже?
avatar
NeHonduras, Я имею ввиду, что если сделать условие для входа допустим больше 5, то не важно в какое время вы подключите главный скрипт и будут ли обрывы связи он все равно откроет позицию если будет сохраняться это условие, в отличие от стандартного скрипта где будет пропущен сигнал и вероятно потребуется ручное вмешательство. Так же это важно в момент перехода на новый контракт, где мы подсосываем историю в обработчики и у нас ведеться условная позиция непрерывно и мы условно вклиниваемся торговым скриптом при смене контракта. Мы можете сделать имитацию торговли портфелем без оптимизации если будет условие на вход\выход как 6/5, 5/4, 4/3, 3/2 и т.д  и сравнить с оптимизируемыми данными, и вы сможете увидеть есть ли преимущество в таком подходе для конкретных обработчиков и инструмента. 
 По поводу смены контракта, то на кубиках только в ручную, если использовать через api народ как то подтягивает через таблицы, спросите на форуме программы.
Акакий Сигизмундович, И самый странный вопрос — как вы в тслаб делаете переход на новый контракт? По каждой подсистеме получается отдельно руками?
avatar

теги блога Акакий Сигизмундович

....все тэги



UPDONW
Новый дизайн