d9e5a92d

Дмитрий Толстоногов - Основы Money Management III

Продолжим рассмотрение современных методов money management. Все рассматриваемые ниже методы являются антимартингальными, т.е. увеличивающими размер риска при увеличении капитала и уменьшающими его при уменьшении капитала, и предписывают рисковать фиксированной долей капитала (fixed fractional).

Управление дроудаунами.

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

фиксированной доле заданного максимального дроудауна:

Число_лотов = % Риска * (Капитал - (1 - Макс_%_Дроудаун) * Максимум_капитала) / начальный_риск_на_единицу_актива / 100.

Например, имея текущий капитал 100,000 рублей, максимальный достигнутый капитал 110,000 рублей и максимально допустимый дроудаун 20%, мы готовы рискнуть суммой, равной 10% от дроудауна. Тогда наш риск составит 1200 рублей (10% * (100,000 руб. -

80% * 110,000 руб.)). При риске на акцию 0.10 руб. мы сможем купить 120 лотов по 100 акций. Если бы цены изменялись непрерывно, издержки на совершение сделок отсутствовали, допускались дробные лоты, и трейдер обладал мгновенной реакцией, то, пользуясь этим методом, можно было бы гарантировать, что дроудаун не превысит заданного лимита.

Другой вариант использования дроудаунов - учитывать его максимальное историческое значение (взятое с запасом):

Число_контрактов = Капитал / (2 * Максимальный _дроудаун + маржа_на_контракт)

Метод Келли.

Метод определяет оптимальный процент риска, который следует применять для максимизации функции «полезности», представленной как логарифм капитала.

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

В «игре кандидатов гуманитарных наук», описанной в предыдущей статье, где в 60% попыток выигрывалась ставка, а в 40% попыток она же проигрывалась, оптимальной, по Келли, ставкой является 20% от текущего капитала. Обратившись к таблице 3 указанной

статьи, увидим, что 50-персентиль k-50 действительно достигает максимального значения 7490 при ставке 20%. Это означает, что 50% всевозможных исходов игр покажут прибыль 7490 и более. Картину портит тот факт, что 50% дродаунов превышают 79.09%, а максимальный достигает 99.43%. Готовы ли мы достичь максимально возможной прибыли ценой промежуточной 99-процентной потери

капитала? Вероятно, только в том случае, если мы хотим побить рекорд Ларри Вильямса. Его феноменальный результат вполне объясняется словами Ральфа Винса (Ralf Vince): «он - один из немногих индивидуумов, которые реально могут торговать при

полностью оптимальных величинах и проходить через сопутствующие дроудауны»

Метод Келли определяет % риска по следующей формуле:

Келли = %выигрышей - %проигрышей * Средний_убыток / Средний_выигрыш.

Отсюда мы можем вычислить размер позиции:

Число лотов s Келли * Капитал / начальный_риск_на единицу актива.

Торп рекомендует использовать % риска в диапазоне 0.5 * Келли <= % риска < Келли. В таблице 1 приведены результаты тестирования, из которых видно, что уже при риске 18% от Келли и выше, наша модельная простейшая система становится убыточной.

Оптимальное f. Метод является усовершенствованным Ральфом Винсом методом нахождения оптимального % риска. Формула Келли оперирует только с усредненными значениями, полученными из прошлых сделок. Ральф Винс предложил учитывать все трейды, решая в явном виде задачу оптимизации относительного конечного капитала TWR как функции f:

TWR ^ Max 0

где

TWR = П i=i,..,n (1 - f * Результат_сделки. / Максимальный_проигрыш)

Знак «минус» здесь потому, что проигрыш берется со своим знаком. По существу, метод подразумевает, что в будущем мы будем иметь такие же исходы сделок, но, возможно, в другом порядке. Решив задачу максимизации TWR, мы найдем значение f = f при котором

opt' ^ ^

функция TWR достигнет своего максимума. Зная f t , мы определим размер позиции:

Число лотов = fopt * Капитал / ( - Максимальный_проигрыш)

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

использовании оптимального f будет составлять не менее f % от счета Иными словами если f равно например 0 5 то мы иметь дроудаун по крайней мере в 50%. Ральф Винс утверждает, что «если вы не торгуете ради оптимальной прибыли, то вам место в психиатрической больнице, а не на рынке». Он не учитывает то обстоятельство, что получив 99% дроудаун при торговле «ради оптимальной прибыли», мы все равно рискуем занять место если не в психиатрической больнице, то, после отчета перед женой или инвесторами, в травматологической, так и не дождавшись максимального роста капитала.

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

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

максимальном проигрыше. Уровень риска, принимаемый при использовании f ........

opt, подразумевает, что мы никогда не получим большего

убытка.

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

достигнутые максимальный убыток и максимальный дроудаун останутся таковыми в будущем. Для вычисления f 11ПШ11Л

opt можно заменить в

формуле для TWR максимальный проигрыш величиной

Оценка_максимального_проигрыша = Средний_проигрыш - 3.5 * Стандартное_отклонение_проигрышей.

Но и это не решает проблему. Очевидно, исход будущей сделки есть случайная величина. Тогда оптимальное для этой сделки f есть

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

сделок, если только мы не сможем торговать справа налево. Продемонстрируем это утверждение на примере. Вычислим оптимальное f для модельной системы (при num = 1) последовательно для нескольких сделок, как показано в приложении 1. Для последних десяти сделок мы получим оптимальные значения 0.135, 0.134, 0.131, 0.123, 0.156, 0.142, 0.149, 0.137, 0.155, 0.165. Получается, что перед последней сделкой мы выбираем значение f, равное 0.155, тогда как оптимальным для этой сделки будет 0.165, то есть мы рискуем меньше оптимального. Хуже того, для третьей с конца сделки оптимальное f будет равно 0.137, а мы считаем его равным 0.149, принимая избыточный риск. Проще говоря, оптимальное f на самом деле не оптимально!

Безопасное f. Лео Заманский (Leo Zamansky) и Дэвид Стендал (David Stendahl) пытались преодолеть большие дроудауны, наложив дополнительное ограничение на максимальный допустимый дроудаун:

TWR Max 0

При условии

Максимальный_дродаун <= Допустимый_максимальный_дродаун.

Другой вариант - для вычисления безопасного f в формуле TWR использовать максимальный дроудаун (или его оценку) вместо максимального проигрыша.

Оптимальное f с учетом волатильности. Мюррей Руджеро (Murray Ruggiero) предложил адаптировать размер позиции, вычисляемый при помощи оптимального f, к текущей волатильности рынка. Идея основана на гипотезе, что при низкой волатильности рынка шансы получить большой убыток ниже, чем при высокой волатильности. Мы нормируем волатильность в диапазоне между нулем и единицей, где 0 означает максимальную волатильность, а 1 - минимальную:

Волатильностьнорм = (Максимальная_волатильность - Текущая_волатильность) / (Максимальная_волатильность -

Минимальная_волатильность)

Тогда

Число лотов fopt * Волатильностьнорм * Капитал / ( -Оценка_максимального_проигрыша)

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

Фиксированное отношение (Fixed Ratio). Общая проблема всех методов, использующих фиксированную долю капитала, заключается в том, что различные варианты методов либо решают задачу максимизации роста капитала безотносительно к риску (например, оптимальное f), либо минимизации риска (например, рисковать не более Х % от капитала). Пытаясь разрешить это

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

увеличения числа лотов на единицу (или на минимальное приращение числа лотов), должно быть величиной постоянной:

Предыдущий_уровень_капитала + Число_лотов * Delta =

Следующий_уровень_капитала.

Здесь величина Delta определяет, насколько агрессивно или консервативно мы применяем money management: чем больше Delta, тем

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

использовать волатильность.

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

с алгоритмом Джонса, с Delta, максимального значения, и далее с

пропорциональным возрастанием Delta

Сама идея метода выглядит весьма сомнительной: увеличение числа торгуемых лотов с одного до двух эквивалентно не увеличению

числа лотов с десяти до одиннадцати, как считает Райан Джонс, а с десяти до двадцати - это увеличение на 100%. Трейдеру важно не

количество торгуемых контрактов, а прирост капитала и риск, в относительных величинах.

Поиграем числами, как учит Райан Джонс. При помощи несложных математических преобразований (см. Приложение 3), мы получим формулу:

Число лотов = 0.5 + (2 * Прибыль / Delta + 0.25)Л(0.5).

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

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

капитала. Любой, знакомый с основами математического анализа, знает, что функция y = a * хл(0.5) при малых х принимает значения большие, чем линейная функция y = a * х, а при больших х наоборот (см. Рис. 1). Отсюда следует, что при малом размере капитала метод фиксированного отношения предписывает торговать большим количеством лотов, чем методы фиксированной доли капитала, а при большом размере капитала торговать меньшим количеством лотов. Иными словами, метод фиксированного отношения предлагает брать при малом размере капитала больший риск, чем критикуемые им «более рискованные» методы. Фактически, этот «новый» метод тоже предписывает рисковать фиксированной долей капитала, более агрессивно по сравнению с исходным. Примеры из книги, демонстрирующие преимущества своего метода, хорошо подобраны так, чтобы дроудауны возникли уже после того, как капитал заметно вырос.

Дмитрий Толстоногов - Основы Money Management III


Рис. 1. Сравнение функций при разных значениях аргумента.

Что касается упоминавшейся в предыдущей статье попытки Райана Джонса побить рекорд Ларри Вильямса в The Robbins 2001 Futures

Trading Contest, , то и в этот раз не получилось... После того, как за три месяца счет увеличился на 600%, с $15,000 до $107,000, он разослал предложение приобрести свою методику, которая реально, что подтверждено стейтментами, делает такие деньги. Помимо этого была еще подписка за $299 в месяц, уведомляющая о совершаемых в этом шоу трейдах. В итоге его капитал получил дроудаун 95%. Что и требовалось доказать.

Метод Ларри Вильямса. При установлении рекорда Ларри Вильямс использовал формулу Келли, в качестве начального риска

используя величину маржи на фьючерсный контракт. Динамика капитала была тоже поучительная: сначала капитал вырос с $10,000

до $2,100,000, затем опустился до $700,000 (дроудаун 67%), и завершил год на отметке $1,100,000. Кстати, в то время Ральф Винс работал у него программистом. Сейчас Ларри Вильямс рекомендует следующий вариант метода фиксированной доли капитала:

Число лотов = % риска * Капитал / (- Максимальный_проигрыш) / 100.

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

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

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

Число лотов = (%рисканач_капитал * (Начальный_капитал + MinList( Прибыль, 0)) + %рискаприбыль * MaxList( Прибыль, 0)) /

начальный_риск_ на_единицу_актива / 100.

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

Эффективный_риск = MarketPosition * (Цена_входа - Текущий_уровень_выхода) *

Число_лотов * Стоимость_пункта,

где MarketPosition равна 1 для длинных позиций, -1 для коротких, 0 без позиций. До тех пор, пока сделка не имеет нереализованной (бумажной) прибыли, эффективный риск положителен. Сделка, защищенная стоп-приказом на уровне безубыточности (breakeven),

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

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

Дополнительное_число_лотов = %Риска_гарантированной_прибыли * (- MinList( Эффективный_риск, 0)) / начальный_риск_на_единицу_актива / 100

Здесь MinList( ) означает наименьшее из списка. Ясно, что не имеет смысла брать %Риска_гарантированной_прибыли больший, чем

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

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

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

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

Избыточный_риск = число_лотов * Текущий_риск_ на_единицу_актива - Мах%риска * Капитал / 100

Избыточная_волатильность = число_лотов * Текущая_волатильность_актива -

Мах%волатильности * Капитал / 100.

Как только какая-то из этих величин становится положительной, мы уменьшаем размер позиции на величину

Избыточное_число_лотов = Избыточный_риск / Цена_лота

или, соответственно, на величину

Избыточное_число_лотов = Избыточная_волатильность / Цена_лота.

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

Подобные методы, в случае использования одной стратегии, примененной к одному активу, нетрудно реализовать на платформе TradeStation, как показано в Приложении 1. Однако в реальности, как правило, торгуются различные стратегии, примененные к портфелю активов, часто на разных временных интервалах, но с общим для портфеля капиталом. Как организовать money management на портфельном уровне практически, обсудим в следующий раз.

Приложение 1.

The Simplest System #3 with Money Management.

Copyright (c) 2002 DT

Input: Price((H+L)*.5),

PtUp(4.), PtDn(4.), {Max correction to change trend}

MM_Model(2), {1 = % Risk Model; 2 = % Volatility Model;

3 = Drawdown Model; 4 = Kelly Model; 5 = Williams' Model;

6 = Fixed Ratio Model; 7= Market Money Model}

MM(1), {% Risk parameter}

MM_add(0), {% Risk for playing market money; 0 to disactivate}

MaxVolat(100), {% Risk for playing market money; 100 to disactivate} MaxDD(20), {% Drawdown}

InitCapital(100000); {Initial capital to trade}

Vars: LL(99999), HH(0), Trend(0), Volat(TrueRange);

Vars: MP(0), Risk(Range), Num(1), add_num(0), red_num(0), FRDelta(0), DD(0),

Equity(InitCapital), TotalEquity(InitCapital), EqTop(InitCapital),

AssuredProfit(O), HPositionProfit(O), Kelly(0);

MP = MarketPosition;

Volat = .5 * TrueRange + .5*Volat[1];

if MP <= O then begin

if Price < LL then LL = Price;

if Price cross above LL*(1 + PtUp*.01) then begin

Trend = 1;

HH = Price;

end;

end;

if MP >= 0 then begin

if Price > HH then HH = Price;

if Price cross below HH*(1 - PtDn*.01) then begin

Trend = -1;

LL = Price;

end;

end;

If trend = 1 then Risk = PtDn * .01 * close {+ Slippage};

If trend = -1 then Risk = PtUp * .01 * close {+ Slippage};

HPositionProfit = maxlist( OpenPositionProfit, HPositionProfit);

AssuredProfit = HPositionProfit - Risk;

Equity = InitCapital + NetProfit;

TotalEquity = Equity + OpenPositionProfit;

EqTop = MaxList(EqTop, TotalEquity); if MM_Model = 1 then { % Risk Model }

Num = floor(MM * Equity *.01/Risk); if MM_Model = 2 then { % Volatility Model }

Num = floor(MM * Equity *.01/ Volat / BigPointValue ); if MM_Model = 3 then begin { Drawdown Model }

Num = floor(MM * (Equity - (1 - MaxDD*.01) * EqTop) * .01 / Volat / BigPointValue); end;

if MM_Model = 4 then begin { Kelly Model }

If TotalTrades > 20 and GrossProfit > 0 then

Kelly = NumWinTrades/TotalTrades * (1 - GrossLoss/GrossProfit)

else

Kelly = 0.1;

if Kelly > .9 then Kelly = .9;

Num = floor(MM * Kelly * Equity * .01 / Risk);

{Print(Kelly);}

end;

if MM_Model = 5 then begin { Larry Williams' Model }

value11 = MaxList(-LargestLosTrade / MaxList(CurrentContracts, 1) , Risk);

Num = floor(MM * Equity *.01 / value11); end;

if MM_Model = 6 then begin { Fixed Ratio Model }

{ DD = MaxList(DD, (EqTop - TotalEquity)/MaxList(CurrentContracts, 1)) ; {Max Drawdown} if TotalTrades > 20 and DD > 0 then FRDelta = MM * DD *.01 else }

FRDelta = MM * volat * BigPointValue * .01; {Delta}

value12 = MaxList(Equity - .5*close*(close + FRDelta)/FRDelta, 0.25);

Num = floor(SquareRoot(2*value12/FRDelta + .25) + .5); end;

if MM_Model = 7 then { Playing the market money }

num = floor((MM * (InitCapital + MinList(NetProfit, 0)) + MM_add * MaxList(NetProfit, 0)) * .01 / Volat / BigPointValue); { Entries}

if trend = 1 and trend[1] <> 1 then buy("Trend.LE") num contracts at market; if trend = -1 and trend[1] <> -1 then sell("Trend.SE") num contracts at market;

add_num = floor( MM_add * AssuredProfit * .01/ Volat / BigPointValue); { Assured Profit Pyramiding }

if add_num > 0 and OpenPositionProfit > Volat * BigPointValue then begin

if Trend = 1 and MP = 1 then buy("Add.LE") add_num contracts at market;

if Trend = -1 and MP = -1 then sell("Add.SE") add_num contracts at market;

end;

red_num = floor((CurrentContracts * Volat * BigPointValue - MaxVolat * TotalEquity * .01)/ close); if red_num > 0 then begin

if Trend = 1 and MP = 1 then exitlong("Red.LX") red_num contracts at market;

if Trend = -1 and MP = -1 then exitshort("Red.SX") red_num contracts at market; end;

if Num < 1 then Num = 1;

Приложение 2. Вычисление оптимального f в Excel.

Допишем к коду системы, оперирующей с одним лотом, следующие строки:

Excel output for optimal f computation Copyright © 2002 DT

Var: Trades(0), Str("");

Trades = totaltrades;

if currentbar = 1 then begin

FileDelete("D:\TS_Export\M-Trading3_OptF.csv");

Str = "Initial Equity" + "," + "Max Loss" + "," + "f" + "," + "Trades" + "," + "Geom Mean" + NewLine + NewLine + "Profit" + "," + "HPR" + "," + "TWR" + "," + "Equity" + "," + "Num" + NewLine;

FileAppend("D:\TS_Export\M-Trading3_OptF.csv", Str); end;

if trades <> trades[1] then

FileAppend("D:\TS_Export\M-Trading3_OptF.csv", NumToStr(PositionProfit(1),3) + newline);

и запустим систему. Введем в ячейку A3 значение начального капитала, в ячейку B3 формулу =МИН(A4:AХ), где АХ обозначает последнюю непустую ячейку в столбце А. В ячейку В4 введем формулу =1- C$2*A4/B$2 и продолжим до строки Х. В ячейку C2 введем любое число от 0 до 1, С4 = В4, С5 = С4*В5, D4 =A$2*C4, D2 = СЧЁТЕСЛИ(A4:AX,"<>0"), E2 = СТЕПЕНЬ(CX,1/D$2), E4 = ЦЕЛОЕ(D4/(B$2/-C$2)). Продолжим формулы в ячейках С4:Е4 до последней непустой строки Х. В столбце E получим число лотов при заданном в ячейке С2 значении f. Для вычисления оптимального f воспользуемся меню Сервис Поиск решения установить целевую ячейку: $C$Y (где Y - номер строки, соответствующей сделке, предшествующей той, для которой мы ищем оптимальное f); Изменяя ячейки: $C$2; Ограничения: $C$2 > = 0; $C$2 <= 1 Выполнить.

Встроенный в Excel оптимизатор найдет значение оптимального f, максимизирующего функцию TWR.

Приложение 3. Вывод формулы метода фиксированного отношения.

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

En + n * D = Er

где En - текущий капитал, n - текущее число лотов, D - параметр Delta. Тогда, по рекурсии,

En = En-1+ (n - 1) * D = En-2 + (n - 2) * D + (n - 1) * D = ...

= Ei + (1 + 2 + ... + (n - 1)) * D,

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

En = Ei + 0.5 * n * (n - 1) * D.

Полученное тождество есть квадратное уравнение относительно n:

пл2 - n - 2 * (En - E1 ) / D = 0.

Из курса анализа средней школы известно, что это уравнение имеет два корня:

n1 = 0.5 + (2 * (En - E1 ) / D + 0.25)Л(0.5)

и

n2 = 0.5 - (2 * (En - E1 ) / D + 0.25)Л(0.5), причем n2 <= 0. С учетом того, что En - E1 есть прибыль, мы получаем:

Число лотов = 0.5 + (2 * Прибыль / Delta + 0.25)Л(0.5).

Данная формула начинает торговлю с одного лота. Если начальный капитал позволяет сразу торговать большим количеством, то надо найти En - E1 с учетом начального капитала. Ясно, что En = Начальный капитал + прибыль. На одну Delta можно купить k = Цена / Delta акций. Соответствующий капитал Ek приравняем k * Цена = ЦенаЛ2 / Delta. Тогда

E1 = Ek - 0.5 * k * (k - 1) * D = 0.5 * Цена * (Цена + D) / D,

и искомая формула примет вид

Число лотов = 0.5 + (2 * (Начальный капитал + прибыль - 0.5 * Цена * (Цена + Delta) / Delta) / Delta + 0.25)Л(0.5).



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