{"id":14293,"url":"\/distributions\/14293\/click?bit=1&hash=05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","hash":"05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","title":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u043d\u0438 \u043a\u043e\u043f\u0435\u0439\u043a\u0438","buttonText":"","imageUuid":""}

Личный опыт зарабатывания денег, создавая торговые стратегии на QuantNet

Цель статьи: осветить платформы для создания торговых стратегий QuantNet и Quantiacs.

Целевая аудитория: python разработчики торговых роботов, которые не знают где взять финансовые данные, как проверить алгоритмы и как на этом можно заработать.

Приведена стратегия с платформы QuantNet, которая выиграла 24001 рублей.

Мотивация

Почему платформы QuantNet и Quantiacs?

Конкурентные преимущества по сравнению с другими платформами тестирования финансовых идей:

  • python, среда Jupyter Notebook или JupyterLab;
  • открытый исходный код;
  • финансовые данные: акции, фьючерсы, криптовалюта, товарный рынок, макроэкономические данные, фундаментальные данные компаний;
  • возможность писать и использовать оптимизаторы — весомый аргумент;
  • адекватная система оценки: есть встроенные средства борьбы с подглядыванием в будущее;
  • возможность оффлайновой разработки алгоритмов на своем ПК;
  • возможность заработать на конкурсах;
  • небольшой порог входа.

Участие в соревнованиях.

На платформе мои алгоритмы выиграли 431 572 рублей. Активно посылал их в конкурс с начала 2020 года до августа 2020. Это “долгие” деньги. Отправленная стратегия участвует в 4 конкурсах, самый длительный из которых продолжается год.

Выплаты осуществляются раз в квартал на карту. Призовой фонд за квартал 500 т.р.

В личном кабинете можно посмотреть призы

Приятно порадовало, что компания уплачивает налоги за победителей. Скриншот с сайта налоговой за 2020 год. Большая часть конкурсов закончилась в 2021, поэтому налоги за 2021 год увижу в следующем году.

Скриншот с сайта налоговой за 2020 год.

На Quantiacs и QuantNet пока малая конкуренция среди участников, поэтому большие шансы занять призовое место.

Также, на Quantiacs призы могут быть больше, всё будет зависеть от доходности стратегии в “живом” периоде. На одно соревнование выделяется 2 миллиона долларов, 7 призовых мест. Участник выигравший финансирование получает 10% от прибыли алгоритма. Подробные условия описаны в правилах.

Реальная стратегия из конкурса.

Ниже пример стратегии, которая выиграла 24001 рублей.

Идея: Если индикатор TRIX по индексу SPX (S&P 500) за 5 торговых дней больше -0.04, то открываем позицию по инструментам 'NYSE:ABT', 'NYSE:ANTM', 'NYSE:BA', 'NYSE:NEE', 'NYSE:PGR'.

import xarray as xr import numpy as np import pandas as pd import qnt.data as qndata # data loading and manipulation import qnt.stats as qnstats # key statistics import qnt.ta as qnta # indicator library import qnt.output as qnout from IPython.display import display # display function for fancy displaying: import plotly.graph_objs as go # plotly lib for charts: # «market_data» is xarray.DataArray that contains stocks historical data. market_data = qndata.load_data(min_date="2015-01-01", dims=("time", "field", "asset"), assets=['NYSE:ABT', 'NYSE:ANTM', 'NYSE:BA', 'NYSE:NEE', 'NYSE:PGR']) def get_SPX(market_data): index_name = 'SPX' index_data = qndata.index.load_data(assets=[index_name], min_date='2015-01-01', forward_order=True) spx_data = index_data.sel(asset=index_name) spx_data = xr.align(spx_data, market_data.isel(field=0), join='right')[0] return spx_data def get_strategy(data, index_data, trix_period, border): # The trading algorithm should define the fractions of capital which will be distributed # to the assets (allocation weights). # A positive weight means a long position (buy), a negative value means a short position (sell). # Note that algorithm decisions can use all data available at the close of the session, # and will be applied at the opening of the next day's session. # The chosen allocation weights are translated to positions # (number of contracts to be bought/sold) immediately after the close of the session # and transactions are executed at the open of the next day. def get_trix(prices, index, periods): result = prices.copy(True) for a in prices.asset.values: result.loc[{"asset": a}] = qnta.trix(index, periods) return result trix = get_trix(data.sel(field='close'), index_data, trix_period) positive_trend = trix > border weights_ = data.sel(field='is_liquid') # we trade only liquid stocks weights_ = weights_.where(positive_trend) weights_ = weights_.fillna(0) return weights_ def show_performance(market_data, weights): stats = qnstats.calc_stat(market_data, weights) display(stats.to_pandas().tail()) equity_curve = stats.loc[:, "equity"] # draw performance chart: fig = go.Figure(data=[ go.Scatter( x=equity_curve.time.to_pandas(), y=equity_curve, hovertext="Equity curve", ) ]) fig.update_yaxes(fixedrange=False) fig.show() spx = get_SPX(market_data) weights = get_strategy(market_data, spx, 5, -0.04) show_performance(market_data, weights) qnout.write(weights)

Процесс создания алгоритмов.

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

Цикл создания стратегии:

  • Определиться какие данные будем предсказывать.
  • Написание алгоритма, выделение из него параметров.
  • Оптимизация параметров. Подбор мета параметров или подбор инструментов на которых стратегия будет работать, или и то и то.
  • Оценка статистики стратегии.
  • Проверка стратегии на заглядывание в будущее.

Данные.

Платформа предоставляет исторические данные для основных мировых финансовых рынков.

Датасет включает в себя информацию об:

Можно предсказывать один тип инструментов, используя другой. Пример применения машинного обучения для предсказания фьючерса на биткоин (BTC Futures), используя данные товарного рынка (Commodity Data)

Как разрабатывать алгоритмы.

Лучше посмотреть на то, что есть в документации (тут и тут) или в примерах в личном кабинете.

Платформа предоставляет примеры алгоритмов основанных на:

  • техническом анализе и технических индикаторах;
  • фундаментальном анализе компаний.

Бэктестер основан не на сделках, а на весах финансовых инструментах в портфеле.

Алгоритмы используют финансовые данные для формирования весов, пропорционально которым распределяется капитал. Положительный вес означает длинную позицию (покупку), отрицательное значение — короткую (продажу).

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

Нюанс, комиссия за сделки не учитывается, есть только проскальзывание. При изучении исходного кода видно, что для разных типов инструментов оно разное. Исходники открытые, это можно поменять.

При написании алгоритма выделяем параметры, которые будем оптимизировать. Желательно использовать минимум параметров: пять — ресурсоемко подбирать и увеличивается риск переобучения, предпочитаю стратегии с 3 параметрами.

Как оптимизировать алгоритм.

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

Готовые примеры оптимизаторов тут и тут.

Recovery factor — альтернативный параметр для оптимизации, но на платформе его нет. Он показывает на сколько быстро стратегия восстанавливает капитал после просадки. Можно рассчитывать в двух вариантах: а) деление чистой прибыли на максимальную просадку; б) деление чистой прибыли на сумму всех просадок.

Оценка стратегии.

Если в результате оптимизации находятся стратегии с большим Sharp ratio, это сигнал о заглядывании в будущее (Forward looking).

Стратегия переписывается под использования в функции бэктестер или ml бэктестер. Они применяют пользовательский алгоритм к срезам данных, отсекаются “будущие” данные, в результате можно увидеть действительный Sharp ratio.

Исходный код открытый, поэтому можно написать стратегию таким образом, что она всё равно будет смотреть в будущее. Тут можно использовать подход “предварительной проверки” (pre-check) или отправить стратегию в соревнования. Сама соревновательная платформа пересчитает алгоритм. Внутри, стратегии предоставляются ежедневные срезы данных, поэтому заглянуть в будущее проблематично.

Заключение

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

Планирую попробовать использовать стратегии в реальной торговли. Пробую применять библиотеку для предсказания индекса РТС на московской бирже.

В случае интереса к статье могу написать об этом отдельно.

P.S.

Это моя реферальная ссылка на Quantiacs, регистрируйтесь переходя по ней. Если ваша стратегия пройдёт фильтры вы получите дополнительные 15 USD.

Вопросы по платформе лучше задавать в телеграм чате или на форуме.

Есть Ютуб видео, в котором рассказывается о платформе:

Теги: алготрейдинг, разработка, алгоритмическая торговля, финансы, квантитативные исследования, соревнования в финансовой сфере

0
2 комментария
Artem Bokanhel

Попахивает рекламной статьей, а стратегия простой подгонкой (удивительно вообще почему за такое платят, но скорее всего это просто рекламный трюк выложить то, что никому не нужно), почему были выбраны эти тикеры, а не другие?
ABT', - medica specialties
ANTM' - precious metals
BA', - aerospace & defense
NEE', - electric utilities
PGR' - casualty insurance
Что такого в этом TRIX- просто скользящая средняя... почему это должно быть эффективно?
Данные с 2015 года, почему такая маленькая выборка? Как минимум с 2010...
Выигрыш за квартал 500 тыс.руб - это просто работа за бесплатно, вы можете ничего не занять, но зато потратите много своего времени впустую..
500 тыс. рублей - это ежемесячная зарплата одного или нескольких квантов.. Максимальный приз за месяц 66 тыс.рублей.. и кто в здравом уме будет заниматься количественными финансами за такие деньги?
Уж лучше тогда Quantiacs и другие зарубежные платформы, больше выигрыши и больше перспективы

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

Ответить
Развернуть ветку
Vyacheslav B
Автор

Конечно. Это указано в цели статьи в первом предложении.

Написал оптимизатор, который нашёл эту стратегию (и другие), поэтому вопросы "почему" к оптимизатору.

Зачем тратить своё время, когда можно автоматизировать процесс по максимуму?

Моя задача выиграть конкурс, а не создать хорошую и крепкую стратегию. Почувствуйте разницу.

Кстати поэтому период тестирования равен конкурсному.

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

Можно найти хорошую стратегию на одной платформе и переписать её на другую, где больше профит.

Ответить
Развернуть ветку
-1 комментариев
Раскрывать всегда