5.2 Как проводить количественное обратное тестирование торговли

Автор:Доброта, Создано: 2019-06-25 13:40:25, Обновлено: 2023-11-09 20:45:24

img

Резюме

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

В настоящее время существует множество программ, которые могут делать все это, таких как MetaTrader, MultiCharts и IB Trader Workstation, которые все очень полные, также есть открытый исходный код под названием VNPY наgithub.com, которые могут быть гибко настроены.

FMZ Quant, как коммерческое программное обеспечение для количественной торговли, поставляется с высокопроизводительной системой обратной проверки, использующей рамку обратной проверки for-loop (опрос), чтобы быстрее количественно оценить расчеты.

Введение в интерфейс FMZ Quant Backtest

  • Шаг 1

В качестве примера давайте посмотрим на официальный сайт FMZ Quant (www.fmz.comНажмите на панель управления, Стратегия, выберите стратегию, нажмите на Backtest и перейдите на следующую страницу:

img img

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

  • Шаг 2

Нажмите на торговую библиотеку mylanguage core (поскольку эта стратегия написана на языке M, если вы используете другой язык программирования, эта опция может не отображаться) Во-первых, установите торговую метку. Язык FMZ Quant M имеет два типа методов исполнения бэкстеста, которые являются: модель закрытия цены и последняя модель цены. Модель закрытия цены относится к исполнению модели после завершения текущей линии K, а торговля выполняется в начале следующей линии K; Последняя модель цены относится к исполнению модели для каждого изменения цены, и когда торговый сигнал установлен, он будет торговать немедленно. Как показано ниже:

img img

Максимальный объем сделки один раз - это максимальная открытая позиция, которая отправляется в механизм обратного теста одной транзакцией.

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

  • Шаг 3

Заполните фьючерсный контракт с типом контракта, который вы хотите backtest, для криптовалют, нам просто нужно указать период k-линии, которую мы хотим backtest, в этом случае, просто используйте еженедельную k-линию, так что, вставьте this_week.

img

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

img

  • Шаг 4

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

img

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

Перед обратным тестированием определите свою торговую стратегию. Здесь мы примем стратегию Термостат как пример. Эта стратегия будет использовать стратегию тренда на трендовом рынке в соответствии с состоянием рынка и будет использовать стратегию колебания на волатильном рынке. Исходный код показан ниже (также можно загрузить с страницы Стратегии квадрата на веб-сайте FMZ Quant):

// Calculate CMI indicator to distinguish between Oscillating and trend market
CMI:=ABS(C-REF(C,29))/(HHV(H,30)-LLV(L,30))*100;

// Define key prices
KOD:=(H+L+C)/3;

// In the Oscillating market, the closing price is greater than the key price is suitable for selling market, otherwise it is for buying market
BE:=IFELSE(C>KOD,1,0);
SE:=IFELSE(C<=KOD,1,0);

// Define 10-day ATR indicator
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR10:=MA(TR,10);

// Define the highest and lowest price 3-day moving average
AVG3HI:=MA(H,3);
AVG3LO:=MA(L,3);

// Calculate the entry price of the Oscillating market
LEP:=IFELSE(C>KOD,O+ATR10*0.5,O+ATR10*0.75);
SEP:=IFELSE(C>KOD,O-ATR10*0.75,O-ATR10*0.5);
LEP1:=MAX(LEP,AVG3LO);
SEP1:=MIN(SEP,AVG3HI);

// Calculate the entry price of the trend market
UPBAND:=MA(C,50)+STD(C,50)*2;
DNBAND:=MA(C,50)-STD(C,50)*2;

// Calculate the quit price of the trend market
MA50:=MA(C,50);

// Oscillating strategy logic
CMI<20&&C>=LEP1,BK;
CMI<20&&C<=SEP1,SK;
CMI<20&&C>=AVG3HI,SP;
CMI<20&&C<=AVG3LO,BP;

// Trend strategy logic
CMI>=20&&C>=UPBAND,BK;
CMI>=20&&C<=DNBAND,SK;
CMI>=20&&C<=MA50,SP;
CMI>=20&&C>=MA50,BP;
AUTOFILTER;

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

img

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

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

Годовая волатильность, проще говоря, годовая цифра предполагает, что наблюдения в течение короткого периода времени будут продолжаться в течение года. Это мера риска фонда, но это определенно не полный риск. Например, стратегия А имеет большую волатильность, но она была волатильной вверх, прибыль хорошая; стратегия В имеет небольшую волатильность, но она неуклонно движется ((всего едва не движется).

img

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

img

После обратного тестирования

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

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

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

Подводя итог

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

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

Послешкольные занятия

  1. Попробуйте скопировать стратегию в этом разделе и проверить ее.

  2. Постарайтесь улучшить и оптимизировать стратегию в этом разделе на основе вашего опыта торговли.


Связанные

Больше