September 15, 2023

Расчет рисков в торговле на Форекс

Дисклеймер

Статья предназначена исключительно для информационных целей и не является советом по инвестициям или рекомендацией к действию.

Считаем риски

Чтобы определить оптимальный размер сделки на форекс нужно учесть достаточно большой список параметров:

  • Размер стоп-лосса и тейк-профита
  • Средняя прибыль и убыток на сделку
  • Винрейт стратегии
  • Кредитное плечо
  • Уровень маржи
  • Дополнительные комиссии

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

Базовые понятия

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

Баланс

Самое простое понятие - это баланс счета (англ. balance). Это деньги на депозите, которые можно потратить на открытие сделок. Если сделки закроются с прибылью, то баланс счета увеличится, иначе уменьшится.

Баланс показывает актуальное значение только когда нет открытых сделок.

Средства

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

Если все же посчитать актуальную прибыль или убыток, и таким образом получить значение баланса, как если бы все сделки были моментально закрыты, то мы получим то, что называется средства (англ. equity). К примеру, у нас был баланс 100$. Мы открыли позицию на 20$, но баланс остался равным 100$, ведь он обновляется только по закрытию сделки. Допустим, сделка пошла в плюс и ее актуальный профит составляет 5$. Но мы ее еще не закрыли, поэтому баланс у нас все еще 100$. А вот средства будут уже равны 105$.

Маржа и Свободная маржа

Маржа (англ. margin) - это деньги, которые были потрачены на открытие сделок. К примеру, если мы открыли одну позицию размером 5$, то эта сумма называется маржа. Если было открыто несколько сделок, то чтобы найти маржу, нужно просуммировать все затраты на сделки.

Свободная маржа (англ. free margin) - это деньги, на которые мы можем входить в позицию. К примеру, у нас был баланс 100$ и мы открыли позицию, потратив 10$. В таком случае:

  • Баланс остается 100$, так как сделка еще не закрыта;
  • Если сделка пошла в плюс и имеет на данный момент профит 5$, то наши средства будут 105$;
  • Маржа составит 10$, ведь это те деньги, которые мы потратили на открытие сделки;
  • Свободная маржа составит 105$ - 10$ = 95$;

Формула расчета свободной маржи очень простая:

Свободная маржа = Средства - Маржа

Что такое размер сделки

Сделки на форексе - это фактически обмен валюты. К примеру, торгуя на паре EURUSD, мы можем купить EUR за USD по текущему курсу. Потратив '100' USD по курсу '1.14', мы получим '87.71' EUR. Далее, если курс EUR вдруг вырос до '1.16', мы можем продать наши '87.71' EUR обратно и получим уже '101.75' USD.

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

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

Кредитное плечо

Кредитное плечо (англ. leverage) позволяет открывать сделки на суммы больше, чем мы располагаем на балансе. Брокеры часто предоставляют достаточно большие кредитные плечи: 1:100, 1:300, 1:500 и более.

К примеру, если мы хотим купить валюты EUR на сумму 100000 USD, то с кредитным плечом 1:100 нам нужно всего лишь 1000 USD. В итоге мы можем получить профит (или убыток), как будто открыли позицию на 100000 USD, но благодаря кредитному плечу мы потратили лишь 1000 USD.

Кредитное плечо - это по сути умножитель прибыльности и убыточности.

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

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

Как работает stop-out

Итак, у нас есть два показателя:

  • Средства - это все деньги, какие у нас есть на данный момент, с учетом незакрытых позиций;
  • Маржа - это деньги, которые мы затратили на открытие позиций;

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

Для дальнейшего понимания нужно познакомиться с еще одним понятием - уровень маржи (англ. margin level).

Уровень маржи

Обычно брокеры ставят минимальный уровень маржи 20-50%, иногда и 100%. Если уровень маржи опустится ниже, то брокер закроет позиции принудительно, случится так называемый stop-out.

Уровень маржи- это отношение средств к марже:

Уровень маржи = (Средства / Маржа) * 100%

К примеру, если у нас был баланс 100$ и мы открыли сделку, затратив 10$, это маржа сделки. Сделка имеет нереализованный профит в 5$, поэтому у нас есть средства размером 105$. Уровень маржи в таком случае равен:

(105$ / 10$) * 100% = 1050%

Если же наша сделка убыточная и имеет убыток в 5$, то тогда наши средства 95$, а уровень маржи:

(95$ / 10$) * 100% = 950%

Чтобы сработал stop-out по уровню 40%, наша сделка должна иметь следующий убыток:

((100$ - X) / 10$) * 100% = 40%
(100$ - X) / 10$ = 0.4
100$ - X = 4$
X = 100$ - 4$ = 96$

Получается, что брокер закроет сделку принудительно, когда убыток ней дойдет до 96$.

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

В чем измеряется размер сделок

В форексе размер сделок принято измерять в лотах (англ. lot).

  • 1 лот это 100 000 единиц базовой валюты
  • базовая валюта - это валюта, которую мы хотим купить или продать. К примеру, на валютной паре EURUSD базовая валюта - EUR

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

К примеру, если на момент написания статьи открыть сделку размером 1 лот на паре EURUSD, то нужно будет потратить 106 448 USD. Сумма 106 448 USD появляется следующим образом:

  • Курс EUR относительно USD равен 1.06448
  • Нам нужен 1 лот, а это 100 000 EUR
  • Следовательно, 100 000 EUR * 1.06448 = 106 448 USD

С кредитным плечом 1:100, для открытия сделки размером 1 лот нам потребуется в 100 раз меньше, а именно 1 064.48 USD.

Пункт и стоп-лосс

Пункт (англ. pip) - это минимальное изменение цены. Для 5-ти значных котировок это шаг цены размером 0.00001, но часто под пунктом имеют ввиду шаг цены 0.0001 для пар без JPY и 0.01 для пар с валютой JPY.

Стоп-лосс (англ. stop-loss) - это уровень цены сделки, который ограничивает ее убыток. Благодаря стоп-лоссу мы заранее знаем максимальный уровень риска на сделку. Если цена дойдет до этого уровня, сделка будет закрыта. Стоп-лосс часто измеряют в пунктах. К примеру, стоп-лосс размером 50 пунктов, это отклонение цены на 0.0001 *50 = 0.005.

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

Приведем пример размера стоп-лосса в 200 пунктов (для 4х или 2х-значных котировок) с объемом ордера 1 лот для разных валютных пар (размер стоп-лосса рассчитан по котировкам на момент написания статьи):

  • EURUSD = 2000 USD;
  • AUDCAD = ~1480.6 USD;
  • CADJPY = ~2096.9 USD;

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

Как рассчитать процент риска на сделку

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

Если мы уже определили желаемый размер стоп-лосса, то рассчитать размер позиции можно по следующей формуле:

Размер позиции в лотах = (Депозит * Риск) / "Стоимость 1 лота стоп-лосса"

Риск измеряется в процентах. К примеру, 10% от 1000$ это 100$. Если стоп-лосс размером 1 лот в 200 пунктов (для 4х-значных котировок) равен 2000$, то нам нужно открыть позицию размером 100$/2000$ = 0.05 лотов.

Теперь нужно выяснить размер маржи, необходимый для открытия такой сделки. Маржа - это объем валюты, который нам нужно купить чтобы открыть сделку. Для пары EURUSD она вычисляется следующим образом:

Маржа = "Стоимость лота позиции" * "Цена актива" / "Кредитное плечо"

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

В нашем примере 0.05 лотов это 0.05 * 100 000 = 5000 EUR. Чтобы купить столько EUR, нам надо заплатить 5000 * 1.0644 = 5322 USD. Если у нас счет имеет кредитное плечо 1:100, то мы делим сумму 5322 USD на 100 и получаем 53.22 USD. Это маржа нашей сделки.

Учитываем stop-out

Найдем примерный уровень маржи в момент открытия сделки:

(1000$ / 53.22$) * 100% = 1878.99%

Уровень маржи достаточно высокий, все хорошо.

Вычислим уровень маржи для случая, когда сделка дойдет до стоп-лосса:

((1000$ - 0.05 * 2000$) / 53.22$) * 100% = (900$ / 53.22$) * 100% = 1691%

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

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

Рассмотрим формулу:

(E - SL) / M > MIN_MARGIN_LEVEL
  • E - средства
  • SL - максимальный убыток по всем сделками
  • M - совокупная маржа по всем сделкам
  • MIN_MARGIN_LEVEL - минимальный уровень маржи

Если уровень маржи выше MIN_MARGIN_LEVEL, то мы считаем торговлю безопасной, она не вызовет stop-out. Минимальный уровень маржи стоит выбрать выше 100%. Также можно брать средства и максимальный убыток по сделкам с запасом, чтобы учесть возможные проскальзывания по стоп-лоссу:

(E * ELM - SL * SLM) / M > MIN_MARGIN_LEVEL
  • SLM - Множитель совокупного убытка по всем сделкам. Нужно брать значение выше 1.0, например 1.2. Нужен для "запаса прочности"
  • ELM - Множитель средств. Нужно брать значение ниже 1.0, к примеру 0.8-0.9. Нужен для "запаса прочности"

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

C = SL' / M'
M" = (((E * ELM - SL * SLM)/MIN_MARGIN_LEVEL)-M)/(1+(C/MIN_MARGIN_LEVEL))
Lot" = Lot' * M" / M'
  • C - коэффициент соотношения стоимости стоп-лосса к марже сделки. Данный коэффициент не зависит от объема сделки, поэтому его можно рассчитать, к примеру, для 1 лота.
  • SL' - стоимость стоп-лосса сделки, объем которой нужно уменьшить
  • M' - маржа сделки, объем которой нужно уменьшить
  • M" - новая маржа сделки
  • M - совокупная маржа по всем сделкам (за исключением новой сделки)
  • SL - максимальный убыток по всем сделками (за исключением новой сделки)
  • Lot' - старый объем сделки в лотах
  • Lot" - новый объем сделки в лотах, который будет меньше старого объема.

Таким образом мы получаем новый объем сделки, который уже будет безопасен для депозита. Сама формула выводится следующим образом:

((E * ELM) - (SL * SLM) - SL") / (M + M") = MIN_MARGIN_LEVEL
M + M" = ((E * ELM) - (SL * SLM) - SL") / MIN_MARGIN_LEVEL
M" = (((E * ELM) - (SL * SLM) - SL") / MIN_MARGIN_LEVEL) - M
C = SL' / M' = SL" / M"
SL" = C * M"
M" = ((E * ELM - SL * SLM - C * M") / MIN_MARGIN_LEVEL) - M
M" = ((E * ELM - SL * SLM)/MIN_MARGIN_LEVEL) - (C*M"/MIN_MARGIN_LEVEL) - M
M" + C * M"/MIN_MARGIN_LEVEL = ((E*ELM - SL*SLM)/MIN_MARGIN_LEVEL) - M
M" * (1 + C/MIN_MARGIN_LEVEL) = ((E*ELM - SL*SLM)/MIN_MARGIN_LEVEL) - M
M" = (((E*ELM - SL*SLM)/MIN_MARGIN_LEVEL) - M) / (1 + C/MIN_MARGIN_LEVEL)
  • SL" - новая стоимость стоп-лосса сделки

Данный алгоритм реализуется при помощи следующих методов в MQL5:

* в методе add_trade есть ошибка: уровень стоп-лосса умножается на sl_gain, нужно же просто прибавить. * в дальнейшем также был добавлен запас по equity через коэффициент, равный 0.8-0.9

Перед открытием сделки проверяем при помощи метода check_trade, хватает ли уровня маржи. Если уровень маржи слишком мал, то делаем перерасчет размера сделки, для чего сначала находим безопасный уровень маржи при помощи метода calc_new_margin. Когда сделка открыта, мы добавляем ее размер маржи и размер стоп-лосса при помощи метода add_trade. Обнулять переменные total_margin и total_sl нужно в момент закрытия всех сделок. Так как в моем советнике все сделки закрываются примерно в одно время, то подобного кода более чем достаточно. В более сложных случаях код придется дорабатывать, чтобы можно было открывать новые сделки, когда старые закрыты лишь частично.

Критерий Келли

Остался последний вопрос: какой процент от депозита нужно вкладывать в сделку?

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

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

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

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

Также нам нужно знать винрейт стратегии. Винрейт (англ. winrate) - это отношение прибыльных сделок к убыточным.

Мы будем использовать простую формулу Критерия Келли:

f = p - q / (b / a);

f* — часть активов, которую вкладывают в инвестиции;
p — вероятность положительного исхода (что сделка принесет профит);
q — вероятность отрицательного исхода (что сделка будет убыточной): q = 1 — p;
a — доля от вложений, которая теряется при отрицательном исходе;
b — доля от вложений, которая добавляется при положительном исходе.

Попробуем рассчитать по Критерию Келли размер сделки для следующих значений:

  • Винрейт 60%;
  • Прибыльная сделка приносит 40%
  • Убыточная сделка уменьшает на 20%
p = 0.6
q = 1 - 0.6 = 0.4
a = 0.2
b = 0.4
f = p - q / (b / a) = 0.6 - 0.4 / (0.4 / 0.2) = 0.4

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

Про использование кредитного плеча

В сети часто пишут что при использовании плеча мы можем попробовать ставить больше, чем рекомендует Келли, для увеличения прибыли. Но прибыль будет расти линейно, а убыток растёт квадратичными темпами.

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

Все зависит от используемой стратегии. Если мы используем скальпинг, где наша прибыль генерируется от небольшого числа пунктов, то не использовать кредитное плечо будет являться безумием: какой смысл вкладывать 100000 USD ради профита в 10-50 USD? Так не работает. Критерий Келли в случае скальпинга вычисляет процент сделки от депозита с учетом риска на сделку, поэтому в данном случае все наоборот - чем больше плечо, тем лучше (если конечно, ограничивать убытки).

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

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

К примеру, если по формуле Келли оптимальный размер позиции 10% от депозита, то нет смысла увеличивать эти 10% от депозита на 2, 3, 5, 10 и более число раз, что нам может позволять увеличение кредитного плеча. Зато имеет смысл ослаблять эти 10% на некоторое значение.

Если очень упрощенно, то если по формуле Келли 10% от депозита являются оптимальным значением размера сделки, то это будет соответствовать примерно ~100% возможной просадке, которая может случиться, а может и не случится. Соответственно, чтобы не рисковать слить весь депозит, нужно ограничить формулу Келли, умножив ее на 0.1-0.4, и получив таким образом вместо 10% от депозита уже 1-4%. Таким образом слить депозит уже не получится (если стратегия, конечно, работает).

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