Блог им. Replikant_mih

Как я алготрейдю. Инфраструктура.

Инфраструктурно меня конкретно штормило раньше). Видимо, строить инфраструктуру (где-то в глубинах внутренних предпочтений) мне ничуть не менее интересно, чем рисёчить стратегии. Поштормило-поштормило, да подотпустило. Зато теперь у меня внутри нет никакой недосказанности вида «а что если своё попробовать написать», «а что если готовую вот эту специализированную взять» и прочих. Лучше жалеть о то, что сделал… и я делал)).

 

 

Сейчас самописная инфрастуктура. Не разраб, не кодер, не архитектор, но кой какие-то принципы усвоил – какие-то из своего опыта вынес, какие-то из курсов или ещё откуда. Соблюдение банальной IT гигиены на порядки облегчает жизнь. Пример: раньше мог запилить коннектор какой-нибудь, который корнями врастал в остальную часть инфраструктуры и чтобы заменить его на другой коннектор, если понадобится, приходится выкорчёвывать, а это долго, сложно и отличный повод запустить прокрастинационный цикл. А надо-то, банально, написать базовый класс и, много не надо, буквально несколькими с указанием сигнатур, дальше от этого класса наследоваться – всё. Пример: щас сделать Yahoo Finance адаптер для получения исторических данных конечно совсем не рокет саенс, но когда ты всё делаешь по красоте щас можно сделать ещё проще (так): уважаемый ChatGPT-4, вот базовый класс, отнаследуйся от него, сделай пож. класс для получения исторических данных по US Stocks с Yahoo Finance. Обязательно писать «Уважаемый», иначе ничего не получится). Ну и собственно почти всё, дальше небольшие корректировки и новый поставщик исторических данных готов, а главное готов для работы с имеющейся инфраструктурой.


Ну и в целом, пилить инфраструктуру с нуля – все этим вспомогательные библиотеки, классы – не тривиальная задача, много челленджей по ходу возникает. Но когда все готово и работает, дальше очень удобно переиспользовать. В этом аспекте мне нравилась S# — у тебя есть доступ к лоулевелу, у тебя есть готовые собранные из лоулевела детальки, у тебя есть целые отдельные «постройки» собранные из деталек, но если надо ты можешь всегда вернуться на лоулевел и поколдовать на этом уровне если требуется. У меня что-то похожее.

 

Взаимодействие с инфраструктурой условно-хардкорное. В сторону инфраструктуры (а, я наверно, не раскрыл что в это понятие вкладываю – ну сами библиотеки, бэктестеры, торговалки, коннекторы и прочее) это конфиги, код подшаманить и перезапустить, ну Jupyter. Со стороны инфраструктуру в мою сторону это логи, консоль, алерты в телегу и… снова Jupyter. А, ещё в сторону инфраструктуры – есть API простенький.

 

Как это работает (в общих чертах).

 

Начинается процесс с торговой идеи, понятно. Наследуюсь от базового класса стратегии, пишу стратегию. Когда эту часть разрабатывал один из основных приоритетов был чтобы при создании стратегии не надо было лишний код писать: вот мы что-то инициируем, вот ещё что-то, а вот без этой строчки ничего не запустится и т.д., такое тоже видел в других системах. Да, человечество изобрело такие штуки как шаблоны, но всё равно не то и как минимум ухудшает наглядность.
Сейчас чтобы разрабатывать стратегию на первом этапе у меня есть Jupyter Notebook под это. Не громоздкий, с понятной структурой, удобный. Не громоздкий потому что код не в нём, код в библиотеке, а Jupyter просто создаёт объекты, инициирует переменные и подобный stuff.

Набросал стратегию, прогнал на паре тикеров, тут же в отдельной ячейке можно отрисовать свечи, вход, выход и что вокруг проиходит. На этом этапе я убеждаюсь, что стратегия находит то, что я ожидаю. На этих этапах часто рождаются инсайты относительно того, а то ли я ищу, относительно очертаний того, что я ищу и т.д. На этом же этапе делаю прикидки по разным параметрам и фильтрам. Jupyter в этом месте, конечно, супер удобен: notebook (Jupyter) для разработки стратегий он предполагает некий пайплайн (план, считай), но в любой момент можно отойти от него и сделать что-то ответвляющееся – трейды покрутить, графики какие-то доп. построить или что-то такое.


Когда поигрался со стратегией, дальше её путь в другой ноутбук – ноутбук про бэктесты – там указываю диапазоны параметров, кол-во прогонов, набор тикеров и прочее и погнали.

 

Дальше увесистый csv с резалтами идёт на вход следующему ноутбуку, который – деталей здесь не будет – анализирует результаты бэктеста. В общем тот этап где обычно определяют диапазоны или значения параметров и что-то такое).

 

Дальше отдельным приложением торговалка конкретной стартегией (на наборе тикеров). Запустили – погнали. Она генерит сигналы, сигналы идут на Execution API — оно берет сигналы и роутит их по соответствующим коннекторам. В будущем это API будет делать, конечно, много всего интересного, пока не много и не особо интересного. Всё. Создал новую стратегию – делаю под неё приложение запускаю, ничего перезапускать не надо.

 

Ещё есть некоторые блоки инфраструктуры, отражающие логику общего алго флоу, но их оставим за скобками.

 

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

Ну и микро кусок Jupyter тетради, где разрабатываю стратегии)).

Как я алготрейдю. Инфраструктура.

★5
96 комментариев
Завидую белой завистью)
avatar
Sergey Pavlov, :)
avatar
VictorGromov, Лучше заниматься тем, что нравится. А на рыбалке же и рыба есть).
avatar
VictorGromov, Эт да)). В детстве любил рыбалку).
avatar
Redline, Смотря что вкладывать в понятие «коннектор»). Работа с ордерами — Quik пока. Получение свечных данных MOEX — mt5, получение свечных данных US (Daily only) — Yahoo Finance. Получение несвечных данных MOEX (Quik).
avatar
Replikant_mih, а как вы в питон ордера прокидываете?
avatar
_xXx_, Ордера в питоне скорее рождаются). А с другими системами через какие-то связки, если именно ордера, пока у меня это только про квик, связка через сокет соединение, на стороне квика запущен скрипт, который такое соединение поддерживает, на стороне моей инфраструктуры свой код, поддерживающий соединение с тем квиковским, через этот канал команды по ордерам посылаю.
avatar
Replikant_mih, понял, через сокет с квиком общаетесь…
avatar
Точно также делаем 
avatar
Biopsyhose trader, Круто .
avatar
т.е реально не торгуешь... 

на счет яши… и дневок… проблема дневок в том, что надо разбираться дневки за тоговую сессию с 9:30 по 16:00 или за 24 часа (в 4 утра прошла рендомная сделка на 1 штуку и появился клос)... 

мораль в том, что дневки надо лепить из 15ти минуток... 
avatar
ves2010, В рамках моей парадигмы эти моменты не принципиальны.
avatar
Replikant_mih, а цену исполнения сделок откуда берешь?
avatar
ves2010, Ну вероятностно вычисляю.
avatar
Replikant_mih, начнешь торговать реально сам все увидишь… особенно когда обьем нужно будет налить

я кстати принципиально не торгую бумаги ниже 1 мио шт оборота в день… т.к проблемы с исполнением лимиток
avatar

ves2010, )).

Я торгую уже дохрена лет так-то).

avatar
Replikant_mih, но не на америке

полюбому успехов тебе и профитов )
avatar

ves2010, Ну на Америке немного давно торговал, щас да, не торгую. Ну там есть премаркеты всякие. Посмотрим, если будут основания скорретировать логику исполнения в бэктестах — ну поправлю. Пока граалей раскиданных по полу на Америке не вижу в тестах, подозревать бэктесты в завышении метрик поводов нет).

 

За пожелания спасибо :).

avatar
А chatgpt-4 (платная версия, как я понимаю) кодит лучше, чем бесплатный chatgpt-3.5?
avatar
Schurik, Лучше, если кратко ответить).
avatar
Replikant_mih, лады, надо будет попробовать).
avatar
Не увидел в Вашем изложении инфраструктуры.  ИМХО Вы попутали терминологию.
avatar
Synthetic, Нет, ничё не попутал — это же мой алготрейдинг, терминология тоже моя)). Она может не матчиться с какой-то «официальной» или общепринятой, для меня это не критично, я в одного работаю).
avatar
Replikant_mih, 

Так может быть Вы поясните Вашу же терминологию. Что подразумевается под термином «инфраструктура»?  И почему он так отличается от общепринятого?
avatar
Synthetic, 
Дак а вот же в тексте). Просто то, что отличается я не говорил), я сказал что может. Есть железная инфраструктура, есть софтовая, по-моему всё в рамках общепринятых алго понятий. Не знаю, почему у вас вопросы возникли тут).
avatar
Replikant_mih, 

Вы же еще используете термин «архитектура». Причем  то, что Вы называете инфраструктурой
(В сторону инфраструктуры (а, я наверно, не раскрыл что в это понятие вкладываю – ну сами библиотеки, бэктестеры, торговалки, коннекторы и прочее)
скорее ближе к архитектуре.
PS. Мой интерес к этой теме вызван тем, что, на первый взгляд, «крутые программисты» делающие алгопродукты на продажу тоже путаются в этих терминах.
avatar
Synthetic, Ну, инфраструктурой в данном случае я называю весь набор наработок (код) — библиотеки, классы, алгоритмы. Сюда не входят стратегии, модели и данные. Инфраструктура в данном случае — это совокупность этого всего, а архитектура — то как оно работает, устроено, взаимодействует между собой, взаимодействует с данными и другими системами (брокерами, поставщиками данных и т.д.).
avatar
какая доходность ваших алго? можно декларацию за 2022?
avatar
bohemian rhapsody, Нет, нельзя ни доходность, ни декларацию тем более).
avatar
Replikant_mih, то есть просто гимнастика для ума?
avatar
bohemian rhapsody, Я не знаю, как работают у вас выстраивания логических цепочек в голове. С точки зрения логики вывод очень странный).
avatar
bohemian rhapsody, товарищ уважаемый, додумайте мозгом своим наконец… если автор пишет об успехах в алготрейдинге, то с 99% вероятностью он зарабатывает бабки. Не? Ну например, вы шарите в алго и прочем, но не зарабатываете на этом или хуже того, сливаете. У вас будет стимул писать посты на смартлабе или еще где?

avatar
Тестировщики зарабатывают даже — но в айти
avatar
Круто!
У меня по другому сделано.
Есть Тестер и Бот, которые не содержат внутри никакой зашитой стратегии. Стратегия задается в виде текста (по аналогии с Метастоком), например, OPEN LONG: «С>ma(20) and T>141000» и т.д.
Все, что понравилось в Тестере можно добавить в Бота, который может одновременно оперировать до сотни таких систем и писать исторические котировки в БД.
Кроме этого есть Загрузчик исторических котировок, Анализатор сделок, Исполнитель сделок (если к Квику нужно подключить несколько ботов или делать заявки лимитками) и т.д.
Т.е. для разработки системы и запуска бота ничего компилировать не приходится.
avatar
T-800, , у каждого своя маленькая уютная инфраструктурка).
avatar
T-800, Зачем писать историю в БД, если квик и так ее подгружает в метасток, после того, как вы подключили его к квику? 
avatar
monomah, у меня нет метастока.
У меня есть свое хранилище всей истории по всем тикерам секций фортс, фондовой (кроме 3-го эшелона), валютной. Там у меня хранятся минутки, из которых я могу сделать любой ТФ, даже нестандартный без квика и метастока. 
avatar
Какова цель данного повестования?
avatar
monomah, Можно делать для чего-то, можно делать почему-то. Я делал почему-то, потому что захотелось). Хотя возможно почему и для чего это две стороны одной медали.
avatar
Replikant_mih, просто я не понял зачем было потрачено время на написание поста. Инфраструктура ваша пригодиться только вам.   
Странно что на создание стратегии вы тратите меньше всего времени чем на игры с инфраструктурой. Стратегия дается потом и кровью в течении многих лет, а не походя...

Набросал стратегию

В любом случае удачи!
avatar

monomah, 

Стратегия дается потом и кровью в течении многих лет, а не походя


В алгоритмической торговле обычно сильно по-другому это делается.
avatar
Replikant_mih,  Что делается по другому?.. Вы на полном серьезе уверяете, что алгоритм придумать легче чем  инфраструктуру создать под него? Если это так то мне понятно качество и уровень ваших алгоритмов ;)
avatar
monomah, 
то мне понятно
Ну и отлично — разобрались)).
avatar
monomah, качественную инфраструктуру сделать на порядок сложнее, чем прибыльную систему с помощью этой инфраструктуры.
avatar
T-800,  У вас какое-то противоречие или вы не поняли что написали. Тогда зачем вам шикарная инфраструктура если вы с помощью нее не можете создать хорошую стратегию? Ради чего корпели над этой инфраструктурой? Создали инфраструктуру, а тс сливающая?
Хорошая стратегия всё а инфраструктура это дополнение к стратегии а не иначе.
avatar
monomah, бывают страты, типа арбитража, где все только на инфраструктуре и держится
avatar
Андрей К,  Насколько известно т-800 торгует иное и поэтому это и вызвало удивление. Не использую арбитраж, но думается там тоже без стратегии делать нечего
avatar
monomah, без стратегии естесно на рынке делать нечего, но там все страты состоят из 3-5 строчек кода ) все остальное инфраструктура 
avatar
Андрей К,  Неважно количество строчек кода, важна суть стратегии. Спорить об арбитраже не буду. Разговор шел о другом с т-800
avatar
Поддержу автора за то что сделал свою инфраструктуру, это гораздо удобней и качественней, чем пользоваться чужой, написанной для кого-то другого. Своя инфраструктура это изысканное блюдо, приготовленное лично для себя, а готовые решения это похлебка, приготовленная для стада — жрите, что дают. Но в трейдинге как раз массовые решения тиражированные на стадо работают хуже, т.к. все не могут одновременно зарабатывать, в то время как прибыль обычно у отдельных частных трейдеров, эксплуатирующих свои частные «граали». Только в частной инфраструктуре ты можешь тестить и торговать такие идеи, которые технически недоступны в массовых продуктах.
avatar
Молодец. Маленький шаг для человека, большой шаг к концу бирж))
avatar
bascomo, Спасибо).
avatar
Давно заметил, что алготрейдеры 90% времени и внимания посвящают программированию, инфраструктуре, софту. И от силы 10% — собственно трейдингу. Возможно, потому что им само программирование нравится больше трейдинга. Возможно, потому что написать какой-нибудь коннектор гораздо проще, чем прибыльный алгоритм.
avatar
Михаил К., 
Возможно, потому что написать какой-нибудь коннектор гораздо проще, чем прибыльный алгоритм.


За программистов не скажу — может и так. Мне стратегию, если есть подходящая инфраструктура, работающую стратегию написать легче. 

 

А вообще «программирование» в данном случае это инвестиции. Инвестиции в качество стратегий, качество портфеля стратегий, инвестиции в скорость разработки портфеля и т.д.

avatar
Replikant_mih, в себя это инвестиции, Миша :)
А это бесценно
avatar
bascomo, Ну да, любой опыт, любые движения, инициативы можно назвать инвестициями в опыт и в себя.
avatar
Replikant_mih,
За программистов не скажу — может и так. Мне стратегию, если есть подходящая инфраструктура, работающую стратегию написать легче.

А как вы определите, что ваш алгоритм прибыльный? Путем тестирования? А что, если это будет лишь подгонкой под историю (и, скорее всего, так и будет!)? Тому доказательства — какое-то n-ное количество систем в портфеле и постоянная оптимизация параметров. А ведь«ручные трейдеры» часто обходятся одной системой, которая у них работает на всех рынках и всех фазах рынка! А причина превосходства ручного трейдинга над алгоритмическим проста — рынок это не математика, а взаимодействие толпы народа с целью отобрать друг у друга деньги. И никакими формулами это взаимодействие не описать. А вот понаблюдать со стороны и составить совершенно субъективное мнение вполне возможно. Например, как вы определите алгоритмически момент пробоя зоны сопротивления? Это сложно. Потому что каждый пробой не похож на предыдущий, входных параметров может быть много…
avatar
Михаил К.,
… А большое количество параметров повлияет отрицательно на универсальность системы. В то же время, подготовленный трейдер справится с этой задачей гораздо легче. Ведь он подойдёт к решению куда гибче, и обратит внимание лишь на то, что в данной конкретной ситуации важно, а что не важно — отбросит. А вот алгоритм такой гибкостью не обладает.
avatar
Михаил К., 
А вот алгоритм такой гибкостью не обладает.
Алгоритм обладает той гибкостью, которую в него заложил автор. Хотите большей гибкости — закладывайте, будет гибкий алгоритм. Можно даже не простогибкий, а подстраивающийся, дообучающийся под изменения рынка.
avatar
Михаил К., у алготрейдинга есть ряд существенных преимуществ перед ручным:
1. При правильной инфраструктуре можно неделями не подходить к компу, в то время как ручной трейдер ежедневно теряет нервы, зрение и зарабатывает кучу болячек от сидячего образа жизни.
2. Алготрейдинг это часто точный системный трейдинг, исключающий эмоции, тильт, лудоманию, чего как правило не скажешь о ручном. 
3. И т.д. и т.п.
Чтобы не углупляться в бесполезный спор, показываю результаты, они меня вполне устраивают:



avatar
T-800, ну так ведь и рынок непрерывно рос весь этот год. И тоже на 50%. А если он начнёт падать, как будут чувствовать себя ваши системы?

Опять же, я не утверждаю, что прибыльный алготрейдинг невозможен. Я лишь говорю, что этот подход не оптимален.
avatar
Михаил К., так в прошлом году, когда рынок падал у меня тоже +50%
avatar
T-800, сколько в среднем % прибыли на трейд берете?
avatar
Илья Нечаев, вот так навскидку трудно сказать. Более 100 роботов на разных инструментах. В среднем в рублях пишет, что 275 руб. на сделку по всем ботам. Но на всех тикерах размер лот разный. Пролистал все системы в среднем по факту получается большая часть 0.1-0.3%, но есть и отрицательные, есть и 0.7%, 0.9% и 1.7%
avatar
T-800, на комиссию работаете) вот тоже сейчас большое исследование делаю про % приращения. Я так понял у вас ансамбль систем.
avatar
Илья Нечаев, Если активно работать на комиссию, в какой-то момент комиссия начнёт работать на тебя). В смысле перейдешь по лесенке тарифа на более дешевую ступень.
avatar
Илья Нечаев, нет, у меня сделки лимитками. Комисс=0
avatar
T-800, это только на фьючах или акции тоже? уже неоднократно про 0 комисс слышал про лимитки но у брокеров с которыми работал (Сбер Тинькофф Финам) не встречал. Или все-таки это срочный рынок?
avatar
Илья Нечаев, бОльшая часть фьючи, но и акции тоже есть. На фьчах тоже иногда комисс появляется, когда ставлю лимитку по лучшему бид/аску, но попадаю по рынку. Но такое нечасто.
avatar
T-800, а брокер какой?
avatar
Илья Нечаев, Открытие и Финам. Но теперь видимо ВТБ и Финам будет
avatar

Михаил К., 
1. Я руками тоже торгую. В том числе это позволяет не терять связь с рынком и ощущением рынка. 

2. Стандартный холивар ручная торговля vs алго, не хочется снова эту тему поднимать и обсуждать).

avatar
Михаил К., 
Давно заметил, что алготрейдеры 90% времени и внимания посвящают программированию, инфраструктуре, софту. И от силы 10% — собственно трейдингу. Возможно, потому что им само программирование нравится больше трейдинга.
Качество софта, предназначенного для алгоритмического (роботизированного) трейдинга просто никакое. Это основная причина. Существуют десятки программ для ручного трейдинга. Единицы позволяют какую-никакую автоматизацию. Но при этом все равно остаются по сути терминалами с окошками и кнопочками. (вроде Метатрейдера). Потому что другое не продается. (Сама программа может быть бесплатной, тогда продаются всяческие примочки, готовые алгоритмы, курсы и т.п.). Успешных алготрейдеров ( успешных в смысле способностей написать прибыльный алгоритм) очень мало. Поэтому для профессиональных софтописателей они не интересны. Поэтому только самим.

avatar
Synthetic, даже если так, это двойная работа (даже тройная) — написать софт, научиться (прибыльно!) торговать, и умудриться перенести умение торговать в алгоритмический код.
avatar
Михаил К., это того стоит. Ленивые на бирже долго не задерживаются)
avatar
Михаил К., 
Synthetic, даже если так, это двойная работа (даже тройная) — написать софт, научиться (прибыльно!) торговать, и умудриться перенести умение торговать в алгоритмический код.
 Проблема не в том, что это двойная — тройная работа. Проблема в том, что эти компетенции — умение писать софт, умение прибыльно торговать, умение перенести торговлю в алгоритм -  как правило не пересекаются в пределах одного индивидуума. Поэтому такой подход скорее для команд.
avatar
А почему от WL8 отказались? 

JC-trader ☮, Сыроват-с). Я почти подстроил его под свой подход, но вот с частью execution так и не получилось нормально процесс торговли настроить — ни с их коннектором, ни без их коннектора, я заколебался мучиться и забил. Мне принципиально было чтобы я эту же отрисёченную стратегию мог в торговлю запустить и портфель стратегий тут же бы и торговал — эта часть не пошла.

 

Своя инфраструктура тоже может быть «сыроватой», но ты знаешь, что тебе конкретно щас нужно вот это и вот это и ты берешь и правишь/дебажишь/допиливаешь/добавляешь вот это нужное. В стороннем продукте уровень контроля на порядки меньше, тем более там этот Евген/Юджин со своими тараканами)) — с ними ещё нужно бороться). 

avatar
Replikant_mih, 

Сыроват-с)

Это точно. За что ни возьмись, какой-нибудь баг вылезет. Я до сих пор, в основном, старой шестой версией пользуюсь. Но чтобы ею пользоваться приходится платить за новую :)

JC-trader ☮, Да, потому что нельзя просто помнить как работал нормальный уже устаканенный 6-й велс, не переиспользовать его кодовую багу, написать всё с нуля и не получить долгий период с багами. Ну в смысле я их не обвиняю, я к тому что это вот эти все баги это ожидаемое состояние, ожидаемые явления в описанном контексте.

 

Оно плавает как утка, крякает как утка… но не утка ещё)).

avatar
Replikant_mih, 
не переиспользовать его кодовую багу
:)
avatar
Кирилл Гудков, ыы)
avatar

JC-trader ☮, а не было мыслей перейти на TSLab? тот же C#

Причем TSLab удобнее и меньше ограничений, чем в WLD

PS

Несколько лет торговал через WLD4, потом перевел на WLD6. В итоге пару лет назад благодаря Дмитрию Власову перевел все на TSLab и сейчас очень доволен

avatar
Bearminator, конечно же пробовал TSLab, но остановился уже на первом этапе получения данных. :)
В общем, для моих целей он не годится. Если бы торговал внутри дня Si и Ri, то может это и был бы идеальный вариант, но у меня в основном количественный анализ на американском рынке.
JC-trader ☮, Михаил попал в чат, где программисты обсуждали все что угодно, но только не WL. Там он попал под влияние MT5 ) так уверенно рассказываю, потому что было на моих глазах
avatar
Андрей К, :)
__rtx, если я атакую лучший бил/аск, то я получается тейкер и я плачу комисс?

Как это работает?
avatar

Вот именно из-за таких постов я иногда захожу на смартлаб!

Михаил, спасибо!

avatar
Bearminator, Спасибо большое за приятный отзыв).
avatar

теги блога Replikant_mih

....все тэги



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