LINUX.ORG.RU

Делаю фреймворк для алготрейдинга, ищу единомышленников (Python/Rust)

 , ,


2

4

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

Я делаю библиотеку для алготрейдинга. Которая (в мечтах) должна дорасти вот прямо таки до фреймворка. Стек кросплатформенный (Python, Rust, eframe/egui), но сам веду разработку под линуксом, и на других ОС не тестировалась, так что проект линуксовый, но с возможностью запуска на других ОС, если надо. Идея такая:

== Суть и мотивация

Каждый алготрейдер, так или иначе, решает для себя задачи: получения и обновления исторических данных, проверки торговых гипотез, коннекторы к брокерам и логику управления торговыми стратегиями. На разработку подобных велосипедов уходит от пары месяцев до нескольких лет, смотря как делать.

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

== Модули и возможности

  • analyse: инструменты статистического анализа исторических данных
  • connect: коннекторы, пока доступно подключение только к Тинькофф брокеру (Т-банк)
  • core: структуры для удобной работы с данными на «трейдерском языке»: график, таймфрейм, ордер…
  • data: загрузка и обновление исторических данных. Пока только с Московской биржи
  • strategy - база для создания своих стратегий
  • tester: простой, но очень быстрый бэк-тестер
  • trader: модуль запуска стратегий в боевом режиме
  • terminal: GUI терминал для ручной торговли
  • report: построение отчетов
  • informer: уведомления в telegram
  • gui: утилиты для просмотра результатов тестов и др.

== Что уже сделано и что планируется

data - единственный модуль в системе написанный на Python, остальное на Rust. Здесь cli утилита для загрузки рыночных данных с мос.биржи, пример работы: «avin-data download -i MOEX_SHARE_SBER». Это обертка над moexalgo, с более простым api и автоматически раскладывает данные по папкам в формате parquet. Раньше использовал postgres но это медленно.. А система целится в реал-тайм работу с тиками и стаканами, что питону не по зубам. В планах - другие источники данных кроме мосбиржи, разные форматы сохранения данных (csv, postgres - опционально, хотя не вижу в этом смысла, parquet рулит).

core - тут все уже довольно стабильно, и многое даже с документацией и док-тестами на docs.rs. Тут общие структуры которые используются всеми остальными модулями. Бар, график, таймфрейм, брокер, аккаунт, актив, футпринт (кластерные графики). Тут дальше только улучшать документацию, делать еще более удобное api. Оно сделано в духе Pine от TradingView, ну насколько это возможно на Rust…

strategy - базовый «класс» для стратегий, наследуемся и пишем свою логику. Ну только не класс а trait, написал класс и наследуемся чтобы людям не знакомым с Rust тоже было понятно. Стратегия принимает биржевые события (новый тик, бар, ордер исполнен) и отправляет экшены (выставить ордер, отменить ордер…).

tester - ну базово работает. Причем весьма быстро. Прогон данных 1 года на минутках занимает 10 секунд. Синхронка. В gui результаты на графике показывает, итоговую табличку строит. Но тут еще работы на пятилетку. Строить кривую капитала, считать всякие модные коэффициенты типо Сортино, выдавать красивые отчетики с диаграммами.

trader - опять же базово работает, к брокеру подключается, загружает стратегию, ордера отправляет и тп. Асинхронка.

terminal - По задумке это кастомный терминал с возможностью добавления своих виджетов со своей аналитикой. То есть нечто большее чем просто индикаторы. А что нибудь расчитанное на периоде за годы, сохраненное и загруженное, а не в реалтайме считающееся, хотя можно и в реал-тайме. Все можно, по задумке. На практике там пара моих виджетов со статистикой по трендам и соответственно расчеты вероятностей текущей картины на графике. Я не знаю как правильно сделать плагины. По идее тут должны быть бинарные плагины которые пользователи пишут для себя или для сообщества. А в библиотеке должна быть база, ну как NeoVim или VSCode, только терминал. Не знаю пока как это сделать, но с годами разберусь.

analyse - там пока только cumulative distribution function. Добавлю что-то еще, но по задумке это тоже раздел для плагинов пользователей.

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

informer - тоже не начинал.

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

== Чего хочу

Ищу единомышленников, программистов, трейдеров, математиков, вместе дорабатывать систему и зарабатывать на бирже. Круг по интересам для обмена опытом, переопыления идеями и возможно постепенно формирования узкого круга, команды трейдеров, которые вместе работают над стратегиями объединяя свои компетенции и делят профит.

== Репозитарий проекта

https://github.com/arsvincere/avin

== Зачатки документации

https://docs.rs/avin/latest/avin/



Последнее исправление: alexavin (всего исправлений: 2)
Ответ на: комментарий от Chiffchaff

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

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

alexavin
() автор топика
Ответ на: комментарий от Chiffchaff

то всё получится и без идеального фреймворка. Если нет понимания, то в мире появится ещё один полузаброшенный «проект» на GitHub.

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

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

alexavin
() автор топика
Ответ на: комментарий от shalom_

Суть алкотрейдинга - пить пиво и шортить сегежу на фул плечи

Я пробовал. Не прибыльно. Лучше без пива.

alexavin
() автор топика
Ответ на: комментарий от anonymous

Ты собрался котировки сам считать на основе стаканов и тиков?

Нахрена? Их в том же стриме раздают. На стаканах и тиках я считаю разные метрики в реалтайме.

alexavin
() автор топика
Ответ на: комментарий от alexavin

У фреймворка нет цели быть идеальным. Я пишу инструменты для себя.

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

в гуях лучше смотреть сводки за минуты/часы/дни. чтоб это было сразу на экране. какую нибудь статистику. а все стаканы, объемы и прочее в реальном времени - должно быть под капотом. зачем тебе смотреть в стакан, если ты хочешь «алгоритмы»?

usi_svobodi
()
Ответ на: комментарий от alexavin

На данный момент потерял 600тр.

Ничё, с алготрейдингом у тебя всё впереди, потеряешь всё остальное.

yvv1
()
Ответ на: комментарий от alexavin

Чтобы потом предложить свой алготрейдинг какой-нибудь большой конторе для встраивания в их сервис?

anonymous
()
Ответ на: комментарий от usi_svobodi

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

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

Т не посчитает мне апостериорные вероятности размеров трендов в зависимости от того какой сейчас тренд вырисовывается на графике.

Т не посчитает мне вероятность следующей волны тренда при данных объемах по другим волнам с учетом направления активных сделок.

Т не посчитает суммарный дисбаланс покупок/продаж за день.

Т не посчитает CDF по объемам, скорости, амплитуде…

То что есть в Т - прекрасно, но можно гораздо больше информации извлекать из биржевых данных.

И еще два десятка метрик можно привести…

alexavin
() автор топика

И кстати, вот именно для этого юзкейса julia была бы просто идеальным выбором, и программировать на ней несравнимо проще, чем на расте, и даже проще, чем на питоне.

yvv1
()
Ответ на: комментарий от alexavin

А, ты думал тебе расскажут как торговать прибыльно?))

shalom_ ★★
()
Ответ на: комментарий от alexavin

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

MoldAndLimeHoney ★★
()
Ответ на: комментарий от usi_svobodi

в гуях лучше смотреть сводки за минуты/часы/дни. чтоб это было сразу на экране. какую нибудь статистику. а все стаканы, объемы и прочее в реальном времени - должно быть под капотом. зачем тебе смотреть в стакан, если ты хочешь «алгоритмы»?

Зачем смотреть в стакан? А зачем скальперы в стакан смотрят? Многие из них на график вообще не смотрят, только по стакану определяют ТВХ и стоп и выход. И я так делал. И на стакане люди наторговывают намного больше чем на графиках, если в процентах брать, на небольших депозитах, до 1млн, хорошие скальперы делают по 3-5% в день стабильно.

Я комбинирую информацию из стакана, потока тиков, и рисунка тренда. И когда я начал это делать, я наконец-то начал торговать в плюс.

И мне нужны блин тики и стакан в реал тайме, более того, чтобы перестать беспрерывно пялиться в монитор и щелкать тикеры, мне нужна программа чтобы мониторить одновременно 50 тикеров.

А построив обобщения над 50 наиболее ликвидными тикерами и тем что сейчас в них происходит, я смогу еще точнее выдавать прогнозы.

alexavin
() автор топика
Ответ на: комментарий от Chiffchaff

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

Ну т.е. мог бы просто положить на депозит и «зарабатывать» больше.

MoldAndLimeHoney ★★
()
Ответ на: комментарий от Chiffchaff

скурпулезная

Скрупулезная

Скрупулёзный ты наш.

LamerOk ★★★★★
()
Ответ на: комментарий от MoldAndLimeHoney

Ну т.е. мог бы просто положить на депозит и «зарабатывать» больше.

так не интересно )

Cergoo
()
Ответ на: комментарий от MoldAndLimeHoney

Да там есть разные стратегии трейдинга. Сделать все по-быстрому - одна из них. А есть стратегия по-умному вдумчиво прикинуть, что к чему, а потом действовать. Это другая. Автор топика желает же научить компьютерного болвана (прости, Алиса!). Это - третье. А есть еще великий ИНСАЙД!

anonymous
()
Ответ на: комментарий от LamerOk

Да тоже что и в QLUA, ну хватает тебе его возможностей - ну ок. У меня изначально было понимание что я хочу считать по данным, и какие стратегии писать, и посмотрев на MT понял что там это реализовать не получится. По факту же текущие стратегии еще сложнее чем думал вначале.

alexavin
() автор топика
Ответ на: комментарий от anonymous

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

MoldAndLimeHoney ★★
()
Ответ на: комментарий от MoldAndLimeHoney

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

Ничего не изменилось. Теперь надо покупать места еще ближе. Еще круче декомпилить драйверы сетевых карт, и еще больше их разгонять. Но это все HFT, где счет на милисекунды. Я торгую на горизонте минут, тут это все не важно. Но планирую прийти к горизонту секунд и забирать движения по 0.15%.

alexavin
() автор топика
Ответ на: комментарий от MoldAndLimeHoney

Ну т.е. мог бы просто положить на депозит и «зарабатывать» больше.

Скорее всего, да. Но я же говорю - это хобби, на которое я трачу не более определённого процента сбережений.

Chiffchaff
()
Ответ на: комментарий от alexavin

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

usi_svobodi
()
Ответ на: комментарий от MoldAndLimeHoney

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

А ты попробуй. Пока все одиночки кулибины усераются только. И до уровня лучших трейдеров ручками никто не доходит со своими алгоритмами и нейронками.

Но фонды уже давно используют нейронки на разных временных горизонтах.

Нейронки оверфитят на биржевых данных, там соотношение сигнал шум 99 к 1. Нужно сначала вычленить информацию из этих данных, а на ней уже обучать. Но чтобы вычленить эту информацию нужно быть матерым трейдером, понимать рынок, понимать нюансы и закорючки на графике, понимать плиты в стакане…

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

Делают нейронки делают. И результаты они делают хорошие. И в ближайшие 50 лет будут еще сильно лучше, и ох туго придется трейдерам торгующим ручками, им становится все сложнее и сложнее с 2014г когда на биржи массово пришли роботы.

alexavin
() автор топика
Ответ на: комментарий от MoldAndLimeHoney

Ну т.е. мог бы просто положить на депозит и «зарабатывать» больше.

Ну и на качелях типа тех, что были в 2019 году с Яндексом, можно было заработать очень большие деньги, намного больше и быстрее, чем с депозитом. Но мне стало ссыкотно, потому что, как известно, рынок может оставаться дольше в нелогичном состоянии, чем есть времени и денег у произвольно взятого конкретного трейдера. Потому вложил тогда ровно столько, сколько было не жалко.

Потом, конечно, жалел немного, что не вложил все сбережения (и не занял ещё). Но так… Всех денег всё равно не заработаешь, да и задним умом все крепки.

Chiffchaff
()
Ответ на: комментарий от alexavin

Зачем смотреть в стакан? А зачем скальперы в стакан смотрят? Многие из них на график вообще не смотрят, только по стакану определяют ТВХ и стоп и выход. И я так делал. И на стакане люди наторговывают намного больше чем на графиках, если в процентах брать, на небольших депозитах, до 1млн, хорошие скальперы делают по 3-5% в день стабильно.

ты явно не понимаешь, что тебе нужно.

И мне нужны блин тики и стакан в реал тайме, более того, чтобы перестать беспрерывно пялиться в монитор и щелкать тикеры, мне нужна программа чтобы мониторить одновременно 50 тикеров.

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

usi_svobodi
()
Ответ на: комментарий от alexavin

И в ближайшие 50 лет будут еще сильно лучше

Уверен, что через 50 лет никаких бирж уже не будет. Разве что, биржа труда, и то, не уверен.

Chiffchaff
()
Ответ на: комментарий от MoldAndLimeHoney

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

Это нужно для специальной олимпиады разновидности трейдинга - высокочастотного. Обычный васян можен комфортно сливать бабкины накопления из мамкиной хруёщвки.

LamerOk ★★★★★
()
Ответ на: комментарий от usi_svobodi

Мне просто нравится иногда торговать руками, и смотреть на графики. Проект делаю для себя, что хочу, то и ворочу. Да это велосипед на 90%, но кое что мой терминал умеет, чего не умеет Т. И я в нем хочу торговать.

Роботы конечно это все под капотом сделают, и даже на питоне 1-5-10 тикеров потянули бы одновременно. Но у меня цели дальше и больше.

И кроме терминала в библиотеке еще куча всего, что каждый алготрейдер делает для себя. Об этом речь в первую очередь. Если бы такая библиотека была когда я начинал… да даже если бы я тогда нашел OS Engine - я бы не стал это все писать, изучил бы C# форкнул и работал бы. Но теперь уже поздно отступать, слишком много сделано.

alexavin
() автор топика
Ответ на: комментарий от alexavin

только по стакану определяют ТВХ и стоп и выход.

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

LamerOk ★★★★★
()
Ответ на: комментарий от usi_svobodi

ты явно не понимаешь, что тебе нужно.

В случае со стаканом да, больше не понимаю чем понимаю. В библиотеке стакан вообще еще не реализован, только кластеры недавно закончил. В этом году уже сделаю.

В стакане я бы взял метрики хотя бы теже что дает OBStat мосбиржа. Но она отдает их с задержкой в 5 минут даже на платной подписке. Я понимаю что за неделю работы я это сделаю сам на данных от Т. И с нарезкой по любому таймфрейму а не только 5М как на мосбирже.

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

У меня нет окончательно сформированного набора стратегий. И нет понимания какой будет торговля через 5 лет. Но есть много областей где я пробую: и алгоритмы на свечах, и советники, и терминал для ручной торговли с дополнительными виджетами статистики.

Первые вторые пятые и 50-е пробы не сработали. Но после 50-й попытки найти какие то закономерности в биржевых данных у меня начало получаться. Куда все это приведет не знаю, мне и процесс интересен, и прибыль уже вырисовывается.

alexavin
() автор топика
Ответ на: комментарий от alexavin

и посмотрев на MT понял что там это реализовать не получится

Давай конкретику - что именно ты хотел реализовать в MT?

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Это нужно для специальной олимпиады разновидности трейдинга - высокочастотного

Там уже все давно занято и расписано по миллисекундам :)

t3n3t
()
Последнее исправление: t3n3t (всего исправлений: 1)
Ответ на: комментарий от LamerOk

Давай конкретику - что именно ты хотел реализовать в MT?

Хах, хотел 2 года назад… смешно вспоминать. Я хотел посмотреть тренды по Ларри Вильямсу поискать в них закономерности, и хотел перебором в лоб посчитать все возможные свечные паттерны (наивно да, их миллиарды в миллиардной степени, то есть большинство паттернов вообще еще не появилось). В принципе это не вопрос сделать в MT, но я понимал что мне нужно хранить всю эту историю и что мне нужен полноценный язык программирования для работы с данными, а не скриптовый.

Сейчас я анализирую данные на питоне в Jupyter, polars, plotly. Там это гибко быстро удобно. Найденные закономерности уже кодю в расте. Чтобы иметь возможность считать это все за доли секунды при торговле. МТ тут слабо подходит. Чем еще плох МТ спроси у Observer, мне как то он сразу не понравился и все… субъективно. Но спустя 2 года нисколько не жалею что не пошел во все эти Pine, Qlua, MT… там возможности ограничены больше чем при работе на полноценном языке программирования.

alexavin
() автор топика
Ответ на: комментарий от cocucka_B_TECTE

Какие паттерны ты собрался ловить в хаосе?

И все таки они там есть. Если бы их не было невозможны были бы прибыльные трейдеры. И еще посчитай какова вероятность сделать 50 сделок в плюс подряд? И три дня подряд выдавать серии по 40-50 сделок в плюс? Это уже из моих рекордов. Закономерности есть.

alexavin
() автор топика
Ответ на: комментарий от MoldAndLimeHoney

почему весь алготрейдинг до сих пор не заменен нейросетями.

У них же денег нет. Вот если ты васян с деньгами, то без проблем, можешь запрячь нейросеть сливать свои деньги)

goingUp ★★★★★
()
Ответ на: комментарий от cocucka_B_TECTE

Долгосрочные паттерны очевидные есть. Допустим, как ни крути, а нефти и газа на шарике больше не становится, тогда как потребности сильно растут (например, в Голландии очередь на подключение предприятий к источникам энергии, достигает сейчас чуть ли не 10 лет).

Потому понятно, что в долгосроке, акции нефтегазовых компаний будут расти, что бы там не вещали говорящие головы про блестящее «зелёное» будущее. Кстати говоря, ещё году в 2019 схлестнулся в коммантах со сторонником внушаемой повестки, который предлагал поспорить, что акции «зелёных» компаний будут только расти (но не поспорил, конечно). Смешно было наблюдать, как компании из его списка банкротились в 2022 году, когда реальное положение дел стало невозможно скрывать фиговым листочком субсидий.

Но можно ли на таких долгих периодах заработать? Не знаю… Слишком много неопределённости всё-таки. Кто-то, может быть, вкладывался в акции иракской и ливийской нефтедобычи перед 2003 и 2011.

Chiffchaff
()
Ответ на: комментарий от goingUp

Поставить @ перед ником

Спасибо, завтра тогда перечитаю темы и найду ники кто реально по делу писал, и был заинтересован в подобном проекте и общении по теме.

alexavin
() автор топика
Ответ на: комментарий от Chiffchaff

Но можно ли на таких долгих периодах заработать? Не знаю…

Очевидно что возможно. В списке форбс несколько человек - фондовые инвесторы.

alexavin
() автор топика
Ответ на: комментарий от alexavin

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

Скриптовый язычок MT умеет прозрачно работать с нативным кодом и даже поддерживает интеграцию с С/С++ на уровне среды. То есть буквально, написание dll’ок под MT - это второе по популярности хобби доморощенных "трейдеров" после написания "плагинов" на собственно скриптовом язычке. Как ты это проглядел - для меня загадка.

LamerOk ★★★★★
()
Последнее исправление: LamerOk (всего исправлений: 2)
Ответ на: комментарий от alexavin

В списке форбс несколько человек - фондовые инвесторы.

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

Chiffchaff
()
Ответ на: комментарий от LamerOk

Скриптовый язычок MT умеет прозрачно работать с нативным кодом и даже поддерживает интеграцию С/С++ на уровне среды. То есть буквально, написание dll’ок под MT - это второе по популярности хобби доморощенных «трейдеров» после написания «плагинов». Как ты это проглядел - для меня загадка.

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

Но я не жалею. В любом случае начав с утилиты по загрузке данных, я заново учился программировать, после перерыва в 15 лет то… А теперь уже без разницы через МТ или через самописные вещи ордера выставлять и данные получать.

alexavin
() автор топика
Ответ на: комментарий от cocucka_B_TECTE

Мдэ, с тервером у тебя явно плохо

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

Я хотел сказать что вероятность такого события ппц как мала, 1/2**50*3. Что не так?

alexavin
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)