В процессе загрузки ресурсов... загрузка...

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

Автор:Доброта, Создано: 2019-09-09 11:46:24, Обновлено: 2023-11-07 20:51:21

img

Резюме

img

Что самое важное при обратном тестировании торговой стратегии? скорость? показатели производительности?

Ответ - точность! Цель обратного теста заключается в проверке логики и осуществимости стратегии. Это также значение самого обратного теста, другие второстепенны. Результаты обратного теста, которые действительно отражают исторические данные стратегии, имеют эталонное значение. Эти, казалось бы, идеальные кривые обратного теста могут рассказать хорошую историю, но не могут быть выполнены в реальной рыночной среде.

Какие данные необходимы для обратного тестирования

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

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

img

Фактически, данные от биржи, отправляющей обратно, не содержат эти данные Бар, только данные Tick. Итак, что такое данные Tick? Вы можете изобразить данные в бирже как реку. Эта река содержит подробные данные для каждого заказа. Данные Tick - это кусок в потоке данных. Частота составляет 2 куска в секунду. это воспроизведение определенной рыночной ситуации.

Затем, данные Бар основываются на данных Tick и делятся в соответствии с временным периодом. 1-минутные данные Бар состоят из данных Tick в течение 1 минуты, 5-минутные данные Бар состоят из данных Tick в течение 5 минут и так далее. Он сформировал различные минутовые графики, часовые графики, дневные графики и так далее. 1-минутная линия K имеет только один бар данных, но может содержать 120 данных Tick. Поэтому, исторические данные бэкстеста можно разделить на: данные Бар и данные Tick, и количество данных в данных Tick намного больше, чем количество данных Bar в том же цикле.

Проверка на базе данных Бар

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

  • Экстремальные цены

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

img

  • Вакуум цен

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

Например: текущая K-линия колеблется вокруг цены 5000, и она внезапно поднимается до 5100 вблизи закрытия рынка, и в середине почти нет ожидаемых заказов и транзакций.

  • Кража цен и будущие данные

Я считаю, что многие количественные трейдеры столкнулись с такими ямами, и большинство из этих 45-градусных угловых кривых обратного теста происходят от этого. Чтобы облегчить понимание всем, позвольте мне привести еще один пример: мы знаем, что одна линия K имеет 4 цены. Если это 1 минутовая положительная линия k, то образование этой линии K должно быть: цена открытия >>> низкая цена >>>> высокая цена >>> цена закрытия.

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

Если линия K появляется следующим образом: цена открытия 4950, самая низкая цена 4900, самая высокая цена 5100, цена закрытия 5050, нормальная положительная линия K. Ваша стратегия такова: если последняя цена превышает предыдущую самую высокую цену 5000, купить длинный, и установить стоп-лосс 1% после открытия позиции, то есть, когда цена опустится ниже 4950, он будет преобразовывать стоп-лосс.

Ладно, давайте начнем тест:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Earned 1% when the market closed

но реальная ситуация может выглядеть так:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Soon the price begins to fall
Continue to fall to 4949
Stop loss signal triggers stop loss 1%
Price rises to 5100
Market close at 5050

Как вы можете видеть, в приведенном выше примере, одна и та же стратегия, одни и те же данные, были два очень разных результата. Причина все еще связана с разницей в данных. В обратном тесте уровня Бар, если вы используете ежедневный обратный тест K-линии, вы не будете знать, как формируются эти K-линии. Если вы используете почасовой обратный тест K-линии, вы не будете знать, что эти почасовые k-линии формируются. Короче говоря, тест данных Бар слабый!

  • Бактэст на основе данных Tick

Если вы можете использовать данные Tick для бэкстестинга и анализа, нет никаких сомнений в том, что это имеет большие преимущества. Однако, похоже, на рынке нет количественной торговой платформы для бэкстестинга и анализа данных Tick. Например, MT4 использует интерполяционные моделирующие данные. Это просто моделирует изменения в данных, а не реальные данные Tick.

Конечно, есть программное обеспечение, которое утверждает, что способно выполнять бэкстестинг на уровне Tick. но это программное обеспечение совершило фатальную ошибку при разработке механизма бэкстестинга, то есть: механизм соответствия цены. Что это означает? Если текущие данные Tick: продажная цена 5001, покупная цена 5000, если мой ожидающий ордер на покупку находится на уровне 5000, на реальном рынке, он определенно не способен торговать, но правда не так.

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

  • Принцип механизма обратного тестирования на основе рыночных данных

Поэтому платформа FMZ Quant (fmz.com) При создании системы обратного тестирования на уровне Tick, эта система обратного тестирования не только сопоставляет заказы на основе приоритета цены данных Tick. Согласно тому же приоритету цены, количество ожидаемых заказов рассчитывается для определения того, достиг ли текущий ожидаемый заказ условия пассивной транзакции, чтобы достичь реальной среды моделирования.

  • Первый Тик: Продать: 101 Купить: 100 Объем: 30

  • Второй Тик: Продать: 101 Купить: 100 Объем: 50

  • Третий Тик: Продать: 101 Купить: 100 Объем: 30

  • Четвертый Тик: Продавать: 101 Купить: 100

Для первого Tick, цена покупки составляет 100, количество ожидаемых заказов составляет 30 лотов; в это время, сигнал покупки приходит, купить 20 лотов по цене 100; второй Tick генерируется, цена покупки составляет 100, и количество ожидаемых заказов составляет 50. есть 20 лотов ожидаемых заказов; третий Tick производится, цена покупки составляет 100, и количество ожидаемых заказов составляет 30 лотов. Это доказывает, что 20 лотов были выполнены или отменены, и мы закрываем сделку; четвертый Tick был произведен, цена покупки составляла 100, и количество ожидаемых заказов составляло 10 лотов. Это был большой продавец, и все наши заказы покупки выполнялись сразу.

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

В каком направлении делать тест?

На платформе FMZ Quant существует одновременное обратное тестирование на уровне Bar и Tick. Каждый количественный трейдер может использовать различные механизмы обратного тестирования в соответствии со своими собственными торговыми стратегиями и независимо от того, какой тип обратного тестирования вы используете.

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

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

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

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

Обратная проверка данных уровня Tick на основе реальных данных рынка

Мы продемонстрируем вам, как работает Tick-level backtest с помощью высокочастотной стратегии создания рынка, написанной на C++ (которая также поддерживает Python и JavaScript). Вы можете завершить стратегию и выполнить онлайн-бэкстестинг, нажав на ссылку ниже. Следующее изображение взято из информации о журнале. Обратите внимание, что мы купили 1 лот по цене 2231 в 2019-07-12 14:59, и продаем его по 2232.

img

  • Первый Тик: Продать: 2232 Объем: 409 Купить: 2231

  • Второй Тик: Продать: 2232 Объем: 351 Купить: 2231

  • Третий Тик: Продается: 2232 Купить: 2231

Эта демонстрационная стратегия заключается в том, чтобы закрыть позицию при получении прибыли от ценового тика. После открытия позиции мы отправляем ордер на закрытие позиции в 2232 для закрытия длинной позиции и 2231 для закрытия короткой позиции. Согласно традиционному бэкстесту на уровне баров, цена этого ожидающего ордера не может быть закрыта. Однако движок бэкстеста на уровне Tick платформы постоянно вычисляет изменение количества заказов на рынке. Когда генерируются третьи данные Tick, в соответствии с механизмом марширования обменных ордеров биржи, если цена одинакова, согласно правилу времени-первого, наша закрывающая длинная позиция будет торговаться.

Стратегия копирования

Нажмите на эту ссылку (https://www.fmz.com/strategy/162372) для копирования полной стратегии без необходимости настройки параметров

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

Конец

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

Размышление о стратегии, проведение статистики и анализ... Торговля была очень трудной. Независимо от того, являетесь ли вы низкочастотным CTA, внутридневным трейдингом, высокочастотным трейдингом, квантовая торговая платформа FMZ Quant может быть совершенно бесшовным образом поддерживаться. Мы не делаем игрушечные функции, основанные на точном историческом обратном тестировании на уровне Tick, мы можем протестировать любую комбинацию нескольких разновидностей, нескольких стратегий и нескольких циклов, чтобы помочь вам построить оптимальный инвестиционный портфель.


Связанные

Больше