Оптимизационная задача в области торговых роботов?
От: imh0  
Дата: 26.08.21 13:01
Оценка: 6 (1)
Не смог понять куда писать по теме трейдинговых роботов, поэтому пишу тут....

В автоматизированной торговле существует своя технология разработки роботов. Она довольно специфична и не очень похожа на обычный процесс разработки ПО. Ну во первых торговые роботы это очень специфичное ПО, оно не для пользователей. Роботы эти живут в своем особом виртуальном мире.

Главное в торговом роботе это "торговая стратегия", точнее суть робота в этом. А главное конечно может быть разным с точки зрения разных людей. Ну например кто-то считает, что главное это ММ (управление деньгами)... Но если отбросить все важное но внешнее то суть робота это торговая идея, или торговая стратегия.

Обычно процесс разработки торгового робота в автотрейдинговых компаниях выглядит так... (условно) Автотрейнинговые компании бывают разные, я сейчас о тех в которых применяется "научный подход"

1) Аналитик в результате общения с трейдерами и в глубоком взаимодействии с ними рождает/выдвигает/формализает торговую гипотезу.
2) Делает презентацию и долго и упорно защищает свою гепотезу, доказывая что она может иметь место.
3) Выделяется разработчик или иногда целая комманда, которой формально "ставится задача"
4) Разрабатывается так называемый голый протитип торгового робота. Это такой где нет ни управления денгами ни обработки рыночных рисков и прочее.
5) Робот отправляется на симулятор на исторических данных. То есть это такая могучая цифродробилка где гоняют роботов. Обычно это какие-то высокопроизводительные облачные системы.
6) Так как робот по задумке аналитика имеет настроечные параметры. Обычно это такие параметры с диапазонами "от и до". Точные значения которых на этапе задумки предсказать трудно. Таких параметров может быть сотни или даже тысячи. А на симуляторе моделируются торговые события от сотен или даже тысяч торговых инструментов, которые выборочно (по тем же параметрам) отправляются в торговый робот. То есть в одну виртуальную секунду робот получает сотни торговых событий.
7) Для поиска самой лучшей комбинации параметров робота обычно решается так назыаемая оптимизационная задача. Так как критерий лучшести обычно не один. То обычные алгоритмы поиска максимума тут не очень подходят.

Как известно Березовский Б.А. замимался как раз этой темой. )) — https://www.ozon.ru/product/binarnye-otnosheniya-v-mnogokriterialnoy-optimizatsii-21241334/#section-description--offset-80

Хочется обсудить тут в этой теме несколько вопросов.

1) Кто какие симуляторы знает и использует и используете ли вообще симуляторы? Может быть все просто в той же "Математике" просто обЩитываете?
2) Как решаете ОЗ (оптимизационную задачу)?
===
Я лично использую специльное высокопроизводителное ПО, разработанное одной командой, которое мне досталось когда работал в одной алготрейдинговой компании. То есть симулятор этот такой дико специальны, CLI, и без какого-то гуя вообще, он генерит логи по которым потом я делаю стейтменты, и потом результаты обрабатываю в Математике. Уже с графиками и прочим.

Предлагаю именно обсуждение, без потребности каких то ответов. Тема я думаю всем очень будет интересная.
Отредактировано 26.08.2021 13:03 imh0 . Предыдущая версия .
Re: Оптимизационная задача в области торговых роботов?
От: hi_octane Беларусь  
Дата: 26.08.21 14:54
Оценка: 4 (1)
I>Предлагаю именно обсуждение, без потребности каких то ответов. Тема я думаю всем очень будет интересная.
Когда я работал в алго, какого-то супер-спец-софта не было. В роботорговый терминал вкорячили виртуальные коннекторы к биржам, которые могли проигрывать историю и адекватно симулировать ордера (т.е. добавлять ордера в стакан, матчить на нужную сумму если они матчились, высчитывать комиссию, и т.д.). Определялась и корректно симулировалась даже наша позиция в стакане. Например если по цене 40.85 стояло предложение на 500k$, и мы докинули ешё 200k$, а потом произошёл матчинг на 400k$, то теперь в стакане 300k$, но "наших" ещё ни цента не сматчено.
Полагаю твой CLI всё тоже самое умеет. А подключён он к графику или нет это уже частности. Нам например было удобно когда самые убыточные и самые прибыльные сделки можно увидеть списком и нажимая на них попадать на конкретное место на графике и видеть сразу и стакан, и позицию робота в тот момент, и причину по которой они принял решение.

Что в нашем терминале было интересно — мы могли так "проигрывать" не только историю но и текущие реальные торги. Т.е. стакан брался настоящий, и по нему достраивался "виртуальный" с учётом действий робота. Очень надеялись на эту фичу, типа "обкатаем на истории, потом 2 недели на 'эмуляции' и тогда в бою 100% профит." Но по факту фича использовалась мало, для краткосрочных стратегий не помогала. На краткосроке твои ордера начинают влиять на стакан неожиданным образом — кто-то убирает свои, кто-то наоборот ставит перед тобой, кто-то мгновенно выкупает твой ордер, и т.д. А на средне/долгосроке — такие подробности ни на что не влияли, выгребай стакан тейкером и всё.

Оптимизация по параметрам была двумя способами — если параметров много то по мотивам генетических алгоритмов (выкидывание худших, скрещивание лучших). Если параметров мало 1..3 — то стартовало несколько роботов с разбросанными случайными, параметрами, и дальше каждый ползёт градиентом в сторону улучшения. Тут главный прикол что конкретно считать "улучшением". Выросшая чистая прибыль за период может не быть улучшением если были недопустимые просадки. И не может быть улучшением чистая прибыль если она была сделана одной-двумя "случайными" сделками если стратегия не расчитанна специально на ловлю именно таких сделок. Т.е. правильный критерий "улучшения" должен быть частью робота, и в идеале в самом роботе описываться, но по идее ты это и так знаешь.
Re[2]: Оптимизационная задача в области торговых роботов?
От: imh0  
Дата: 27.08.21 09:16
Оценка:
Здравствуйте, hi_octane, Вы писали:

I>>Предлагаю именно обсуждение, без потребности каких то ответов. Тема я думаю всем очень будет интересная.

_>Когда я работал в алго, какого-то супер-спец-софта не было. В роботорговый терминал вкорячили виртуальные коннекторы к биржам, которые могли проигрывать историю и адекватно симулировать ордера (т.е. добавлять ордера в стакан, матчить на нужную сумму если они матчились, высчитывать комиссию, и т.д.). Определялась и корректно симулировалась даже наша позиция в стакане. Например если по цене 40.85 стояло предложение на 500k$, и мы докинули ешё 200k$, а потом произошёл матчинг на 400k$, то теперь в стакане 300k$, но "наших" ещё ни цента не сматчено.

Я сейчас "играюсь" с валютами. С акциями, на мой взгляд, с помощью роботов можно только инвестировать в долгую или ловить на быстрой торговле. Я имею ввиду пытаться словить пару пипсов глядя на стакан. Но для быстрой торговли надо быть рядом с биржей, чтобы задержка была 1-2 милисекунды, а иначе заработать трудно.
На валюте можно ловить на дневной активности. Да и валюта на более предсказуема на среднесрочных диапазонах, так как играют в основном ЦБ и крупные банки. И их игра вполне себе предсказуемма, а от личии от акций.

_>Полагаю твой CLI всё тоже самое умеет. А подключён он к графику или нет это уже частности. Нам например было удобно когда самые убыточные и самые прибыльные сделки можно увидеть списком и нажимая на них попадать на конкретное место на графике и видеть сразу и стакан, и позицию робота в тот момент, и причину по которой они принял решение.


Там есть GUI, но он скоее для обзора. Исходники всей это штуки тоже есть. Вроде даже где-то выложены. )

_>Что в нашем терминале было интересно — мы могли так "проигрывать" не только историю но и текущие реальные торги. Т.е. стакан брался настоящий, и по нему достраивался "виртуальный" с учётом действий робота. Очень надеялись на эту фичу, типа "обкатаем на истории, потом 2 недели на 'эмуляции' и тогда в бою 100% профит." Но по факту фича использовалась мало, для краткосрочных стратегий не помогала. На краткосроке твои ордера начинают влиять на стакан неожиданным образом — кто-то убирает свои, кто-то наоборот ставит перед тобой, кто-то мгновенно выкупает твой ордер, и т.д. А на средне/долгосроке — такие подробности ни на что не влияли, выгребай стакан тейкером и всё.


Эта штука (которой я пользуюсь), она только исключительно для анализа. В том ее и интересность. Ее использовали для того чтобы проверить и обосносвать стратегию, а потом уже в реальном терминале делался робот. Она очень быстрая. 10000 роботов в паралель на всей истории от 2000 года до сйечас, прогоняет за секунд 30 на тиках.

_>Оптимизация по параметрам была двумя способами — если параметров много то по мотивам генетических алгоритмов (выкидывание худших, скрещивание лучших). Если параметров мало 1..3 — то стартовало несколько роботов с разбросанными случайными, параметрами, и дальше каждый ползёт градиентом в сторону улучшения. Тут главный прикол что конкретно считать "улучшением". Выросшая чистая прибыль за период может не быть улучшением если были недопустимые просадки. И не может быть улучшением чистая прибыль если она была сделана одной-двумя "случайными" сделками если стратегия не расчитанна специально на ловлю именно таких сделок. Т.е. правильный критерий "улучшения" должен быть частью робота, и в идеале в самом роботе описываться, но по идее ты это и так знаешь.


А для много факторной оптимизации фронт паррето не использовали?
Re[3]: Оптимизационная задача в области торговых роботов?
От: hi_octane Беларусь  
Дата: 28.08.21 10:24
Оценка:
I>Там есть GUI, но он скоее для обзора. Исходники всей это штуки тоже есть. Вроде даже где-то выложены. )
Прикольно. Если так — может сможешь по какой-то строке из исходника найти где их взять? Хоть я уже и не в алго, но производительный код посмотреть всегда интересно.

I>Эта штука (которой я пользуюсь), она только исключительно для анализа. В том ее и интересность. Ее использовали для того чтобы проверить и обосносвать стратегию, а потом уже в реальном терминале делался робот. Она очень быстрая. 10000 роботов в паралель на всей истории от 2000 года до сйечас, прогоняет за секунд 30 на тиках.

Получается она гоняет не готового робота, а какой-то его кусок?

I>А для много факторной оптимизации фронт паррето не использовали?

Неа. Может это под NDA, но это "несекретный секрет" — мы его на собеседованиях обсуждали спокойно. Дело в том что бюджет на торговлю был почти безразмерный, сильно больше моментальной ликвидности на рынке. Поэтому мы не сильно старались выделить лучшего робота. Группировали всех по ценам и моментам входа, выкидывали очень близких, чтобы они друг-другу не мешали, и тупо запускали всех в работу.

Если ты фигачишь на себя и личный бюджет не резиновый, тогда наверное стоит заморочиться выбором лучшего. И наверное надо перевыбирать регулярно по новой истории — рынок-то меняется.

Чем мы заморачивались — так это определением что робот начал терять, и поиском критериев "отклонения от нормы". Это офигенно сложная и интересная проблема, причём опять же решение для каждого робота хоть немного но особенное.
Re: Оптимизационная задача в области торговых роботов?
От: _ilya_  
Дата: 04.09.21 00:16
Оценка:
Здравствуйте, imh0, Вы писали:

I>1) Аналитик в результате общения с трейдерами и в глубоком взаимодействии с ними рождает/выдвигает/формализает торговую гипотезу.


Все остальное не имеет значения ибо человек хорошо если 50/50 предсказывает что надо делать. Ну а аналитик обычно <50% прав, т.е. бесполезен вовсе всегда.
Re[2]: Оптимизационная задача в области торговых роботов?
От: ylem  
Дата: 04.09.21 08:43
Оценка: +1
Здравствуйте, _ilya_, Вы писали:

__>Здравствуйте, imh0, Вы писали:


I>>1) Аналитик в результате общения с трейдерами и в глубоком взаимодействии с ними рождает/выдвигает/формализает торговую гипотезу.


__>Все остальное не имеет значения ибо человек хорошо если 50/50 предсказывает что надо делать. Ну а аналитик обычно <50% прав, т.е. бесполезен вовсе всегда.


Так это отличный аналитик. Просто кнопки бай и селл ему местами поменять, и вы великолепны.
Если серьезней, то ни кто не пытается угадать, что надо делать в любой момент времени.
Задача-то найти момент времени, где всем ясно, что делать и это сработает с некоторой подходящей вероятностью (не обязательно > 0.5). А если не сработает, вы узнаете быстро, и потеряете не много.
Re[4]: Оптимизационная задача в области торговых роботов?
От: imh0  
Дата: 05.09.21 10:11
Оценка:
Здравствуйте, hi_octane, Вы писали:

I>>Там есть GUI, но он скоее для обзора. Исходники всей это штуки тоже есть. Вроде даже где-то выложены. )

_>Прикольно. Если так — может сможешь по какой-то строке из исходника найти где их взять? Хоть я уже и не в алго, но производительный код посмотреть всегда интересно.

Попробую найти.
Кода там кстати дофига... )

I>>Эта штука (которой я пользуюсь), она только исключительно для анализа. В том ее и интересность. Ее использовали для того чтобы проверить и обосносвать стратегию, а потом уже в реальном терминале делался робот. Она очень быстрая. 10000 роботов в паралель на всей истории от 2000 года до сейчас, прогоняет за секунд 30 на тиках.


_>Получается она гоняет не готового робота, а какой-то его кусок?


Там какбы есть быстрый упрощенный вариант прогонов и более реалистичный. Но интересен именно быстрый, чтобы можно было быстро, на С++, искать закономерности. То есть, по сути — я для себя вижу его использование, как инструмент для поиска закономерностей. То есть, беру "выдумываю" какую-то стратегию и прощу найти параметры, при которых она начнет приностить прибыль. Затем загружаю статмент с логом сделок в математику и ищу почему получилось быть прибыльным.

То есть, это такой сверхбыстрый инструмент для исследования рынка. Сейчас вот занимаюсь поиском связи между разными инструментами.

То есть, скорее всего его можно обозначить, как такой же иструмент как адронный коллайдер, для физиков. Сталкиваем и смотрим что получилось. ))

_>Чем мы заморачивались — так это определением что робот начал терять, и поиском критериев "отклонения от нормы". Это офигенно сложная и интересная проблема, причём опять же решение для каждого робота хоть немного но особенное.


Критерий отклонения от нормы... Хм. Интересно, никогда не задумывался о таком "взгляде".
Отредактировано 05.09.2021 10:26 imh0 . Предыдущая версия .
Re[2]: Оптимизационная задача в области торговых роботов?
От: imh0  
Дата: 05.09.21 10:14
Оценка:
Здравствуйте, _ilya_, Вы писали:

I>>1) Аналитик в результате общения с трейдерами и в глубоком взаимодействии с ними рождает/выдвигает/формализает торговую гипотезу.


__>Все остальное не имеет значения ибо человек хорошо если 50/50 предсказывает что надо делать. Ну а аналитик обычно <50% прав, т.е. бесполезен вовсе всегда.


Известная фишка, в области трейдинга ( оч. хорошо это показанно кстати, в сериале "Миллиарды" ), что _некоторые_ люди как-то блин чуствуют "правильные" моменты. Как они это делают никто не знает. Но таких людей буквально ищут и охотятся за ними. Вот поэтому аналитики с такими людьми и общаются, чтобы получить инфу...
Re: Оптимизационная задача в области торговых роботов?
От: Young yunoshev.ru
Дата: 23.10.21 14:06
Оценка:
Здравствуйте, imh0, Вы писали:

I>1) Кто какие симуляторы знает и использует и используете ли вообще симуляторы? Может быть все просто в той же "Математике" просто обЩитываете?

I>2) Как решаете ОЗ (оптимизационную задачу)?
I>===
I>Я лично использую специльное высокопроизводителное ПО, разработанное одной командой, которое мне досталось когда работал в одной алготрейдинговой компании. То есть симулятор этот такой дико специальны, CLI, и без какого-то гуя вообще, он генерит логи по которым потом я делаю стейтменты, и потом результаты обрабатываю в Математике. Уже с графиками и прочим.
I>Предлагаю именно обсуждение, без потребности каких то ответов. Тема я думаю всем очень будет интересная.

Я сейчас разбираюсь с quantconnect.com — делали китайцы судя по всему, документация не очень (приходиться блин иногда смотреть видео чтобы разобраться в некоторых аспектах — но увы это такой тредн в последнее время).
В целом есть все — как и бэктестинг, так и оптимизационные задачи при бэктестинге, так и можно продключить к брокерам и торговать в лайве.
Доступ к данным с нормальнм разрешением. Плюс встроенные различные индикаторы — типа EMA, RSA и более сложные. Плюс свои можно делать.

Но если что-то аналогичное есть — я с удовольствием послушаю. Меня интересует правда чтобы были датафид по опционам. На quantconnect они к сожалению с таймфремом только в одну минуту и выше. Хотелось бы 5 секундный таймфрейм.
Re: Оптимизационная задача в области торговых роботов?
От: Young yunoshev.ru
Дата: 23.10.21 14:15
Оценка:
Здравствуйте, imh0, Вы писали:

I>Предлагаю именно обсуждение, без потребности каких то ответов. Тема я думаю всем очень будет интересная.



Еще в качестве темы интересно оценить, как понять что стратегия прибыльная.
Т.е. вот у нас есть N сделок со средней ценой M и win rate X. Как оценить вероятность того что стратегия прибыльная и диапазон это вероятности. Причем непример для разных ассетов это будет разные же цифры.

Интуитивно понятно, что например если мы сделали 100 сделок с прибыльностью 5% торгуя 10 летними облигациями США за месяц — то наверно мы реально в плюсе.
А если сделали 100 сделак на опционах на TSLA с 5% прибулью — то далеко не факт.

SPR,Sharpe Ratio это все понятно. Но по идее у нас есть еще волативность самого рынка — ее тоже можн учитывать.

Вот реально в чем потребность — ты выдаешь набор сделок, по ассетам — акции, облигации, опционы и т.п. — он тебе в ответ твой реальный диапазон винрейта.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.