Защита от рисков в алготрейдинге

От TLAPMEN, 9 ноября в В помощь трейдеру

Автор#1

Защита от рисков в алготрейдинге — Кевин Дж. Дэйви

Часть 1. Четыре способа ограничить риск

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

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

Алгоритмический трейдинг, или алготрейдинг, в последние годы становится всё более популярным на финансовых рынках. Но действительно ли это хорошая идея? В этой статье мы рассмотрим преимущества и недостатки алготрейдинга, чтобы определить, является ли он в конечном итоге хорошей или плохой инвестицией.

По оценке автора, 90% трейдеров допускают ошибки при разработке стратегий. Это оценка, а не результат исследования в этой статье.

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

Более опытные трейдеры учитывают и просадку. Например, стратегия, которая приносит 50 000 долларов в год и при этом допускает просадку в 100 000 долларов, подойдёт далеко не всем.

Сотни трейдеров применяют подход Strategy Factory®, чтобы искать стратегии с приемлемым соотношением прибыли и просадки.

Автоматизация позволяет системно применять правила торговли и управления риском. Рассмотрим, как проверять эти правила на исторических данных.

Сначала разберём основные риски, а затем перейдём к конкретным методам защиты.

Что такое алготрейдинг?

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

Преимущества алготрейдинга

Алготрейдинг предлагает ряд преимуществ:

  1. Повышает скорость и точность (устраняет ошибки ввода)

  2. Уменьшает (но не устраняет полностью) эмоции

  3. Дает возможность тестировать стратегии на исторических данных перед торговлей на реальном рынке

  4. В зависимости от рынка может снизить издержки исполнения.

  5. Может повысить ликвидность рынка.

  6. Улучшает возможности управления рисками

  7. Повышает лимиты на размер ордеров

  8. Снижает риск исполнения сделок

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

Недостатки алготрейдинга

У алготрейдинга также есть потенциальные недостатки.

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

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

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

  4. Не устраняет эмоции (распространенное заблуждение)

Возможности и ограничения алготрейдинга

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

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

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

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

Достаточно взглянуть на несколько рынков с конца февраля 2020 года:

Сильные движения на трёх фьючерсных рынках в начале марта 2020 года.

Сильные движения на трёх фьючерсных рынках в начале марта 2020 года.

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

Ниже рассмотрим несколько способов ограничить риск на уровне стратегии.

  • Ограничители внутридневных убытков

  • Закрытие позиций перед выходными

  • Аварийный выключатель, срабатывающий при высокой волатильности.

  • Торговля, основанная на кривой капитала

Определите свои параметры риска

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

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

Выберите подходящие торговые стратегии

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

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

Последовательно внедряйте и контролируйте свои торговые правила

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

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

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

Создайте реалистичный план бэктестирования для оценки производительности стратегии

Сначала проверьте правила стратегии на исторических данных. Для этого я использую walk-forward-анализ (пошаговое тестирование вне выборки).

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

При необходимости выполните корректировку стратегии

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

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

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

Примеры управления рисками

Сначала сравним четыре фильтра с базовой стратегией на фьючерсе на сырую нефть.

Базовая стратегия

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

ПРИМЕЧАНИЕ: данная стратегия предназначена исключительно для целей исследования. Я не утверждаю, что это хорошая стратегия для торговли.

Кривая капитала базовой стратегии на 120-минутных барах сырой нефти.

Кривая капитала базовой стратегии на 120-минутных барах сырой нефти.

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

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

Стоп рассчитывается по ATR с верхним пределом 3 000 долларов на контракт. Этот вид стопа уже рассматривался в сравнении долларового стоп-лосса и ATR-стопа.

Ниже приведен код для TradeStation и инструкции «на простом языке».

Правила

Для покупки цена закрытия должна пересечь снизу вверх уровень закрытия lookback баров назад и сверху вниз уровень закрытия за половину lookback. Вход выполняется рыночным ордером на следующем баре. Для короткой позиции пересечения обратные.

Расстояние до стопа равно ATR(14), умноженному на коэффициент. После перевода в доллары на контракт сумма ограничивается 3 000 долларов.

В тесте lookback = 10, множитель ATR = 2.

Код для TradeStation

//Risk Protection Study
//Kevin Davey - STRATEGY #1 - Baseline Strategy
input: lookback(10), stopATR(2);

If close crosses above close[lookback] and close crosses below close[0.5*lookback] then buy next bar at market;
If close crosses below close[lookback] and close crosses above  close[0.5*lookback]  then sellshort next bar at market;

var:NewStop(3000);
NewStop=StopATR*AvgTrueRange(14)*BigPointValue;
If NewStop>3000 then NewStop=3000;

If StopATR<>0 then SetStopLoss(NewStop);

Некоторые важные статистические данные базовой стратегии:

Показатель

Результат базовой стратегии

Чистая прибыль

$ 40 030

Количество сделок

92

Доходность по счёту

280,7%

Время в рынке

34,1%

Макс. просадка (закрытые сделки)

-$ 14 260

№ 1. Дневной лимит убытка

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

Версия, созданная для этого исследования, рассчитывает убыток с полуночи (время на графике), закрывает все сделки и предотвращает совершение новых сделок, если убыток превышает определенное значение. Это хорошо работает на X-минутном таймфрейме.

Правила

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

Код для TradeStation

//Risk Protection Study
//Kevin Davey – Risk Protection #1 – Daily Loss Limiter
input: lookback(10), stopATR(2), EquityLossLimit(1000);
var:EndDayEquity(0),CanTrade(True),CurrentEquity(0);

CurrentEquity=NetProfit+OpenPositionProfit;
If date<>date[1] then begin
EndDayEquity=CurrentEquity[1];
end;
CanTrade=True;
If NetProfit+OpenPositionProfit-EndDayEquity<-EquityLossLimit then  CanTrade=False;

If CanTrade=True then begin
If close crosses above close[lookback] and close crosses below close[0.5*lookback] then buy next bar at market;
If close crosses below close[lookback] and close crosses above  close[0.5*lookback]  then sellshort next bar at market;

var:NewStop(3000);
NewStop=StopATR*AvgTrueRange(14)*BigPointValue;
If NewStop>3000 then NewStop=3000;

If StopATR<>0 then SetStopLoss(NewStop);
end;

If CanTrade=False then begin
Sell ("DLL-L Exit") next bar at market;
BuyToCover ("DLL-S Exit") next bar at market;
end;

// Альтернативный пример для дневных баров.

Sell next bar at close – xxx stop;
//xxx is the price where daily loss limit would be hit

Результаты

Я менял дневной лимит от 500 до 10 000 долларов. При малом лимите стратегия заметно уступает базовому результату около 40 000 долларов: обычные колебания рынка часто приводят к выключению системы.

Чистая прибыль при разных дневных лимитах убытка.

Чистая прибыль при разных дневных лимитах убытка.

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

При превышении значения в $ 4 000 ежедневной лимит убытков никогда не активируется.

Таким образом, оптимальный результат для ежедневного лимита убытков показан ниже:

Показатель

Результат базовой стратегии

Внутридневной лимит убытков (оптимальное значение = $ 2 500)

Чистая прибыль

$ 40 030

$ 47 675

Количество сделок

92

95

Доходность по счёту

280,7%

344,7%

Время в рынке

34,1%

32,0%

Макс. просадка (закрытые сделки)

-$ 14 260

-$ 13 830

Глядя на результаты, вы можете сделать вывод, что ограничитель ежедневных убытков работает хорошо. Но БУДЬТЕ ОСТОРОЖНЫ! Это оптимизированный результат. Лимит в $ 2 500, вероятно, НЕ будет лучшим ежедневным лимитом в будущем.

Рекомендации

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

№ 2. Пауза после убыточной сделки

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

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

Правила

После убыточной сделки выждите NextTradeDelay баров, прежде чем совершать следующую сделку.

Код для TradeStation

//Risk Protection Study
//Kevin Davey - Risk Protection #2 - Delayed Signal After Loss
input: lookback(10),stopATR(2),NextTradeDelay(1);
var:CanTrade(True);

CanTrade=True;
If (positionprofit(1)<0 and barssinceexit(1)<NextTradeDelay) then CanTrade=False;

If CanTrade=True then begin
If close crosses above close[lookback] and close crosses below close[0.5*lookback] then buy next bar at market;
If close crosses below close[lookback] and close crosses above  close[0.5*lookback]  then sellshort next bar at market;

var:NewStop(3000);
NewStop=StopATR*AvgTrueRange(14)*BigPointValue;
If NewStop>3000 then NewStop=3000;

If StopATR<>0 then SetStopLoss(NewStop);

end;

Результаты

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

Чистая прибыль при разной длине паузы после убыточной сделки.

Чистая прибыль при разной длине паузы после убыточной сделки.

Показатель

Результат базовой стратегии

Задержка выхода (оптимальное значение = 10 баров)

Чистая прибыль

$ 40 030

$ 39 445

Количество сделок

92

89

Доходность по счёту

280,7%

256%

Время в рынке

34,1%

32,0%

Макс. просадка (закрытые сделки)

-$ 14 260

-$ 15 400

Рекомендации

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

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

№ 3. Закрытие позиций перед выходными

Представьте, что одна из ваших алгоритмических стратегий торгует на рынке сырой нефти. В пятницу, 6 марта 2020 года, ближе к концу дня вы открываете длинную позицию по цене, приблизительно по цене 41,57. Несмотря на то, что в тот день нефть упала примерно на $ 5 за баррель, вы чувствуете себя хорошо, потому что в выходные дни с нефтью могут произойти всевозможные бычьи события.

Но эти выходные являются исключением из этого правила. Коронавирус (Covid-19) становится гораздо более заметной новостной темой, а Россия и Саудовская Аравия вступают в своего рода странную ценовую войну за нефть, удешевляя ее. В ночь на воскресенье нефть обваливается в цене, и в понедельник рынок открывается на уровне $ 32,87, падение более чем на 20%, или на $ 8 700 за контракт.

Вы говорите себе: «Больше никогда не буду удерживать открытые позиции в выходные дни!»

Правила

Закрывайте все свои позиции в 16:00 по восточному времени в пятницу. И не открывайте никаких новых сделок.

Код для TradeStation

//Risk Protection Study
//Kevin Davey - Risk Protection #3 - No Weekends
input: lookback(10),stopATR(2),FridayStoptime(1600);
var:CanTrade(True);

CanTrade=True;
If dayofweek(date)=5 and time>=1600 then CanTrade=False;

If CanTrade=True then begin
If close crosses above close[lookback] and close crosses below close[0.5*lookback] then buy next bar at market;
If close crosses below close[lookback] and close crosses above  close[0.5*lookback]  then sellshort next bar at market;

var:NewStop(3000);
NewStop=StopATR*AvgTrueRange(14)*BigPointValue;
If NewStop>3000 then NewStop=3000;

If StopATR<>0 then SetStopLoss(NewStop);

end;

If CanTrade=False then begin
Sell ("Friday-L Exit") next bar at market;
BuyToCover ("FridayL-S Exit") next bar at market;
end;

Пятничное закрытие срабатывает после указанного времени при наличии торговых баров. В сокращённую праздничную сессию такого бара может не быть.

Результаты

Ужас!

Кривая капитала при закрытии позиций перед выходными.

Кривая капитала при закрытии позиций перед выходными.

Закрытие всех сделок перед выходными оказывает действительно негативное влияние на производительность торговли на сырой нефти:

Показатель

Результат базовой стратегии

Без удержания позиций в выходные (выход в 16:00 в Пт)

Чистая прибыль

$ 40 030

$ 10 585

Количество сделок

92

107

Доходность по счёту

280,7%

82,1%

Время в рынке

34,1%

8,2%

Макс. просадка (закрытые сделки)

-$ 14 260

-$ 12 860

Максимальная просадка уменьшилась, и вы намного меньше времени находитесь в рынке (что само по себе хорошо), но при этом вы теряете почти 75% прибыли. Очевидно, что для этой стратегии/рынка торговая идея «не оставлять открытых сделок на выходные дни» является финансово невыгодной.

Рекомендации

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

Но, как и со всеми идеями, я рекомендую вам протестировать ее, изначально добавив ее в свою стратегию. Не допустите ошибки, вначале создав стратегию и только потом добавив в нее это условие, поскольку вы примете изменение только в случае улучшения ее результатов (а это обман!).

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

№ 4. Фильтр высокой волатильности

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

Один из трейдеров показал мне результаты до и после добавления фильтра волатильности.

Два графика одного рынка до и после добавления фильтра высокой волатильности.

Два графика одного рынка до и после добавления фильтра высокой волатильности.

Сравнение результатов до и после добавления фильтра CanTrade.

Сравнение результатов до и после добавления фильтра CanTrade.

Так что, по крайней мере, этот аварийный выключатель высокой волатильности стоит протестировать. Давайте посмотрим, как он работает на стратегии торговли на сырой нефти.

Правила

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

Код для TradeStation

//Risk Protection Study
//Kevin Davey - Risk Protection #4 - High Volatility "Kill" Switch
input: lookback(10),stopATR(2),ATRMult(1600);
var:CanTrade(True);

//switch criteria
CANTRADE=TRUE;
If TrueRange>ATRMult*AvgTrueRange(5) then CANTRADE=FALSE;

If CanTrade=True then begin
If close crosses above close[lookback] and close crosses below close[0.5*lookback] then buy next bar at market;
If close crosses below close[lookback] and close crosses above  close[0.5*lookback]  then sellshort next bar at market;

var:NewStop(3000);
NewStop=StopATR*AvgTrueRange(14)*BigPointValue;
If NewStop>3000 then NewStop=3000;

If StopATR<>0 then SetStopLoss(NewStop);

end;

If CanTrade=False then begin
Sell ("Vol-L Exit") next bar at market;
BuyToCover ("Vol-S Exit") next bar at market;
end;

Результаты

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

Результаты перебора множителя ATR для фильтра высокой волатильности.

Результаты перебора множителя ATR для фильтра высокой волатильности.

Показатель

Результат базовой стратегии

Результат с задействованием аварийного выключателя (оптимизированного с помощью ATR Mult=3)

Чистая прибыль

$ 40 030

$ 44 125

Количество сделок

92

99

Доходность по счёту

280,7%

319,1%

Время в рынке

34,1%

29,1%

Макс. просадка (в закрытых сделках)

-$ 14 260

-$ 13 830

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

Рекомендации

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

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

Резюме

Я проанализировал 4 уникальные идеи, которые могут снизить риск алгоритмических торговых систем:

  1. Ограничитель внутридневных убытков

  2. Задержка входа в рынок после убыточной сделки

  3. Не удерживать открытых позиций в выходные дни

  4. Аварийный выключатель, срабатывающий при высокой волатильности

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

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

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

  2. Убедитесь, что вы правильно разработали и протестировали свою стратегию (процесс Strategy Factory идеально подходит для этого)

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

Во второй части этой темы — проверка фильтра по кривой капитала и ещё четыре способа защиты.

Об авторе

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

Дэйви написал пять книг о трейдинге, в том числе Building Algorithmic Trading Systems: A Trader’s Journey From Data Mining to Monte Carlo Simulation to Live Trading (Wiley, 2014).

© Кевин Дэйви и KJ Trading Systems. Перепечатка разрешена при сохранении раздела «Об авторе».

Кевин Дж. Дэйви

Переведено для TLAP

Изменено 9 ноября пользователем TLAPMEN

Автор#2

Часть 2. Кривая капитала и ещё четыре способа защиты

Фильтр по кривой капитала

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

Фильтр сравнивает кривую капитала стратегии с её скользящей средней или другим ориентиром и разрешает либо блокирует новые входы. Один из примеров — средняя за 25 периодов.

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

Три исхода торговли с фильтром по кривой капитала.

Три исхода торговли с фильтром по кривой капитала.

В двух статьях для Modern Trader я пришёл к выводу, что фильтр по кривой капитала часто не помогает. Ошибка в порядке расчёта может сделать такой подход обманчиво привлекательным.

Теперь вернемся к истории. У этого консультанта была стратегия торговли на облигациях США, от которой он действительно был в восторге, и он утверждал, что, когда он комбинировал ее с торговой стратегией, основанной на кривой капитала, производительность его стратегии ЗНАЧИТЕЛЬНО улучшилась. Настолько сильно, что он решил, что «окажет мне честь», позволив мне стать первым, кто инвестирует в его новую стратегию.

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

Ошибочный расчёт. Результат текущей сделки участвует в решении об этой же сделке.

Ошибочный расчёт. Результат текущей сделки участвует в решении об этой же сделке.

Прирост на 30% в этом примере получен при ошибочном расчёте с использованием результата ещё не совершённой сделки.

Это трудно увидеть по рисунку, но если посмотреть на его расчеты, то можно заметить, что он решает совершить сделку ПОСЛЕ расчетов скользящей средней (которая также включает сделку, по которой он принимает решение). Другими словами, он может заглянуть в будущее!

Неудивительно, что его подход к торговле, основанный на кривой капитала, выглядел так хорошо!!!

Я исправил его ошибку, и результат его торговой стратегии на основе кривой капитала стал хуже, чем в случае «всегда включена».

Корректный расчёт. Данные завершённой сделки используются для решения о следующей.

Корректный расчёт. Данные завершённой сделки используются для решения о следующей.

После исправления фильтр принёс меньше прибыли, чем непрерывная работа стратегии.

Правильный метод расчета

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

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

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

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

Для проверки я взял пять стратегий, которыми торговал на момент исследования. К тому времени стратегию № 5 я уже отключил. Фильтр с MA(10) применил только к периоду после разработки каждой стратегии, то есть к данным вне выборки.

Стратегия № 1. Фильтр по MA(10) проверен на данных после разработки системы.

Стратегия № 1. Фильтр по MA(10) проверен на данных после разработки системы.

Стратегия № 2. Фильтр по MA(10) проверен на данных после разработки системы.

Стратегия № 2. Фильтр по MA(10) проверен на данных после разработки системы.

Стратегия № 3. Фильтр по MA(10) проверен на данных после разработки системы.

Стратегия № 3. Фильтр по MA(10) проверен на данных после разработки системы.

Стратегия № 4. Фильтр по MA(10) проверен на данных после разработки системы.

Стратегия № 4. Фильтр по MA(10) проверен на данных после разработки системы.

Стратегия № 5. Фильтр по MA(10) проверен на данных после разработки системы.

Стратегия № 5. Фильтр по MA(10) проверен на данных после разработки системы.

В двух стратегиях явно лучше НЕ использовать стратегию торговли, основанную на кривой капитала (стратегия «всегда включена» дает намного лучшую производительность). В одной стратегии производительность в основном остается такой же. А 2 стратегии (№4 и №5) становятся более прибыльными с опцией «всегда включена», но при применении стратегии торговли, основанной на кривой капитала, просадки действительно уменьшаются.

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

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

Файлы для проверки расчётов

В Частях 1 и 2 я рассмотрел довольно много информации, которая поможет вам разрабатывать стратегии защиты от рисков.

В пакете ресурсов на странице оригинала описаны рабочие области TradeStation и код, использованный в исследовании.

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

Пример из пакета ресурсов автора. Результаты до и после включения CanTrade.

Пример из пакета ресурсов автора. Результаты до и после включения CanTrade.

Ещё четыре варианта защиты

После публикации первых четырёх методов читатели попросили больше примеров.

Итак, я решил добавить еще 4 метода защиты от рисков. Все они являются вариациями оригинальных 4 стратегий защиты от рисков:

Основной метод

Дополнительный вариант

Ограничитель внутридневных убытков

Ограничитель месячных убытков

Задержка входа в рынок после убыточной сделки

Отключать стратегию после X последовательных убыточных сделок

Не удерживать открытых позиций в выходные дни

Запрет новых входов ночью

Аварийный выключатель, срабатывающий при высокой волатильности

Аварийный выключатель, срабатывающий при низкой волатильности

Ниже я разбираю эти варианты и показываю код для TradeStation.

№ 5. Месячный лимит убытка

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

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

Правила

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

Код для TradeStation

//Risk Protection Study
//Kevin Davey - Risk Protection #1A - Monthly Loss Limiter
input: lookback(10),stopATR(2),EquityLossLimit(3000);
var:EndMonthEquity(0),CanTrade(True),CurrentEquity(0);

CurrentEquity=NetProfit+OpenPositionProfit;

If month(date)<>Month(date[1]) then begin
EndmonthEquity=CurrentEquity[1];
end;

CanTrade=True;
If NetProfit+OpenPositionProfit-EndMonthEquity<-EquityLossLimit then  CanTrade=False;

If CanTrade=True then begin
If close crosses above close[lookback] and close crosses below close[0.5*lookback] then buy next bar at market;
If close crosses below close[lookback] and close crosses above  close[0.5*lookback]  then sellshort next bar at market;

var:NewStop(3000);
NewStop=StopATR*AvgTrueRange(14)*BigPointValue;
If NewStop>3000 then NewStop=3000;

If StopATR<>0 then SetStopLoss(NewStop);

end;

If CanTrade=False then begin
Sell ("DLL-L Exit") next bar at market;
BuyToCover ("DLL-S Exit") next bar at market;
end;

// Альтернативный пример для дневных баров.
Sell next bar at close – xxx stop;
//xxx is the price where monthly loss limit would be hit

Результаты

Я проверил месячные лимиты от 100 до 5 000 долларов. В этой стратегии лимиты выше 1 500 долларов в целом меняли результат умеренно. При меньших значениях прибыль резко падала и на части параметров сменялась убытком.

Имейте это в виду, когда кто-то говорит, что ограничение месячных убытков – это отличная идея. Это может иметь противоположный эффект!

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

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

Таким образом, оптимальные результаты для месячного лимита убытков показаны ниже:

Показатель

Результат базовой стратегии

Месячный лимит убытков (оптимальное значение = 1 700 $)

Чистая прибыль

$ 40 030

$ 43 610

Количество сделок

92

86

Доходность по счёту

280,7%

307%

Время в рынке

34,1%

25,4%

Макс. просадка (закрытые сделки)

-$ 14 260

-$ 14 185

Глядя на результаты, вы можете сделать вывод, что ограничитель месячных убытков работает хорошо. Но БУДЬТЕ ОСТОРОЖНЫ! Это оптимизированный результат. Лимит в $ 1 700, вероятно, НЕ будет лучшим месячным лимитом в будущем.

Рекомендации

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

№ 6. Отключение после серии убытков

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

В этом примере порог равен четырём сделкам. Можно проверить другие заранее заданные значения, например 2, 3, 5 или 10. В коде также оставлен закомментированный пример возобновления работы через заданное число баров после выхода (BarsSinceExit).

Правила

После четырёх убыточных сделок подряд прекратите открывать новые позиции по этой стратегии.

Код для TradeStation

//Risk Protection Study
//Kevin Davey - Risk Protection #2A - Kill Strat After 4 Consecutive Losers
input: lookback(10),stopATR(2);
var:CanTrade(True);

CanTrade=True;
If (positionprofit(1)<0 and positionprofit(2)<0 and positionprofit(3)<0 and positionprofit(4)<0) then CanTrade=False;
//If BarsSinceExit(1)>20 then CANTRADE=True; //limit "off" time to 20 bars

If CanTrade=True then begin
If close crosses above close[lookback] and close crosses below close[0.5*lookback] then buy next bar at market;
If close crosses below close[lookback] and close crosses above  close[0.5*lookback]  then sellshort next bar at market;

var:NewStop(3000);
NewStop=StopATR*AvgTrueRange(14)*BigPointValue;
If NewStop>3000 then NewStop=3000;

If StopATR<>0 then SetStopLoss(NewStop);

end;

Результаты

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

Кривая капитала после отключения стратегии на четвёртом убытке подряд.

Кривая капитала после отключения стратегии на четвёртом убытке подряд.

Показатель

Результат базовой стратегии

Отключать стратегию после 4 последовательных убыточных сделок

Чистая прибыль

$ 40 030

$ 26 455

Количество сделок

92

37

Доходность по счёту

280,7%

306%

Время в рынке

34,1%

19,3%

Макс. просадка (закрытые сделки)

-$ 14 260

-$ 8 635

Рекомендации

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

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

№ 7. Запрет новых входов в ночные часы

Позиции можно оставить открытыми на ночь или выходные. В этом варианте запрет относится только к новым входам в менее ликвидные ночные часы. Закрывать уже открытые позиции можно.

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

Правила

Не открывайте новые сделки с 16:00 до 07:00 по времени графика.

Код для TradeStation

//Risk Protection Study
//Kevin Davey - Risk Protection #3A - No New Trades Overnight
input: lookback(10),stopATR(2),Stoptime(1600),StartTime(700);
var:CanTrade(True);

CanTrade=True;
If time>=StopTime or time <=StartTime then CanTrade=False;

If CanTrade=True then begin
If close crosses above close[lookback] and close crosses below close[0.5*lookback] then buy next bar at market;
If close crosses below close[lookback] and close crosses above  close[0.5*lookback]  then sellshort next bar at market;
end;

var:NewStop(3000);
NewStop=StopATR*AvgTrueRange(14)*BigPointValue;
If NewStop>3000 then NewStop=3000;

If StopATR<>0 then SetStopLoss(NewStop);

Результаты

Ужас!

Кривая капитала при запрете новых входов с 16:00 до 07:00.

Кривая капитала при запрете новых входов с 16:00 до 07:00.

Недопущение новых сделок в ночное время очень плохо сказывается на производительность торговли на сырой нефти:

Показатель

Результат базовой стратегии

Отказ от открытия новых сделок в интервале суток между 16:00 и 07:00 (по времени графиков)

Чистая прибыль

$ 40 030

$ 13 305

Количество сделок

92

29

Доходность по счёту

280,7%

110,7%

Время в рынке

34,1%

16,5%

Макс. просадка (закрытые сделки)

-$ 14 260

-$ 12 010

Максимальная просадка уменьшилась, и стратегия проводила меньше времени в рынке. При этом чистая прибыль упала с 40 030 до 13 305 долларов, то есть примерно на 67% по данным таблицы.

Рекомендации

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

Но, как и со всеми идеями, я рекомендую вам протестировать ее, изначально добавив ее в свою стратегию. Не допустите ошибки, вначале создав стратегию и только потом добавив в нее это условие, поскольку вы примете изменение только в случае улучшения ее результатов (а это обман!).

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

№ 8. Фильтр низкой волатильности

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

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

Динамика фьючерса на евро и ATR на недельном графике.

Динамика фьючерса на евро и ATR на недельном графике.

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

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

Правила

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

Код для TradeStation

//Risk Protection Study
//Kevin Davey - Risk Protection #4A - Low Volatility Kill Switch
input: lookback(10),stopATR(2),ATRMult(1);
var:CanTrade(True);

//switch criteria
CANTRADE=TRUE;
If TrueRange<ATRMult*AvgTrueRange(5) then CANTRADE=FALSE;

If CanTrade=True then begin
If close crosses above close[lookback] and close crosses below close[0.5*lookback] then buy next bar at market;
If close crosses below close[lookback] and close crosses above  close[0.5*lookback]  then sellshort next bar at market;

var:NewStop(3000);
NewStop=StopATR*AvgTrueRange(14)*BigPointValue;
If NewStop>3000 then NewStop=3000;

If StopATR<>0 then SetStopLoss(NewStop);

end;

If CanTrade=False then begin
Sell ("Vol-L Exit") next bar at market;
BuyToCover ("Vol-S Exit") next bar at market;
end;

Результаты

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

Результаты перебора множителя ATR для фильтра низкой волатильности.

Результаты перебора множителя ATR для фильтра низкой волатильности.

Показатель

Результат базовой стратегии

Аварийный выключатель, срабатывающий при низкой волатильности (ATR mult = 0 или 0,05)

Чистая прибыль

$ 40 030

$ 40 030

Количество сделок

92

92

Доходность по счёту

280,7%

280,7%

Время в рынке

34,1%

34,1%

Макс. просадка (закрытые сделки)

-$ 14 260

-$ 14 260

Рекомендации

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

Резюме

Я проанализировал 4 уникальные идеи, которые могут снизить риск алгоритмических торговых систем:

  • № 5. Месячный лимит убытка, вариант дневного лимита.

  • № 6. Отключение после четырёх убытков подряд, вариант паузы после убыточной сделки.

  • № 7. Запрет новых входов ночью, вариант ограничения торговли перед выходными.

  • № 8. Фильтр низкой волатильности, вариант фильтра высокой волатильности.

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

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

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

  2. Убедитесь, что вы правильно разработали и протестировали свою стратегию (процесс Strategy Factory идеально подходит для этого)

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

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

Как проверить защиту на своей стратегии

Сравните базовый вариант и один фильтр при одинаковых комиссиях, проскальзывании и размере позиции. До теста задайте допустимую просадку, затем отдельно сравните прибыль, время в рынке и число сделок вне выборки. С методикой выбора размера позиции можно свериться с материалом TLAP об управлении капиталом, а с правилами прекращения торговли — с разбором критериев остановки стратегии. Какое ограничение снижает просадку вашей системы без заметной потери результата?

Об авторе

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

Дэйви написал пять книг о трейдинге, в том числе Building Algorithmic Trading Systems: A Trader’s Journey From Data Mining to Monte Carlo Simulation to Live Trading (Wiley, 2014).

© Кевин Дэйви и KJ Trading Systems. Перепечатка разрешена при сохранении раздела «Об авторе».

Кевин Дж. Дэйви

Переведено для TLAP

Изменено 9 ноября пользователем TLAPMEN

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025