3 ключа к алгоритмическому криптотестированию PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

3 ключа к алго-тестированию криптовалюты

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

3 ключа к алгоритмическому криптотестированию PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Давайте сразу перейдем к делу: 3 ключа к бэктестированию:

  • свеча низкие значения для остановок
  • управления цены исполнения
  • итеративно сравнение бэктеста с фактическими данными

Это означает, что необходимо тщательное бэктестирование. много усилий (неудивительно!), но давайте углубимся в это дальше.

Многие установки для бэктестинга используют свечи. Закрыть значение для каждого тика. В реальной торговле со стоп-лосс ордерами именно минимальное значение тика остановит вашу позицию.

Давай яoок, на примере. На приведенном ниже графике BTC давайте представим, что мы выполняем ордер ПОКУПКА на синей линии нижней зеленой свечи, примерно на полпути от минимума к максимуму для этого тика.

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

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

Цена исполнения может иметь каскадный эффект на прибыль сделки.

Рассмотрим две позиции: одна открыта в 2 (если использовать круглые числа), вторая в 20.00, по немного более высокой (рыночной цене покупки). Эта [относительно небольшая] разница в 20.50 единиц может иметь каскадный эффект от прибыли позиции с течением времени. Почему? Потому что в последующем тике позиция 20.50 может быть остановлена, поскольку минимальное значение может быть ниже настройки стоп-лосса. Тем временем первая позиция сохраняется еще много тиков до прибыли. Большая разница!

Чтобы справиться с этим, нам нужно оценить наши цены исполнения…

Важно помнить, что задача бэктестинга заключается в оценке доходности модели/стратегии при ее использовании в прошлом.

Ваш код бэктестинга не знает, какую цену получила сделка (прошедшее время) на стороне ПОКУПКИ или ПРОДАЖИ.

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

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

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

Не существует реального ответа на вопрос, где именно следует оценивать цену исполнения, важно понимать, что вы не можете получить это точно в своих симуляциях. Предполагать цену ОТКРЫТИЯ для ваших ордеров на ПОКУПКУ, как правило, оптимистично и не является идеальным подходом. Аналогично, если предположить, что цена ЗАКРЫТИЯ для ваших ордеров на ПРОДАЖУ, вероятно, будет сильно отклоняться от фактических результатов.

КУПИТЬ на рынке

Вот несколько вариантов на выбор для рыночных ордеров BUY:

а) оценить цену исполнения посередине (или некотором заранее определенном расстоянии) между ОТКРЫТИЕМ и ЗАКРЫТИЕМ тика

б) оценить цену исполнения посередине (или некотором заранее определенном расстоянии) между LOW и HIGH тика.

в) выбрал случайную цену между OPEN или LOW и CLOSE или HIGH.

Хотя поведение рынка имеет тенденцию быть случайным по своей природе, я не сторонник (c), потому что ваш код бэктеста не будет идемпотентным; он будет возвращать разные результаты каждый раз, когда он запускается с одними и теми же данными. Это грязно.

Вариант (б) указывает на более волатильный рынок, а вариант (а) — на меньшую. Это зависит от вас, но выбор должен быть сделан. Вы можете, например, использовать индекс волатильности, такой как CVI а затем выберите в соответствии с этим значением за период, в котором вы проводите тестирование.

Фиксация прибыли лимитными ордерами SELL

Вот несколько вариантов на выбор для фиксации прибыли SELL лимитные ордера:

а) оценить цену исполнения посередине (или некотором заранее определенном расстоянии) между ОТКРЫТОМ и ВЫСОКИМ тиком.

б) оцените цену исполнения посередине между CLOSE и HIGH тика.

в) выбрал случайную цену между указанными выше значениями свечи

Стоп-лосс SELL лимитные ордера

Вот несколько вариантов на выбор для стоп-лосс лимитных ордеров SELL:

а) оценить цену исполнения посередине между ОТКРЫТИЕМ и ЗАКРЫТИЕМ тика

б) оцените цену исполнения посередине между CLOSE и LOW тика.

в) выбрал случайную цену между указанными выше значениями свечи

Обратите внимание на использование значений LOW и HIGH в зависимости от ордера. позиция. Ордер на продажу с лимитом фиксации прибыли работает с растущей ценой, тогда как ордер на продажу с превентивным лимитом стоп-лосс работает с падающей ценой. Оба, скорее всего, столкнутся с разрывами, превышающими предельные значения!

Работа с гэпами вниз по прошлым лимитным ордерам стоп-лосса

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

лимитный ордер стоп-лосс, показанный на графике Binance TradingView

Помните, что многие торговые биржи не поддерживают рыночные ордера стоп-лосс, например. Binance, поэтому вы вынуждены использовать лимит стоп-лосса приказы защищать свои позиции. Лимитный ордер стоп-лосс имеет «стоп-цену» и «лимитную цену», первый вызывает лимитную продажу по цене второго.

Многие биржи, такие как Binance, не поддерживают лимитные ордера стоп-лосс.

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

Учет ордеров на продажу по фиксации прибыли

Если ваше торговое оборудование поддерживает модели фиксации прибыли (так и должно быть), при которых позиция закрывается с прибылью после достижения уровня выхода, этими ордерами следует управлять агрессивно.

В этом случае рыночный ордер оставит прибыль на столе, поэтому лучше сделать лимитный ордер на продажу по определенной цене.

Сильный подход при получении прибыли по позиции — это получить верхнюю часть книги ордеров (см. выше) и установить лимитную цену ПРОДАЖИ на одну из этих цен. Скорее всего, в данный момент он будет исполнен по более высокой цене (прибыли), чем рыночный ордер.

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

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

Если вы итеративно не сравните результаты бэктестинга с фактическими результатами торговли, вы не сможете быть уверены в своем бэктестировании.

Вот конкретный пример того, как этого добиться:

  • запустите свою торговую установку в течение определенного периода времени, например. 24 часа
  • регистрируйте результаты: каждую сделку, каждый выход, каждый стоп-лосс
  • по истечении этого периода запустите код бэктеста в тот же период.
  • сравните результаты бэктеста с вашими фактическими результатами!

Подробно сравните каждую сделку. Какие предположения, сделанные в вашем коде бэктестинга, не отражают реальную торговлю?

Какие есть отличия?

  • ваш бэктест оптимистичен? Если да, то где? как? почему?
  • ваш бэктест слишком пессимистичен?

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

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

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

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

Некоторые примеры того, что я нашел при этом:

  • бэктест был слишком оптимистичен в отношении цен LIMIT SELL, в реальной торговле часто возникали ситуации гэпа вниз, которые сокращали прибыль
  • бэктест был слишком оптимистичен в отношении цен исполнения ПОКУПКА, в реальной торговле редко можно было добиться исполнения тиковой цены открытия
  • бэктест не фиксировал ордера на продажу STOP-LOSS при низких значениях в пределах тика, в реальной торговле это приводило к преждевременному закрытию позиций

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

автоматическая настройка лимитного ордера торговой платформы на Binance

Тестирование вашей торговой модели на основе алгоритма — тяжелая работа! Это не должно вызывать удивления. Здесь нет «легкого пути».

Source: https://medium.com/@gk_/3-keys-to-algo-crypto-backtesting-99f006cfd390?source=rss——-8—————–cryptocurrency

Отметка времени:

Больше от Medium