d9e5a92d

Евгений Титов - Механическая торговая система, адаптивная к риску

Как замечательно, глядя на график изменения цен любой акции, торгуемой на любом рынке, видеть цены идеальной покупки и не менее идеальные цены продажи. Доходность этих «упущенных» операций достигает 2000—3000 % годовых при риске, близком к нулю. И можно не беспокоиться за свою нервную систему...

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

Как показывает практика, самой прибыльной является та система, основная торговая идея которой проста до примитивности. Предельным случаем такой системы может служить пересечение ценой закрытия двухдневной простой скользящей средней (ПСС). Однако подобная система, по мнению трейдеров, дает много так называемых «ложных» входов в позицию и выходов из нее. Для обработки ложных срабатываний устанавливаются различные фильтры, добавляются новые индикаторы, и в результате МТС теряет степени свободы, становясь все более зависимой от изменения цен на тестируемом периоде времени. Выход из такой ситуации некоторые трейдеры видят в создании 3-5 систем и входят в позицию, используя мажоритарное голосование их сигналов. И даже периодически исподволь подгоняют систему к историческим данным, «оптимизируя» некоторые параметры своих систем.

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

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

Контролируя риск, трейдеры используют различные методы управления капиталом (ММ — money management), накладывая их на свою МТС, и упускают из виду тот факт, что МТС с управлением капиталом и без него — это разные торговые системы. Хотя бы потому, что без ММ позиция открывается на все имеющиеся в распоряжении трейдера деньги и величина позиции до ее закрытия остается неизменной (так, например, работает System Tester в MetaStock 6.51).

К недостаткам систем, которые были доступны автору, относится отсутствие в явном виде уровня цен закрытия позиции. Иными словами, система не дает трейдеру возможности

Money Management



до начала торгов дать заявку дилеру на исполнение операции.

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

$EnterLong: Cross(A,B)

$CloseLong: Cross(B,A)

где A=Mov(close,t,s), — быстрая ПСС;

B=Mov(close,T,s) — медленная ПСС;

T > t — периоды осреднения ПСС.

По определению, для переменной X=close ПСС рассчитывается следующим образом:

1*1

л — ^ .

Назвав эту функцию Signal, запишем:

$Fml(«Signal»):

p0.= INPUT( «Тип скользящей, SMA = О, EMA = 1», 0, 1, 0); p1:= INPUT( «Короткий период», 1, 5, 3); p2:= INPUT( «Длинный период», 6,21, 8);

P:= if(p0 = 0, {then SMA}

((p2 *p1 *Mov( Close, p2, S) — p1 *ref( Close, -p2 + 1)) -

(p2 *p1 *Mov( Close, p1, S) — p2 * ref( Close, -p1 + 1))) / (p2 — p1), {else EMA} Mov( Close, p2, E) — (Mov(Close, p1,E) — Mov (Close, p2, E)) * (p1 — 1) * (p2 + 1) / (2 *(p2 -p1 ))); {end if}

P

Тогда сигналы МТС на открытие и закрытие позиций запишутся:

$EnterLong: Cross( Close, Ref(Fml( «Signal», «p0», «p1», «p2»), -1))

$CloseLong: Cross(Ref( Fml(«Signal», «p0», «p1», «p2»), -1), Close).

Это выражение для быстрой скользящей средней в рекуррентной форме имеет вид:

А.+ | = А + Л,“? м'

Аналогично для медленной:

Состояние рынка, наличие повышательного или понижательного трендов определяется соотношением Ai+1 и Bi+1, а именно знаком их разности sign(Ai+1 — Bi+1). При положительном знаке на рынке господствует восходящая тенденция, при отрицательном — нисходящая. Переключение позиций и, собственно, интересующая нас в этот момент цена актива наступит при Ai+1 = Bi+1.

Тогда справедливо равенство:

Ы=В + х<

(TW - гХ_ _,) - { Ти I - ТХ._іг) T-t '

Последнее выражение позволяет, имея по итогам торгов цены закрытия и значения простых скользящих средних A=Mov(close,t,s) и B=Mov(close,T,s), определить пороговое значение следующей торговой сессии, при пересечении которого ценой закрытия МТС изменит свое состояние.

Аналогичные преобразования можно сделать и для пересечения экспоненциальных скользящих средних (ЭСС) A=Mov(close,t,e) и B=Mov(close,T,e). Окончательно формула для ЭСС выглядит следующим образом:

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

Какую практическую пользу можно извлечь из сказанного?

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

Величина риска при входе в позицию

Предположим, что при входе в рынок (МТС дала сигнал EnterLong) в распоряжении инвестора имеется K денежных средств, а риск, установленный инвестором трейдеру, составляет на одну сделку не более f*100 % от капитала. Трейдер, в зависимости от соотношения цен покупки B и цен защиты от убытков S (уровень StopLoss), должен определить количество контрактов N, которым будет открываться длинная позиция.

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

N(B-S) < fK.

Разделив обе части на (B-S), получим:

N < fK/(B-S).

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

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

N < P/(B-S).

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

Достаточно распространено ошибочное мнение, что трейдер, входящий в позицию всей суммой имеющихся в его распоряжении денежных средств, этой суммой и рискует. Для количественного анализа риска проведем некоторые преобразования неравенства. Умножив обе его части на цену покупки B и помня, что C=BN есть объем денежных средств, затраченных при входе в позицию, получим:

C=BfK/(B-S).

Или:

C=afK.

где af=Bf/(B-S) — отношение объема денежных средств, затраченных при входе в позицию к величине счета инвестора;

a=B/(B-S) — рыночный коэффициент цены.

Приравняв af к единице (трейдер входит в позицию всей суммой), увидим, что f=(B-S)/B. Таким образом, при риске долей капитала равной 1, потенциальный убыток трейдера ограничен сверху относительным движением цены против позиции, и весь капитал может быть потерян только в том случае, когда цена продажи S по каким-либо причинам станет равной нулю (а это означает полную потерю ликвидности финансового инструмента).

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

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

Напомним, что до подачи МТС сигнала EnterLong на счету было Со денежных средств. Трейдер, руководствуясь этим сигналом и управляя рисками, купил N1 акций по цене Ві, и, таким образом, на счету осталось C1 денежных средств.

Переоценим портфель, используя для этого уровень цены S, при пересечении которой МТС закроет позицию (сигнал Close-Long):

K1= C1+N1S ,

где C=Co-NBi — остаток денежных средств.

Отсюда капитал на счету инвестора после первой покупки будет равен Ki=Cg-Ni(Bi-S).

После второй покупки на счету инвестора будет С2 денежных средств, N1 акций, купленных по цене Ві, и N2 акций, купленных по цене B2.

Поскольку С2=Сi-N2B2=Co -NB1-N2B2, капитал на счету инвестора будет равен K2=Co~Ni(Bi-S) -N202-S).

В случае если рынок развернется, то после продажи всего пакета по цене, определяемой S=fml(«Signal»), на счету инвестора окажется денежных средств С2, равных K2. Но управление рисками требует, чтобы эта сумма была не менее (1-f)Co.

C0-N1 (Bi-S)-N2(B2-S) Z (1-f)C0

Решив это неравенство относительно N2, определим количество акций, которое можно приобрести (добавить) к ранее открытой позиции:

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

где K — величина счета до входа в позицию;

N — количество акций, уже находящихся в портфеле;

В — средневзвешенная цена покупки ранее приобретенных акций;

S — цена продажи (ограничение убытков StopLoss либо выход из позиции StopLong), определяемые функцией $Fml(«Signal»);

f— доля капитала, исходя из допустимого риска. Полученное выражение является более общим, чем неравенство в начале этого раздела. Его можно использовать при входе в long, положив N=0, а также в любой момент, когда МТС находится в состоянии EnterLong. Более того, если брокер предоставляет кредитное плечо, трейдер сможет, по мере того как позиция становится все более прибыльной, направлять эту «плавающую» прибыль на дальнейшее увеличение своей позиции.

Проскальзывание сигналов МТС

Следует упомянуть о таком факте, как проскальзывание. Причем это понятие трактуется здесь более расширенно, чем обычно, а именно как разность между планируемой ценой закрытия (уровень $Fml(«Signal»)) и фактическим закрытием торговой сессии. Проскальзывание заложено уже в саму МТС применением оператора Cross: $Cross(Fml(«Signal»),close). Цена закрытия позиции будет всегда ниже планируемой, причем иногда настолько, что прибыльная позиция может становиться убыточной. В нашей торговой системе максимальное проскальзывание однажды составило 15 %.

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

Money Management



то решение учитывать проскальзывание в своих операциях, то во всех формулах защиты капитала необходимо S уменьшить на S.

Математически проскальзывание определяется уравнением:

_ Sijptai - Clow

.

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

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

?6.:

где Si — проскальзывание каждой системной сделки;

I — общее количество сделок на тестируемом периоде.

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

Пример

10 сентября 1999 года трейдер решил по цене close, равной 1,861 руб., приобрести акции РАО «ЕЭС России», естественно, руководствуясь сигналом МТС на покупку. Уровень защиты капитала установлен на предыдущий локальный минимум low, равный 1,710. На счету 300 000 руб., /равняется 1.

af= Bf/(B-S)= 1861 * 1/11,861-1,710) 12,32

Если leverage не предоставляется, будет куплено

N=K/B=300.000,00/1,861 = 161200 ставит 161200*1,861-1,710)=24.341,20 руб., ет только 8,13 % от счета.

Если же трейдер, воспользовавшись leverage, увеличит позицию в

Of, раз, приобретя акций на сумму 12,32*300.000,00=3.696.000,00 руб. в количестве N=K/B=3 696 000,00/1,861 = 1 986 000 штук, то

возможный убыток составит 1 986 000*(1,861-1,710) = 299 886 руб.

Отметим, что условие для закрытия позиции по StopLoss ниже 1,710 руб. возникло 13 сентября 1999 года, то есть на следующий торговый день.

но:

Функции MetaStock 6.51 для статистического оценивания проскальзывания выглядят следующим образом:

$Fml( «Slip0»):= If( Cross(Ref(Fml( «Signal»), -1), Close), (Ref(Fml ( «Signal»), -1) — Close) / Ref(Fml( «Signal»), -1), 0);

$Fml(«SlipI»):= If( Cum(If(Fml( «Slip0») > 0,1, 0)), 1, Cum(If(Fml

(«Slip0») > 0,1, 0)));

$Fml( «SlipE»):= Cum( Fml( «Slip0»)) / Fml( «SlipI»);

$Fml( «SlipF»):= Cum(Power(Fml(«Slip0»), 2))/ Fml( «Slipl»)

Здесь SlipO — ряд значений проскальзывания, которые собственно и оцениваются;

SlipI — общее количество сделок, сгенерированных System Tester на загруженных данных;

SlipE — среднееарифметическое значение проскальзывания на тестируемом периоде;

SlipF — среднеквадратическое значение проскальзывания на тестируемом периоде.

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

$Fml( «SlipS»):= Fml( «SlipE») + Power( Fml( «SlipF») — Power

(Fml( «SlipE»), 2), 0.5) / 3

Безусловно, с математической точки зрения такой подход к параметру S недостаточно корректен, однако как метод управления капиталом он вполне оправдывает себя.

Оптимальное значение риска

Доходность МТС за одну сделку можно выразить как отношение величины счета после закрытия длинной позиции к величине счета до ее открытия (здесь V — цена закрытия позиции):

p=P/K=(K*(1-af)+N*V)/K,

Рис. Зависимость уменьшения капитала от риска одной сделки (максимальное количество убыточных сделок в серии равняется 4)

руемый период выразится в виде произведения сомножителей, больших единицы для прибыльных сделок и меньших единицы для убыточных. Каждый трейдер знает, что если в результате убыточной сделки счет уменьшился, к примеру, на 5 %, то для компенсации этого падения следующая прибыльная сделка должна принести не менее 5,26 %. Именно поэтому наибольшее влияние на общую доходность системы будут оказывать серии подряд идущих убыточных сделок. И в качестве одной из важнейших характеристик МТС необходимо рассматривать максимальное количество подряд идущих убыточных сделок в произвольной их серии, причем за одну сделку следует считать соседние по времени сигналы Enter-Long и CloseLong торговой системы.

В то же самое время входным условием работы трейдера, помимо ограничения убытков от одной сделки, должно быть ограничение на уменьшение счета инвестора в результате серии подряд идущих убыточных сделок. Учитывая, что для убыточных сделок при управлении рисками в=1, а риск на каждую последующую убыточную сделку для общности установлен произвольно f=f, то доходность серии подряд идущих убыточных сделок можно представить как функцию от риска и номера убыточной сделки в серии p=F(f,l). Эта функция характеризует стратегию поведения трейдера на рынке.

p=F(f,l)=n(1-f)=(1-f)L — стратегия с постоянным риском;

p=F(f,l)=n(1-f)=(1-f/1)*(1-f/2)*(1-f/3)*...* (1-f/L) — консервативная стратегия; P=F(f,l)=n(1-f)= (1-f*1)*(1-f*2) * (1-

f*3)*...*(1-f*L) — агрессивная стратегия.

Каждой стратегии можно дать обоснование, каждая стратегия имеет свои достоинства и недостатки.

Главным достоинством стратегии с постоянным риском является простота такой стратегии. В каждую сделку трейдер входит с постоянным f=fopP рассчитываемым следующим образом.

Перепишем в виде pK=K(1-f)L? qK. Решив относительно f, получим:

f<=1-q1/L и f0pt=1-q1/L,

где L — максимальное количество подряд идущих убыточных сделок;

q — коэффициент максимально допустимого снижения капитала. При применении консервативной стратегии необходимо любым, но проще всего графическим методом решить уравнение относительно f. Тогда в первую сделку, совершаемую после прибыльной, трейдер входит с долей капитала af; в следующую, если предыдущая

была убыточной, — с долей капитала af/2 и т. д.

При применении агрессивной стратегии, также решив уравнение относительно f, трейдер входит в сделки долями af, 2af, 3af и т. д.

Графическое решение уравнений для случая максимального количества убыточных сделок в серии равняется 4 и при допустимом снижении капитала до 80 % показано на рисунке. Здесь кривой A обозначена зависимость снижения размера счета от величины допустимого риска при стратегии постоянного риска, кривой B — при консервативной стратегии, кривой C — при агрессивной стратегии. Графическое решение дают следующие значения fopt: для кривой A — 5,4 %, для кривой B — 10,3 %, для кривой C — 2,0 %.

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

Анализ управления рисками в торговой системе

Как указывалось выше, МТС с управлением капиталом и без такового — это две разные системы. Различные методы управления рисками в рамках управления капиталом — это тоже разные торговые системы. Таким образом, суммируя сказанное в предыдущих разделах, мы получаем 5 различных МТС на основе одной торговой идеи:

МТС1. Торговая система без управления рисками. Ее примером служит Tester System в MetaStock.

МТС2. Торговая система с управлением рисками. В этой системе используется f<1, но добавления к позиции не производится и проскальзывание не учитывается.

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

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

МТС5. Торговая система с управлением рисками. В этой системе используется f*0, производится добавление к позиции и учитывается проскальзывание.



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



Здесь и далее формулы, помеченные $, даны в терминах MetaStock 6.51.



N=f*K/(B-S) и a=B/(B-S).

Отсюда:

p=1-f*(Bi-Vi)/(Bi-Si).

Тогда за весь тестируемый период общая доходность МТС будет равна произведению доходностей каждой сделки:

p0=n[p]i=n[1-f*(BfVi)/(BfSi)]=n(1-fPi).

Возникает соблазн определить значение f. Назовем его fopP максимизирующее общую доходность системы за тестируемый период. К большому нашему сожалению, при P=const=var возможно приближенное решение этого уравнения только для определенного периода времени конкретного рынка, и, таким образом, найденное в прошлом значение fopt ничего не даст нам в будущем и не может стать характеристикой торговой системы.

Приходится искать fopP используя другие подходы.

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



Содержание раздела