Дмитрий Толстоногов - Основы Money Management II
В предыдущей статье мы определили money management как часть торговой системы, которая определяет, какой риск следует брать при открытии позиции и какой размер позиции следует держать в данный момент, по отношению к капиталу. В настоящей мы рассмотрим известные методы money management.
Толковый словарь money management
Money Management - (управление капиталом) часть торговой системы, которая определяет, какой риск следует брать при открытии позиции и какой размер позиции следует держать в данный момент, по отношению к текущему капиталу.
Математическое ожидание прибыли есть сумма произведений вероятностей выигрышей, умноженных на величину этих выигрышей, минус сумма произведений вероятностей проигрышей, умноженных на величину проигрышей:
Е = ? .(Вероятность выигрыша. * выигрыш. ) - ? ^Вероятность проигрышу * проигрыіш )
Математическое ожидание можно грубо оценить, как вероятность выигрыша (%Win/100), умноженных на средний выигрыш (AvgWin), минус вероятность проигрыша (%Loss/100), умноженного на средний проигрыш (AvgLoss).
Начальный риск - это количество денег, которое мы готовы потерять, прежде чем выйти из убыточной сделки, в расчете на одну акцию (контракт). А именно, это разность между точкой входа в позицию и точкой выхода из позиции с убытком.
Текущий (открытый) риск - это разность между текущей ценой и точкой выхода из позиции.
Мартингал (martingale) - увеличение размера позиции при уменьшении капитала.
Антимартингал (antimartingale) - увеличение размера позиции при увеличении капитала.
Волатильность - мера изменчивости цен за определенный промежуток времени.
Очевидно, что если мы будем ставить слишком мало, то не окупим затраченное время, энергию и выпитое пиво. Гораздо менее очевидно, что если мы будем ставить слишком много относительно имеющегося капитала, то рано или поздно мы проиграем весь свой капитал. Экономические теории и здравый смысл говорят нам, что чем выше риск, тем выше ожидаемый доход. Это утверждение неверно: доход нелинейно зависит от риска.
Предположим для простоты, что в нашем трейдинге возможны только два исхода: потеря ставки в случае проигрыша с вероятностью 100 - PctWin, либо выигрыш WinToLoss * размер ставки с вероятностью PctWin. В этом случае математическое ожидание равно
Expectancy = PctWin * 0.01 * WinToLoss - (1 - PctWin * 0.01)
Пусть параметры PctWin и WinToLoss заданы, и мы можем только управлять размером ставки. Рассмотрим зависимость прибыли после 100 сделок от размера ставки, при различных значениях параметров PctWin и WinToLoss. Будем использовать моделирование методом Монте-Карло. Для этого многократно будем повторять серии по 100 трейдов для каждой комбинации параметров размер ставки, PctWin, WinToLoss. Конкретный исход сделки - выигрыш или проигрыш - будет определяться генератором случайных чисел.
Покажем, как метод Монте-Карло можно реализовать в TradeStation. Код соответствующего сигнала приведен в Приложении 1. Его следует скопировать в PowerEditor, создать в StrategyBuilder стратегию с этим сигналом, применить ее к любому графику и запустить в TradeStation оптимизацию параметров, как показано на рисунке 1.

Рисунок 1.
Эта стратегия будет сохранять в файл на каждом баре графика прибыль для всех комбинаций параметров и серий случайных исходов сделок. Следует иметь в виду, что число баров * число комбинаций параметров не должно превышать 65536 (максимальное число строк в Excel). Функция Random(100) на каждом баре будет генерировать равномерно распределенную случайную величину от 1 до 100. Тогда знак величины PctWin - Random(100) будет с вероятностью PctWin определять, выигрыш или проигрыш мы получили в каждой конкретной сделке, а размер выигрыша будет равен WinToLoss.
Графики зависимостей средней по всем Монте-Карло тестам прибыли от параметров можно затем построить в Excel. В качестве примера вспомним игру кандидатов гуманитарных наук из нашей предыдущей статьи, где в 60% выигрывалась ставка, а в 40% попыток она же проигрывалась. Чтобы построить график зависимости средней прибыли от размера ставки в данной игре, следует
о запустить в TradeStation оптимизацию стратегии по параметру PctRisk = 5, 10, ..., 90 при фиксированных значениях PctWin = 60%, WinToLoss = 1;
о открыть в Excel файл D:\TS_Export\MTrading_MMII.csv;
о в столбец F ввести значения оптимизируемых параметров, а в столбец G формулы
=СУММЕСПИ(A$1:A$20860," = 5",E$1:E$20860)/СЧЁТЕСПИ(A$1:A$20860," = 5") =СУММЕСЛИ(A$1:A$20860,"=10",E$1:E$20860)/СЧЁТЕСЛИ(A$1:A$20860,"=10")
и т. д.
В итоге получим график, подобный приведенному на Рис. 2.

Форма и значения кривой могут несколько различаться при различных имитациях - случайные числа выпадают по-разному - но неизбежно прибыль с увеличением риска сначала будет возрастать, а затем убывать.
При всем многообразии алгоритмов money management их можно разделить на два класса: мартингал (martingale) и антимартингал (antimartingale).
Мартингальные методы утверждают, что при уменьшении капитала размер риска следует увеличивать. Эти методы популярны у игроков, пытающихся извлечь выгоду из серий убыточных сделок.
Рассмотрим применение мартингальной стратегии в казино: мы ставим $1 на выпадение цвета и каждый раз удваиваем ставку после проигрыша. После выигрыша начинаем снова с $1. Если мы проиграли 10 раз подряд, что может случиться с вероятностью (19/37)
А10,
или 0.13%, то мы должны поставить $1024 для того, чтобы выиграть $1. Поскольку в этом случае отношение ожидаемый доход / риск катастрофически мал, принято считать, что мартингальные методы нельзя применять в трейдинге. Однако, стоит иметь в виду, что в популярных методах следования за трендами
1. выигрыши, как правило, в 2-3 раза выше, чем проигрыши;
2. серии небольших проигрышей типично чередуются большими выигрышами.
Поэтому мартингальные методы, на наш взгляд, заслуживают серьезного изучения.
Антимартингальные методы утверждают прямо противоположное: размер риска следует увеличивать при увеличении капитала и
уменьшать при его уменьшении.
Известные антимартингальные методы предписывают рисковать фиксированной долей капитала (fixed fractional):
о Торговать постоянным числом акций - ниже мы покажем, что с оговорками этот метод можно отнести к антимартингальным;
о Использовать весь доступный капитал;
о Торговать одним лотом на каждые Х рублей счета;
о Разделить счет на равные доли соответственно торгуемым активам;
о Рисковать долей капитала;
о Рисковать пропорционально волатильности торгуемого актива;
о Метод Келли, оптимальное f, и их вариации.
К антимартингальным методам можно отнести и метод фиксированного отношения (fixed ratio), принадлежащий Райану Джонсу (Ryan
Jones). Метод утверждает, что отношение количества торгуемых акций к приращению капитала, необходимому для увеличения числа акций, должно быть величиной постоянной. Райан Джонс был настолько уверен в преимуществах своего метода над остальными, что в прошлом году решил побить рекорд Ларри Вильямса (Larry Williams), установленный на Кубке Мира по трейдингу еще в 1987 году,
когда тот за год, реально торгуя фьючерсами на S&P500 и T-Bonds, увеличил капитал с $10,000 до $1,147,000. В числе призеров 2000
года Райана Джонса, увы, не оказалось, но на 31 мая 2001 года он уверенно лидировал с результатом +226%.
Положительным аспектом антимартингальных методов является тот факт, что они позволяют счету расти геометрически.
Наиболее распространенным методом money management является отсутствие управления капиталом. Встречаются три его разновидности.
1. Money management для гэмблеров
Метод предписывает ставить на один трейд весь имеющийся капитал с максимально допустимым плечом. Вне зависимости от результата, закрывать счет и уходить либо с убытком 100%, либо с прибылью, равной
(Кредитное плечо* Выигрыш_в_пунктах * Стоимость_ пункта /
Размер_начального депозита - 1) * 365 / Дней_в_позиции
% годовых.
Рекомендуется для новичков, желающих быстро заработать большую прибыль. Особенно хорошо метод работает при использовании левеража (плеча) 1:100 и выше: при отсутствии стратегии с положительным математическим ожиданием этот метод оптимален. Самое важное в этом методе - понимать, что стратегия играется только один раз, поскольку эксплуатируется везение, а не статистическое преимущество, которое, согласно закону больших чисел, реализуется в результате большой последовательности выигрышей и проигрышей.
2. Фиксированное число лотов
Метод гласит: независимо от счета, всегда входить в позицию одинаковым (обычно круглым) числом лотов.
Применим этот метод к простейшей модельной системе, с легкой руки Константина Копыркина получившей широкую популярность как «динамический канал»: Покупаем один лот, если средняя цена дня ((high + low)/2) вырастет выше своего минимального значения на Х пунктов;
Продаем один лот, если средняя цена дня ((high + low)/2) упадет ниже своего максимального значения на Х пунктов;
Вычитаем из каждой сделки один рубль на комиссию и проскальзывание.
Код системы вместе с рассматриваемыми алгоритмами определения размера позиции приведены в приложении 2.
Результаты торговли равным числом лотов при начальном капитале 100000 и марже 0.66 приведены в таблице 1 (здесь и ниже результаты получены из TradeStation Strategy Performance Report).
Отметим, что при дальнейшем увеличении числа торгуемых лотов неявно включается односторонний антимартингальный money management: мы не можем открывать позиции, превышающие текущий капитал, поэтому при уменьшении капитала размер позиции также будет уменьшаться. При увеличении же капитала размер позиции будет оставаться постоянным. Переформулируем метод следующим образом: независимо от счета, всегда входить в позицию одинаковым (обычно круглым) числом лотов, если это допускает текущий капитал; в противном случае, входить в позицию максимально допустимым числом лотов.
Хотя этот метод относительно безопасен, он не позволяет счету расти в геометрической прогрессии, поэтому не рекомендуем его использовать.
3. «На все»
Метод гласит: использовать при открытии позиции все доступные ресурсы.
Иными словами, каждый раз мы открываем максимально возможный объем позиции.
Даже теряя в убыточной сделке всего 4 копейки на акцию, используя выигрышную стратегию, при использовании плеча 2:1 и выше
мы проигрываем весь капитал!
Этот метод увеличивает риск без адекватного увеличения прибыли, поэтому он не рекомендуется для использования.
4. Число лотов на фиксированную сумму денег
Метод предписывает торговать одним лотом на каждые Х рублей счета:
Число лотов = Капитал / Х_ рублей
Например, если мы торгуем одним лотом на каждую тысячу рублей счета, то, имея на счете 100 000 рублей, мы можем торговать 100 лотами.
В таблице 3 рассматривается применение данного метода к РАО ЕЭС на ММВБ при различных суммах, зарезервированных для торговли одним лотом, при начальном капитале 100000 рублей и марже 0.66.
Проблема при применении данного метода заключается в том, что не все инвестиции равноценны: один лот (100 акций) EESR существенно отличается по стоимости и волатильности (подробнее о волатильности будем говорить ниже) от одного лота (1 акции)
SBER: волатильность EESR в денежном выражении составляет 20% от волатильности SBER. Таким образом, поведение портфеля из двух акций будет на 80% определяться поведением SBER и на 20% поведением EESR. Другая проблема, общая для всех антимартингальных методов, заключается в том, что увеличение размера позиций происходит неравномерно по отношению к росту капитала. Например, при начальном капитале 100 000 рублей и использовании метода «один лот на 1000 рублей» необходимо увеличить счет до 101000 рублей, или на 1%, чтобы увеличить размер позиции на единицу. С другой стороны, при капитале 1 000 000 рублей, для увеличения размера позиции на единицу достаточно увеличения счета до 1001000 рублей, или на 0.1%. Поэтому при малом начальном капитале счет растет значительно медленнее, чем при большом.
К достоинству метода можно отнести то, что сделка никогда не будет отвергнута по причине того, что она слишком рискованная. Обратная сторона медали состоит в том, что в некоторых случаях это может обернуться недостатком.
5. Равные доли
Этот метод широко используется при торговле акциями. Он предписывает разделить имеющийся капитал на равные доли соответственно числу торгуемых активов или методов:
Число лотов = Капитал / (число_активов * цена_актива)
Этот метод свободен от недостатка предыдущего, поскольку придает каждой инвестиции в портфеле равный вес. Например, имея на счете 100 000 рублей, и торгуя 6 ликвидными акциями без использования кредитного плеча, мы можем купить, например, 15 лотов SBER и 50 лотов EESR. Неэффективность предыдущего метода, однако, сохраняется - размер позиции возрастает неравномерно по отношению к возрастанию счета.
6. Процент риска
Риск на единицу актива мы определяем как разность по абсолютной величине между точкой входа в позицию и точкой выхода по стоп-лоссу, умноженную на число лотов. Метод предписывает приравнивать начальный риск позиции фиксированной доле капитала:
Число лотов = % риска * Капитал / начальный_риск_ на_единицу_ актива.
Например, имея капитал в 100 000 рублей, мы не хотим рисковать суммой более 1% капитала на сделку, или 1000 рублей. Рассматриваемая в данной статье простейшая система торговли дает сигнал на открытие противоположной позиции при отклонении средней цены за день от своего экстремального значения на 4 копейки. Это определяет наш риск 4 рубля на 1 лот (100 акций * 0.04 рубля), что позволяет нам открыть позицию не более 250 лотов.
В таблице 4 рассматривается применение метода «% риска» к РАО ЕЭС на ММВБ при различных долях капитала в процентах, подвергаемых риску, при начальном капитале 100000 и марже 0.66.
Рискуя более 1%, мы ушли бы «в минус». Рискуя заданным процентом от капитала, сколько-нибудь заметного улучшения результатов по сравнению с описанными ранее методами, вопреки ожиданиям, мы не получили. Это мы связываем с тем, что уровень коррекции от экстремума цен для смены позиции, и, следовательно, риск в нашей модельной системе выражен в абсолютных величинах, а не в относительных. Если правила модельной системы изменить на следующие:
Покупаем один лот, если средняя цена дня ((high + low)/2) вырастет выше своего минимального значения на Х процентов( или единиц волатильности);
Продаем один лот, если средняя цена дня ((high + low)/2) упадет ниже своего максимального значения на Х процентов( или единиц волатильности);
то результат должен кардинально улучшиться по сравнению с предыдущими методами (и результаты предыдущих методов тоже - но в значительно меньшей степени). Оставляем читателям проверить это утверждение.
7. Процент волатильности
Волатильность есть мера изменчивости цен за определенный промежуток времени. Она может быть описана различными способами, среди которых чаще всего используют средний диапазон
Volatility = Average(Range, Period),
средний чистый диапазон ATR (встроенная в TradeStation функция AvgTrueRange) Уилдера (W. Wilder), либо историческую волатильность
HistVolatility = 100 *StdDev(Log(Close / Close[1], Period) * SquareRoot(365).
Метод предписывает приравнивать волатильность каждой позиции фиксированной доле капитала:
Число лотов = % волатильности * Капитал / Волатильность_актива
Например, мы имеем капитал 100 000 рублей и хотим купить акции EESR. Средний чистый диапазон за последние несколько дней
составлял 0.1 рубля, или 10 рублей на один лот. Имея ограничение на волатильность нашего счета в 10%, мы можем купить 1000
лотов. Таким способом мы можем контролировать возможные флуктуации каждого элемента портфеля.
Применим метод % волатильности при тех же условиях: РАО ЕЭС на ММВБ, начальный капитал 100000 и маржа 0.66. Крепко держитесь за стул, когда будете смотреть на результаты, приведенные в Таблице 5.
По сравнению с торговлей фиксированными 100 лотами суммарная прибыль при 1% волатильности увеличилась почти в пять раз, в то время как максимальный дродаун только в два раза. Отношение среднего выигрыша к среднему проигрышу и профит фактор увеличились на 19%. При 5% волатильности суммарная прибыль при тех же сделках увеличилась в 35 раз!
Мы можем также ограничить суммарную волатильность, которой подвержен весь портфель торгуемых активов в каждый момент. Например, если мы ограничиваем волатильность портфеля величиной 10% и волатильность отдельной позиции 2%, то мы можем одновременно открыть позиции по 5 активам.
Методы % риска и % волатильности могут исполнять роль фильтров, отвергая сделки, несущие высокий риск.
Говоря о достоинствах антимартингальных методов в целом, можно выделить следующие:
1. Рискуя более высокой долей капитала, мы позволяем счету расти в геометрической прогрессии.
2. Рискуя небольшой долей капитала, мы не позволяем нанести счету значительный ущерб.
Говоря об общих недостатках антимартингальных методов, можно выделить следующие:
1. Рискуя более высокой долей капитала, мы подвержены значительным убыткам.
2. Рискуя небольшой долей капитала, мы не допускаем быстрого роста капитала.
3. Увеличение размера позиций происходит неравномерно по отношению к росту капитала.
В следующий раз мы обсудим более современные и эффективные методы money management, включая Fixed Ratio, оптимальное f и тот алгоритм, который использовал Ларри Вильямс при установлении своего рекорда.
Monte-Carlo Simulation Signal.
Copyright (c) 2001 DT
Inputs: PctRisk(10), {% риска от текущего капитала, 0-100}
PctWin(50), {% выигрышей, 0-100}
WinToLoss(2) {отношение выигрыш/проигрыш};
Vars: Win(0), Count(0), Expectancy(0), Equity(1), Str(""); if CurrentBar = 1 then FileDelete("D:\TS_Export\MTrading_MMILcsv");
Expectancy = 0.01 * PctWin * WinToLoss - (1 - PctWin * 0.01); if Expectancy > 0 then begin Equity = 1;
for count = 1 to 100 begin value1 = Random(100); if PctWin - value1 > 0 then Win = WinToLoss else
Win = -1;
Equity = Equity * (1 + PctRisk * 0.01 * Win); end;
Str = NumToStr(PctRisk, 0) + "," + NumToStr(PctWin, 0) + "," + NumToStr(WinToLoss, 2) + "," + NumToStr(Expectancy, 2) + "," + NumToStr(Equity - 1, 2) + NewLine;
FileAppend("D:\TS_Export\MTrading_MMII.csv", Str);
end;
Приложение 1.
The Simplest System #2 with Money Management.
Copyright (c) 2001 DT
Input: Price((H+L)*.5), PtUp(4.), PtDn(4.);
Inputs: MM_Model(0), {0 = MM absence, 1 = MM for gamblers; 2 = MM units per fixed money; 3 = Equal Units; 4 = % Risk; 5 = % Volatility}
MM(10), {MM parameter}
InitCapital(100000), {Initial capital to trade}
Marg(.66); {Margin percentage}
Vars: MP(0), Risk(0), Num(1), Equity(0), OpenAssuredProfit(0);
Vars: WinP(0),AvgW(0),AvgL(0), Kelly(0);
Vars: Marg1(0), {Margin}
Lots(0), {Number lots in a margin, determined by Delta}
Equity_0(0), {Initial capital to trade one lot}
FRDelta(0);
Vars: LL(99999), HH(0), Trend(0), Volat(TrueRange);
MP = MarketPosition;
Volat = .5 * TrueRange + .5*Volat[1]; if MP <= 0 then begin if Price < LL then LL = Price;
if Price cross above LL + PtUp*.01* BigPointValue then begin Trend = 1;
HH = Price;
end;
end;
if MP >= 0 then begin if Price > HH then HH = Price;
if Price cross below HH - PtDn*.01* BigPointValue then begin Trend = -1;
LL = Price;
end;
end;
If trend = 1 then Risk = PtDn {+ Slippage};
If trend = -1 then Risk = PtUp {+ Slippage};
OpenAssuredProfit = MaxList((Trend*(close - EntryPrice) - Risk)*Num * BigPointValue, 0); Equity = (InitCapital + NetProfit + OpenAssuredProfit); {Reduced Total Equity} if MM_Model = 0 then { Equal lots}
Num = MM;
if MM_Model = 1 then { All Resources}
Num = Floor(Equity/Marg/close);
if MM_Model = 2 then { MM Units per Fixed Money }
Num = Floor(Equity/Marg/MM); if MM_Model = 3 then { MM Equal Units }
Num = Floor(Equity/Marg/close/MM); if MM_Model = 4 then { % Risk Model } if Risk <> 0 then
Num = floor(MM*Equity *.01/Risk/Marg);
if MM_Model = 5 then { % Volatility Model }
if Volat <> 0 then
Num = floor(MM*Equity *.01/Volat/BigPointValue/Marg); if Num < 1 then Num = 1;
if Num > Equity/close/Marg then Num = Equity/close/Marg;
{ Entries}
if trend = 1 and trend[1] <> 1 then buy("LE") num contracts at market; if trend = -1 and trend[1] <> -1 then sell("SE") num contracts at market;
Приложение 2.
Дмитрий Толстоногов
Содержание раздела