Привет линоксоводам и алготрейдерам.
Видел несколько тем на этом форуме по алготрейдингу, но они уже в архиве, написать туда нельзя. В личку авторам написать тоже нельзя. А мне очень нужно с ними пообщаться. Изначально меня привлекла вот эта тема: Открываю исходники платформы разработки торговых алгоритмов В ней засветились еще несколько трейдеров, и ссылки на другие темы. Надеюсь кто-нибудь из них сюда заглянет.
Я делаю библиотеку для алготрейдинга. Которая (в мечтах) должна дорасти вот прямо таки до фреймворка. Стек кросплатформенный (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/