Turtle: глава третья – Robo.trading

Turtle: Глава третья

Размер позиции

У «Черепах» был свой особый алгоритм для определения размера позиций (суммы ордера), которой открывать позиции. Алгоритм основывался на волатильности. При этом риск размера убытка в процентах получался постоянным, а не менялся из-за изменения волатильности рынка. Определение размера позиции — один из самых важных, но наименее понятных компонентов любой торговой системы. «Черепахи» использовали алгоритм определения размера позиции, который был очень продвинутым для своего времени, потому что он нормализовывал волатильность позиции относительно доллара, регулируя размер позиции на основе волатильности рынка к доллару. Это означало, что данная позиция будет иметь тенденцию двигаться вверх или вниз в данный день примерно на одну и ту же сумму в долларовом выражении (по сравнению с позициями на других рынках), независимо от базовой волатильности конкретного рынка.

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

Примечание переводчика: попробую перефразировать, так должно стать еще более понятно. Если рынок, скажем, в январе более волатильный (цена часто очень сильно и резко меняется), то алгоритм уменьшит размер позиций, и поэтому изменения счёта трейдера станут не такими уж значительными, что снизит риск или убыток (но снизит и прибыль). И наоборот, апрель был очень спокойным месяцем, цена почти не менялась, но из-за этого алгоритм увеличил сумму позиции, и малейшие скачки рынка стали сильно влиять на счёт. Проще говоря, такой механизм делает изменение счёта более равномерным. Скажем трейдер может получить прибыль или убыток в пределах 10% за месяц (допустим у него такие настройки), и это не зависело от того насколько волатильным был месяц, 10% прибыли или убытка он мог получить и в самый спокойный месяц и в самый «дикий» месяц. Что во многом удобно.

 

Волатильность — Значение N

«Черепахи» использовали концепцию, которую Ричард Деннис и Билл Экхардт назвали N, чтобы представить основную волатильность конкретного рынка. N — это просто 20-дневная экспоненциальная скользящая средняя (Exponential Moving Average — EMA) истинного диапазона (True Range — TR), который сейчас более известен как «Истинный средний диапазон» (Average True Range — ATR).

Примечание переводчика: вот здесь легко ошибиться. Использование экспоненциальной скользящей средней (EMA) для расчета среднего истинного диапазона — это лишь один из методов расчета ATR. А часто в различных системах используется другой метод расчета ATR, например, используют простую скользящую среднюю (Simple Moving Average — SMA), а не экспоненциальную. При этом индикатор всё равно называется также ATR, поэтому тут нужно уточнить как он рассчитывается в конкретной системе анализа, по экспоненциальной или иной. Впрочем, расчет ATR иным методом не обязательно хуже, может быть и лучше, но тогда Ваши результаты торговли (или бэктеста) уже не совпадут с описанными здесь.

Концептуально, N представляет средний диапазон ценового движения, которое конкретный рынок совершает в течение одного дня, учитывая открывающиеся разрывы (гэпы).

Рис 1. Гэп. Текущая свеча открылась намного выше.

Примечание переводчика: все рынки мы можем условно разделить на «непрерывные» и «прерывные». Прерывные рынки (биржи) закрываются на ночь, на выходные дни, на праздничные дни. Как правило, это рынок акций, облигаций, фьючерсных контрактов на товары. Тогда как рынок Форекс или рынок криптовалют, как правило, непрерывный. Гэпы (разница между ценой открытия свечи и ценой закрытия предыдущей свечи) это более свойственное явление для «прерывных» рынков. Например, рынок закрылся в пятницу по какой-то цене, а в воскресенье произошло некое ужасное событие, из-за которого ценность актива сильно снизилась, однако, трейдеры не могут отреагировать на событие в воскресенье, так как биржа просто закрыта. Они отреагируют в понедельник утром, когда смогут, и вот тогда цена открытия свечи в понедельник (хоть дневная свеча, хотя часовая) окажется намного ниже чем цена закрытия предыдущей свечи (которая была в пятницу). Порой эта разница достигает и несколько процентов сразу. То есть гэпы — это более важно для «прерывных» рынков.

 

Формулы

Так рассчитывается истинный диапазон движения цены:

True Range = Maximum(High — Low, High — PDC, PDC — Low)

Где:

  • High – максимальная цена текущей свечи
  • Low – минимальная цена текущей свечи
  • PDC – цена закрытия предыдущей свечи

 

Так рассчитывается N:

N = (19 × PDN + TR) / 20

Где:

  • PDN – N предыдущей свечи
  • TR – TR текущей свечи

 

Примечание переводчика: откуда взялось число 19 и почему именно 19? В формуле расчёта N рассчитывается среднее, где и нужно исключить последнюю свечу, то есть 20 — 1 = 19. Откуда взялось число 20 и почему именно 20 догадаться чуть сложнее. На «прерывных» рынках в среднем около 22 торговых дней в месяце. 20 это просто округлённое число. То есть получаем так примерно среднее за месяц. Однако, тут возникает вопрос как лучше поступить с «непрерывными» рынками, ведь там нет выходных, и среднее количество дней в месяце уже 30,5 (в високосный год). И всё это относится именно к дневному таймфрейму. Поэтому сразу возникает идея пробовать период 30 для «непрерывных» рынков, и даже период 24 для часового таймфрейма на круглосуточных рынках. Весь раздел «Код для TradingView» сделан переводчиком, а в оригинале этого не было.

 

Код для TradingView

В языке PineScript 4-ой версии (на момент создания этого материала была последней версией) имеется команда «tr», которая делает те же расчеты. Но мы покажем оба варианта, с использованием команды «tr» и без неё (для тех кто хочет применить другой язык). Нижнее подчёркивание «_» в названиях переменных нужно, так как пробелы в переменных PineScript недопустимы. High, Low и Close нужно писать с маленькой буквы, так как язык PineScript является чувствительным к регистру, и с большой буквы их просто «не поймет». Квадратные скобки после Close с цифрой 1 означают буквально — значение смещённое на 1 свечу в прошлое. Таким образом наше «close[1]» это и есть PDC.

//@version=4
study(«N»)

//Вариант 1
True_Range1 = max(high — low, high — close[1], close[1] — low)
plot(True_Range1)

//Вариант 2
True_Range2 = tr
plot(True_Range2)

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

N is simply the 20-day exponential moving average of the true Range

Что дословно переводится как:

N это простая 20-дневное экспоненциальное скользящее среднее от истинного диапазона

И иначе то это никак не перевести. А потом автор оригинального материала даёт формулу расчёт RMA, а не EMA! В итоге не понятно даже что предлагает использовать оригинальный автор, RMA или EMA? Впрочем, по опыту знаю что на расчеты эта разница повлияет крайне незначительно. И скорее всего именно поэтому другие переводчики и не заметили ошибки, из-за того что разница столь уж не велика. Не исключено что и сам оригинальный автор не различает RMA и EMA, что плохо и вызывает сомнения в его компетенции. Однако, компетенция автора книги это одно, а компетенция автора стратегии Ричарда Денниса — это другое, и она у меня сомнений не вызывает. Команда «nz» заменяет пустое значение на ноль, так как изначально на первой свечке оно именно пустое. Чтобы этот код работал нужно добавить эти новые строки под старые строки из примера выше.

//Вариант 1
N1 = 0.0
N1 := (19 * nz(N1[1]) + True_Range1) / 20
plot(N1)

//Вариант 2
N2 = rma(True_Range2, 20)
plot(N2)

//Вариант 3
N3 = ema(True_Range2, 20)
plot(N3)

В языке PineScript 4-ой версии имеется команда RMA, которая делает те же самые расчёты (в коде вариант 2). Однако, Вы можете проверить и оригинальный вариант автора книги (в коде вариант 1). Кроме этого я добавил еще и вариант с EMA, который считаю неправильным (в коде вариант 3), для этого тоже есть отдельная команда. Но это я этот вариант считаю неправильным, а Вы возможно посчитаете иначе. В любом случае у Вас толковый переводчик, который хорошо разбирается в том что пишет ? О видах скользящих средних и их смысле Вы можете почитать дополнительно на русскоязычной Википедии (но там сложно). А далее передаю слово оригинальному автору книгу.

Википедия: https://ru.wikipedia.org/wiki/Скользящая_средняя

 

Корректировка волатильности доллара

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

Волатильность доллара = N × долларов на пункт

 

Единицы изменяемой позиции волатильности

Черепахи строили позиции по кусочкам, которые мы называли «Юнитами». Единицы были рассчитаны таким образом, чтобы 1 N представлял 1% от суммы счета. Таким образом, единица для данного рынка или товара может быть рассчитана по следующей формуле.

1 Юнит = 1% от суммы счёта / волатильность доллара

или

1 Юнит = 1% от суммы счёта / N × долларов на пункт

 

Примеры

Рассмотрим фьючерсные контракты на мазут HO03H, цены, истинный диапазон и значения N для мазута на марта 2003 года (дата экспирации фьючерсного контракта). Единица измерения на 6 декабря 2002 года (с использованием значения N 0,0141 от 4 декабря) выглядит следующим образом:

N = 0,0141
Размер счёта трейдера = 1.000.000 долларов
Долларов за пункт = $42.000

Размер юнита = 0,01 × $1.000.000 / 0,0141 × $42.000 = 16,88

Таблица 1. Пример из книги

Примечание переводчика: счёт трейдера в 1 миллион долларов автором выбран не для красоты, ученики Денниса действительно начинали торговать счетами от $250.000 до $1.000.000, и эти деньги он выделил ученикам из личного капитала. Не удивляйтесь датам, в таблице английский формат даты. То есть сначала номер месяца в году, потом число месяца, и в конце год. Нелюди.

Поскольку невозможно торговать частичными контрактами (на криптовалютных биржах можно частичными — примечание переводчика), это будет округлено до целого числа в 16 контрактов. Вы можете спросить: «Как часто необходимо вычислять значения для N и размера блока?». «Черепахи» получали в понедельник каждой недели лист с размерами юнитов, в котором указывалось N, а также размер юнита в контрактах по каждому фьючерсу, которым мы торговали.

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

 

Важность определения размера позиции

Диверсификация — это попытка распределить риск по многим инструментам и увеличить возможность получения прибыли за счет увеличения возможностей для ловли успешных сделок. Для правильной диверсификации необходимо делать одинаковые, если не идентичные ставки на разные инструменты. Система Turtle использовала волатильность рынка для измерения риска, связанного с каждым рынком. Затем мы использовали это измерение риска для построения позиций с приращениями (имеется ввиду пирамидинг — примечание переводчика), которые представляли собой постоянную величину риска (или волатильности). Это усилило преимущества диверсификации и увеличило вероятность того, что выигрышные сделки компенсируют убыточные сделки. Обратите внимание, что эту диверсификацию гораздо сложнее достичь при использовании недостаточного торгового капитала. Рассмотрим приведенный выше пример, если был использован счет на $100.000 долларов. Размер единицы был бы одним контрактом или двумя, поскольку 1,688 округляется до 1 или 2. Для небольших счетов гранулярность корректировки слишком велика, и это значительно снижает эффективность диверсификации.

 

Юниты как мера риска

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

Примером необычного движения цен был день после обвала фондового рынка в октябре 1987 года (имеется ввиду знаменитый чёрный понедельник — примечание переводчика). ФРС США понизила процентные ставки на несколько процентных пунктов в одночасье, чтобы повысить доверие к фондовому рынку и стране. «Черепахи» были загружены в длинную позицию во фьючерсах процентной ставки: евродоллары, TBills и облигации. Потери на следующий день были огромны. В некоторых случаях от 20% до 40% средств на счетах было потеряно за один день. Но эти потери были бы соответственно выше без ограничения максимальной позиции. Пределы были такими как в таблице снизу.

Уровень Тип Максимальное количество юнитов
1 На одном рынке (паре) не более 4
2 Рынки с сильной корреляцией 6
3 Слабосвязанные рынки 10
4 В одном направлении (лонг или шорт) 12

Таблица 2. Пример ограничения рисков из книги

 

Примечание переводчика: для лучше понимания этих принципов попробую перефразировать. На одном активе (на одной торговой паре) можно было входить в позицию на сумму до 4-ех юнитов, но не более. На очень похожих парах, однотипных (или активе) в сумме можно было открывать позиции на сумму не более 6 юнитов. Например, фьючерсный контракт на золото и на серебро — это скорее очень похожие активы, и если на золоте уже открыта позиция на 4 юнита, то на серебре можно открыть только на 2 юнита (ограничение для однотипных скоррелированных активов до 6 юнитов ведь). Но это на серебре можно только 2, а фьючерсных контрактов на хлопок тогда можно было купить 4. Скоррелированы активы между собой или нет сегодня очень легко определить благодаря индикатору «Коэффициент корреляции», который обычно встроенный и есть по умолчанию в большинстве систем технического анализа, включая и TradingView.com. Но продолжим пример. Если взять все длинные позиции (лонг), то в сумме все они, не зависимо от рынка, не должны были превышать 12 юнитов. А это значит что если трейдер уже открыл лонгов на 12 единиц, то теперь ему можно открывать только шорт.

На одном рынке (паре): Максимум четыре юнита на рынок.

Сильно скоррелированные рынки: Для рынков, которые тесно связаны, может быть максимум 6 юнитов в одном конкретном направлении (т.е. 6 юнитов для лонга или 6 юнитов для шорта). К тесно взаимосвязанным рынкам относятся: мазут и сырая нефть; золото и серебро; Швейцарский Франк и Немецкая Марка; TBill и Евро/Доллар и др.

Слабосвязанные рынки: Для слабо скоррелированных рынков может быть максимум 10 юнитов в одном конкретном направлении. Слабосвязанные рынки включали: золото и медь; серебро и медь, а также многие зерновые комбинации, которые «Черепахи» не торговали из-за ограничений позиций.

Одно направление: Максимальное количество полных юнитов в одном или двух направлениях было 12. Таким образом, теоретически можно было бы иметь 12 юнитов в длинных позициях и 12 юнитов в коротких то же время. «Черепахи» использовали термин «загружен». Таким образом, «загружен в Йенах» означает наличие максимум 4 юнитов в контрактах на Японскую Йену. Полностью загруженный означает наличие 12 юнитов.

 

Регулировка торгового размера

Будут времена, когда рынок не «трендится» в течение многих месяцев. В это время можно потерять значительный процент средств на счете. После закрытия крупных выигрышных сделок можно увеличить размер капитала, используемого для расчета размера позиции. «Черепахи» не торговали на обычных счетах с текущим балансом, основанным на первоначальном эквити. Нам дали условные счета с начальным капиталом, равным нулю, и конкретным размером счета. Например, многие «Черепахи» получили условный размер счета в размере 1.000.000 долларов, когда мы впервые начали торговать в феврале 1983 года. Затем этот размер счета корректировался каждый год в начале года. Он был скорректирован вверх или вниз в зависимости от успеха трейдера, который был субъективно измерен Ричем. Увеличение/уменьшение обычно представляло собой нечто, близкое к добавлению прибылей или убытков, которые были сделаны на счете в течение предыдущего года.

«Черепахам» было дано указание уменьшить размер условного счета на 20% каждый раз, когда мы проигрывали 10% первоначального счета. Таким образом, если бы «Черепаха», торгующая счетом в $1.000.000 долларов, когда-либо проиграл 10% от счёта (или $100.000 долларов), мы бы тогда начали торговать так, как если бы у нас был счет в $800.000 долларов до того момента, пока мы не достигнем годового начального капитала. Если бы мы потеряли еще 10% (10% от $800.000 долларов или $80.000 долларов при общей потере $180.000 долларов), мы должны были уменьшить размер счета еще на 20% для условного размера счета в $640.000 долларов. Существуют и другие, возможно, более удачные стратегии уменьшения или увеличения капитала при увеличении или уменьшении счета. Это правила, которые использовали «Черепахи».

 

Резюме третьей главы

Примечание переводчика: в оригинальном тексте у третьей главы не было резюме, так что это тоже плод фантазий переводчика. Всё выше описанное относится к понятию «риск-менеджмент». К нашему сожалению здесь описано тонко-настроенная система риск-менеджмента, которая настроена именно под американский рынок. Более того, еще под конкретное время, и было это давно. Сегодня американский рынок уже совсем другой, и описанная система риск-менеджмента будет уже не так хороша для него. Что еще хуже, автор описал систему риск-менеджмента, но не описал никаких принципов её построения. То есть указано какие были ограничения, но почему ограничения были именно такие, исходя из какой логики? Так что данная глава для нас во многом бесполезна, но не совсем. Глава даёт некие общие представления, как вообще выглядит хоть примерно этот самый риск-менеджмент, который реально хорошо работал на практике, где-то там далеко хоть кем то применялся. Впрочем небольшую пользу мы здесь извлечь тоже можем, мы тоже можем вводить некие похожие ограничения. Даже на рынке криптовалют.

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

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

/

Robo.Trading

eVe Developer
Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять