Статистическая проверка системы управления капиталом Лябушера

Alexander Dubovik | 20 мая, 2015

Есть три вида лжи: ложь, наглая ложь и статистика.

Введение

Бродя на выходных по просторам интернета, я нашел систему управления капиталом, о которой до этого не слышал — систему Лябушера (Labouchere) или метод вычеркивания (Forex Vacuum Cleaner System с использованием системы Labouchere). На самом деле система является разновидностью Мартингейла, т.е. предписывает после проигрышей повышать ставки, а после выигрышей делать минимальную ставку. Но это менее агрессивная разновидность, чем оригинальный Мартингейл, т.к. ставки повышаются не в 2 раза, а на определенную величину.

А теперь приведу фразы в описании свойств системы, которые меня крайне заинтриговали:

Фактически в найденном мной источнике утверждается, что если взять систему с выигрышем равным проигрышу и вероятностью выигрыша 50% (или даже "выше 33%"), то система Лябушера с легкостью сделает из нее прибыльную! Зачем же тогда искать систему с положительным матожиданием, если за нас придуман способ его сдвига в положительную область? Ведь сделать систему, например, с 47% выигрышей так легко...

Давайте разберемся, как система Лябушера предлагает варьировать ставки.

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

А вот в случае проигрыша ставка вырастает на единицу — до 2, и на листик мы записываем проигрышную ставку:

-1

В случае выигрыша повышенной ставкой на листик записываем:

-1 2

Затем обе цифры зачеркиваем, т.к. мы вернули свой проигрыш (т.е. в результате серии из двух ставок все равно пополнили баланс на единицу).

Рассмотрим случай более длинной проигрышной серии.

-1

Делаем ставку 2. Снова проигрыш:

-1 -2

Делаем ставку 3. Снова проигрыш:

-1 -2 -3

Делаем ставку 4. Снова проигрыш:

-1 -2 -3 -4

Делаем ставку 5. Снова проигрыш:

-1 -2 -3 -4 -5

Делаем ставку 6. Снова проигрыш:

-1 -2 -3 -4 -5 -6

Делаем ставку 7, и наконец выигрываем:

-1 -2 -3 -4 -5 -6 +7

После этого вычеркиваем "-1", "-6" и "+7", т.к. этим выигрышем мы компенсировали две проигрышные ставки. Следующая ставка равна сумме первого и последнего из оставшихся в таблице значений, т.е. по-прежнему 7. В случае выигрыша:

-2 -3 -4 -5 +7
Вычеркиваем "-2", "-5" и "+7". Снова делаем ставку, равную сумме первого и последнего из оставшихся в таблице значений, т.е. по-прежнему 7 (в некоторых источниках предписывается еще прибавить к ней 1, чтобы в случае выигрыша не только выйти "в ноль", но и получить минимальную прибыль). В случае выигрыша:
-3 -4 +7

Вычеркиваем все цифры из таблицы, т.к. мы отыгрались.

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

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

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

  2. Наращивание ставки происходит значительно медленнее, чем в оригинальном Мартингейле, где при такой серии следовало бы ставить в 64 раза больше начальной ставки.

  3. Суммарный провал депозита (сумма проигранных ставок) в приведенном примере составил всего 21 единицу, в то время как в оригинальном Мартингейле провал был бы на 63 единицы.

  4. Из нехитрых вычислений следует, что потеря депозита при размере начальной ставки 1% от депозита произойдет при 13 проигрышах подряд, а при размере начальной ставки 0,1% от депозита — при 44 проигрышах подряд (тут хочется довольно потереть руки и сказать: "Да где же это видано — 44 убытка подряд при шансах 50/50!? Да это же 1 на сколько-то-там-триллионов! Более вероятно, что мне на голову метеорит упадет! С такой вероятностью проигрыша обязательно надо работать!" и т.п.).

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

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

Однако давайте вернемся к процессу выхода из нашей провальной серии. Допустим, что после 6 проигрышей подряд мы получили всего 2 выигрыша, а не 3. Тогда на бумаге у нас будет записано следующее:

-3 -4

Ставка 7, и тут вместо долгожданного выигрыша получаем проигрыш:

-3 -4 -7
Ставка 10 (заметьте, что от проигрыша к проигрышу ставка прирастает уже не на 1, что выглядело бы вполне разумным и безопасным для депозита, а на 3). И снова проигрыш:
-3 -4 -7 -10

И уже следует ставить 13.

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

Вам интересно, на что способна эта система? Мне — очень интересно.


Постановка задачи — что будем проверять и какими способами

Самый главный вопрос, ответ на который мы будем искать — это способность (или неспособность) системы управления капиталом Лябушера сдвигать матожидание, особенно в положительную сторону. Конечно, заявления про достаточность 33% выигрышей при выигрыше = проигрышу звучат фантастично, но может хотя бы 49% или 50% выигрышей будет достаточно? А если нет — то может у системы Лябушера найдутся хоть какие-нибудь сильные стороны?

Проверять будем статистически, а значит, нужно писать программу на MQL (в данном случае MQL4, т.к. с MQL5 я еще не освоился). И пускай программа проводит миллионы сделок, "сливает" тысячи депозитов — мы будем смотреть и анализировать результаты без вреда для кошелька. А если вдруг окажется, что программа зарабатывает, можно будет все это внедрить в реальную торговлю.

Система Лябушера разработана в предположении выигрыша = проигрышу, но ее можно адаптировать и для других соотношений, однако такие усложнения не выглядят целесообразными. Ведь если система сможет влиять на матожидание игры с выигрышем = проигрышу, то и другие соотношения ей по зубам. А если нет — то это зря потраченное время на обдумывание корректности модификации.

Кроме того, система с выигрышем = проигрышу и равновесным значением в 50% выигрышных сделок проще всего воспринимается человеком, т.к. все мы знакомы с подбрасыванием монетки. Потому программу так и назовем — CoinTest.

Итак, опишем пожелания к программе:

  1. Необходима возможность изменения вероятности выигрыша. Игра 50/50 будет всего лишь равновесным частным случаем.

  2. Необходимо иметь возможность задания степени риска. В системе Лябушера заложен постоянный размер единичной ставки. Если мы будем масштабировать начальную ставку в зависимости от размера депозита, то потеряется вся соль системы, т.к. после завершения вычеркивания всех значений из таблицы депозит не вернется к первоначальному значению. Можно пересчитывать размер ставки после выхода из просадки, но при этом будут получаться дроби, которые сложно воспринимать (сравнивать, проверять) человеку. В итоге степень риска будем задавать двумя переменными — размером начального депозита и размером начальной ставки.

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

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

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

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

Реальное открытие сделок в MetaTrader в данном случае является бесполезным и чрезвычайно затратным с точки зрения вычислительных ресурсов. Нам достаточно просто фиксировать результат случайных сделок требуемым размером лота с заданной вероятностью выигрыша. Исходя из этого, писать будем не советник и не индикатор, а всего лишь скрипт, т.к. эта разновидность программ MQL хорошо подходит для разового запуска.


Статистическая проверка качества стандартного генератора псевдослучайных чисел

Для нашей затеи чрезвычайное значение имеет качество генератора псевдослучайных чисел (ГПСЧ), имеющегося в нашем распоряжении, т.к. именно он будет сообщать, выигрыш или проигрыш нам зачислять на баланс. Причем очень важна "честность" распределения длинных серий выигрышей или проигрышей. Оценить правильность распределения длинных серий попробуем "на глазок", без применения сложных для понимания теорем математической статистики.

Данная публикация не претендует на серьезное исследование качества ГПСЧ (требующего проведения порядка 15 различных тестов). Проверять будем только те свойства ГПСЧ, которые очевидно могут повлиять на результаты проверки системы Лябушера, и при этом имеющие не слишком сложные процедуры проверки.

В MetaTrader нам доступна стандартная функция ГПСЧ MathRand(). Последовательность ГПСЧ инициализируется функцией MathSrand().

Для проверки качества стандартного ГПСЧ напишем небольшой скрипт RandFile, который будет иметь 2 параметра:

Процесс подсчета распределения длин битовых серий очень ресурсоемкий (увеличивает время выполнения скрипта в 10 раз), поэтому он вынесен в отдельную опцию.

Скрипт выдает следующие результаты:

Сгенерируем 3 тестовых набора разной длины:

Затем проверим:

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

    Сжимаемость ГПСЧ 10 млн. слов

    Сжимаемость ГПСЧ 100 млн. слов

    Сжимаемость ГПСЧ 1 000 млн. слов

  2. Количество битов "1":
     РавновесноеФактическоеОтклонение абсолютное
     Отклонение, %
    10М
    160 000 000
    160 004 431
    4 431
    0,0027694
    100М
    1 600 000 000
    1 599 978 338
    21 662
    0,0013539
    1000М
    16 000 000 000
    15 999 996 180
    3 820
    0,0000239
  3. Встречаемость значений определенных байтов в случайных файлах:

    Встречаемость определенных байтов ГПСЧ, 10М слов

    Встречаемость определенных байтов ГПСЧ, 100М слов

    Встречаемость определенных байтов ГПСЧ, 1000М слов

  4. Длины серий одинаковых битов. Для каждого размера выборки построим 2 графика:

    • график фактически зафиксированного количества серий одинаковых битов определенной длины, а также равновесного значения количества серий такой длины (в логарифмическом масштабе);
    • график процентного отклонения фактически зафиксированного количества серий одинаковых битов от равновесного значения (также в логарифмическом масштабе).

    Линейный масштаб графиков нам не подходит по причине чрезвычайно высокого разброса имеющихся у нас значений (на одном и том же графике требуется отметить значения от 1 до 4 000 000 000 или от 0,00001 до 6 000). Кроме того, график равновесного значения количества длинных серий в логарифмическом масштабе представляет собой прямую, т.к. с увеличением длины серии на 1 вероятность ее выпадения снижается в 2 раза.

Длины серий одинаковых битов для 10М слов

Отклонения длин серий от равновесного для 10М слов

Длины серий одинаковых битов для 100М слов

Отклонения длин серий от равновесного для 100М слов

Длины серий одинаковых битов для 1000М слов

Отклонения длин серий от равновесного для 1000М слов

Какие выводы можно сделать из этих проверок?

Таким образом, серьезных статистических дефектов, способных исказить результаты нашей проверки, в стандартном ГПСЧ не выявлено даже при последовательностях порядка 3 млрд. генераций (на одно 32-битное слово затрачивается 3 генерации).


Написание класса CLabouchere, осуществляющего управление размером позиции

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

// Реализация мани-менеджмента Лябушера.
// Предполагает тейк/стоп = 1/1.
class CLabouchere
{
        private:
        protected:
                // Стартовый лот. По умолчанию - 0.1.
                double p_dStartLot;

                // Строка, в которой хранятся числа согласно Лябушеру
                double p_dLotsString[];
        public:
                void CLabouchere();
                void ~CLabouchere();

                double GetStartLot() {return p_dStartLot;};
                void SetStartLot(double a_dStartLot) {p_dStartLot = a_dStartLot;};

                // Возвращает лот, которым сейчас следует заходить
                double GetCurrentLot();

                // Записывает результат текущего трейда - тейк (true) или стоп (false)
                void SetResult(bool a_bResult);

                // Сбрасывает на начальное состояние, кроме начального лота
                void Init() {ArrayResize(p_dLotsString, 0);};
};


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

Пишем несложный скрипт на сотню строк, имеющий следующие входные параметры:

//--- input parameters
input int RepeatsCount=100000;
input int StartBalance = 10000;
input int Take = 50;
input double SuccessPercent = 50.0;
// Если тут true - значит, SuccessPercent игнорируется
input bool FiftyFifty = true;

Скрипт производит серию ставок до потери депозита или до достижения RepeatsCount.

Случай, когда нам требуется вероятность выигрыша 50/50, вынесен в отдельную настройку. В этом случае в качестве результата бросания монеты берутся единичные биты псевдослучайного числа. В иных случаях вычисляется число, означающее границу между выигрышем и проигрышем, и случайное число сравнивается с этой границей. Отдельная настройка для случая 50/50 реализована по той причине, что нас устроила серийность отдельных битов ГПСЧ, а серийность выпадения значений более какой-либо границы мы не оценивали.

Настройки по умолчанию:

Примерно на 10-м запуске скрипта получаем впечатляющий результат — на 2 335 шагу депозит составляет 46 300. Однако к 2 372 шагу наступает провал:

Пример роста депозита с последующей его потерей

На графике этот депозит выглядит вот так:

График депозита

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

В некоторых случаях депозит тает за несколько десятков первых сделок и ни в одном случае депозит не продемонстрировал время жизни в максимальные 100 000 сделок.

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

Код скрипта для одного прогона получился настолько коротким, что его полностью можно привести в статье (вся работа, в том числе запись файла с подробностями жизни депозита, возложена на класс CCoinTest):

#include <CCoinTest.mqh>

//--- input parameters
input int RepeatsCount=100000;
input int StartBalance = 10000;
input int Take = 50;
input int PocketPercent = 10;
input double SuccessPercent = 50.0;
input string S2 = "Если тут true - значит, SuccessPercent игнорируется";
input bool FiftyFifty = true;
input string S3 = "Если true - тогда вместо Лябушера заходим постоянным лотом";
input bool FixedLot = false;

void OnStart()
{
        MathSrand(GetTickCount());

        CCoinTest Coin;

        Coin.SetRepeatsCount(RepeatsCount);
        Coin.SetStartBalance(StartBalance);
        Coin.SetTake(Take);
        Coin.SetPocketPercent(PocketPercent);
        Coin.SetSuccessPercent(SuccessPercent);
        Coin.SetFiftyFifty(FiftyFifty);
        Coin.SetFileName("Coin.csv");
        Coin.SetFixedLot(FixedLot);

        Coin.Go();
}

После добавления кармана графики работы системы начинают выглядеть немного по-другому (в данном примере в карман выводится 40% прибыли):

Пример-1 баланса после добавления "кармана"

Фиолетовая линия ("Баланс кармана") ужасно похожа на идеальный график торгового счета, о котором мечтает любой трейдер. Однако на самом деле нас должна интересовать желтая линия — "суммарный баланс торгового счета и кармана", а она уже не так хороша. Кроме того, намного чаще встречаются вот такие примеры:

Пример-2 баланса после добавления "кармана"

Из графиков видно:


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

Итак, переходим к самому интересному — сбору результатов множества экспериментов, когда наконец-то станет понятно, способны ли выигрыши на удачных депозитах перекрыть потери на неудачных. Может, алгоритм проявит себя на очень низких размерах начальной ставки (ведь так будет сложнее потерять депозит) или наоборот — на очень высоких? Какой процент от выигрышей следует выводить с торгового счета? Сможет ли вообще система Лябушера показать результат, отличный от системы с постоянной ставкой? А что будет при положительном матожидании базовой системы (если "монетка" чаще дает выигрыши)? Вопросов масса, и нужно разбираться с ними по порядку.

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

Входные параметры:

//--- input parameters
input int RepeatsCount=100000;
input int StartBalance = 10000;
input string S1 = "Столько депозитов будем сливать";
input int Deposits = 100;
input double SuccessPercent = 50.0;
input string S2 = "Если тут true - значит, SuccessPercent игнорируется";
input bool FiftyFifty = true;
input string S3 = "Если true - тогда вместо Лябушера заходим постоянным лотом";
input bool FixedLot = false;

Массивы со значениями размера начальной ставки и процента выигрыша, помещаемого в карман:

// Массив вариантов PocketPercent
int iPocketPercents[24] = {1, 2, 3, 5, 7, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 75, 80, 85, 90, 95, 97, 98, 99};

// Массив размеров начальной ставки
int iTakes[15] = {5, 10, 15, 20, 50, 75, 100, 150, 200, 300, 400, 500, 1000, 2000, 3000};

Как видим, размер начальной ставки варьируется от 5 (0,05% от начального депозита) до 3 000 (30% от начального депозита). Процент, выводимый с торгового счета в карман — от 1% до 99%. Параметры выбраны заведомо с запасом, чтобы перекрывали разумные рамки в обе стороны.

Таким образом, пространство поиска является двумерным, в нем берется 360 дискретных точек (24 * 15), для каждой из которых по результату серии (количество депозитов в серии задается параметром Deposits) отдельных депозитов вычисляется средний итоговый баланс (как сумма в кармане и на торговом счету) и среднее количество сделок до потери депозита (время жизни депозита).

Результаты расчетов по двумерному пространству являются трехмерными, а значит, их сложно отображать на плоских носителях. Поэтому будем рисовать просто двумерные графики, у которых по оси абсцисс будем откладывать порядковый номер точки из пространства поиска (от 0 до 359). В случае необходимости будем отдельно указывать конкретные значения Takes и PocketPercent.

По результатам прогона 100 депозитов получается вот такой средний баланс:

Баланс после 100 повторов, Лябушер, 50/50

И вот такой график времени жизни депозитов (в логарифмическом масштабе):

Время жизни депозита, 100 повторов, Лябушер, 50/50

Время жизни депозита для начального риска в 0,05% составляет свыше 10 000 сделок и непрерывно снижается до менее чем 10 сделок при начальном риске в 30%. Высокое значение PocketPercent также снижает среднее количество сделок до потери депозита. Вполне ожидаемый результат.

На графике среднего содержимого кармана и торгового баланса выделяется несколько точек, причем 4 из них расположены близко — это вселяет надежду, что найдена область оптимума. Теперь посчитаем результаты для Deposits = 1 000 и наложим результаты на этот же график:

Баланс после 100 и 1000 повторов, Лябушер, 50/50

Как видим, область, которая предположительно являлась оптимальной, растаяла под натиском достаточно большого количества статистических данных. При любых параметрах график случайным образом очень близко колеблется около значения начального баланса — 10 000.

Таким образом, значение Deposits = 100 не является достаточным. Все дальнейшие опыты будем проводить с Deposits = 1 000.

Отобразим на одном графике результаты системы Лябушера и системы с постоянной ставкой:

Баланс после 1000 повторов, Лябушер и постоянный лот, 50/50

И график времени жизни депозита для систем Лябушера и постоянной ставки:

Время жизни депозита, 1000 повторов, Лябушер и постоянный лот, 50/50

Что видно из графиков:

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

input string S2 = "Минимальное количество сделок на каждую пару параметров";
input int MinDeals = 10000000;

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

В итоге разброс графиков становится меньше:

Баланс после 1000 повторов и не менее 10 млн сделок, Лябушер и постоянный лот, 50/50

Время жизни депозита, 1000 повторов и не менее 10 млн сделок, Лябушер и постоянный лот, 50/50

А теперь проверим работу систем на вероятностях исходной системы, отличающихся от "50/50".

Баланс после 1000 повторов, Лябушер и постоянный лот, 49% выигрыша

И время жизни депозита:

Время жизни депозита, 1000 повторов, Лябушер и постоянный лот, 49% выигрыша

Что мы видим на этих графиках?

Помните хвалебную статью, ссылки на которую приведены во введении? Там сказано, что система будет работать даже при "33-40%" выигрышей. Ради спортивного интереса проверим верхнюю планку в 40%:

Баланс после 1000 повторов, Лябушер и постоянный лот, 40% выигрыша

Время жизни депозита, 1000 повторов, Лябушер и постоянный лот, 40% выигрыша

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

Даже при 51% выигрышных сделок графики баланса приходится рисовать в логарифмическом масштабе.

Баланс после 1000 повторов, Лябушер и постоянный лот, 51% выигрыша

Время жизни депозита, 1000 повторов, Лябушер и постоянный лот, 51% выигрыша

Что видно из графиков:

Большинство читателей тут же решат, что система с постоянной ставкой по всем параметрам превосходит систему Лябушера — мало того, что не потеряет депозит, так еще и денег принесет в 10 раз больше! И будут обмануты статистикой.

Система с постоянной ставкой уперлась в ограничение в 100 000 сделок на один депозит. Если бы параметр RepeatsCount был 200 000, система принесла бы в 2 раза больше прибыли. "Так это же просто замечательно!" — скажут обманутые статистикой читатели. И опять будут неправы.

Взгляните на график прибыли, приносимой системами в среднем за одну сделку (в логарифмическом масштабе):

Прибыль на одну сделку, Лябушер и постоянный лот, 51% выигрыша

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

Прибыль на одну сделку, % от начальной ставки, Лябушер и постоянный лот, 51% выигрыша

Вот что на этих графиках видно:

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

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

Ну как, убедились в преимуществе системы Лябушера?

Если да, значит, статистика обманула вас еще раз.

Взгляните на таблицу:

 Размер
ставки
Процент
перевода
в карман
 Среднее содержимое
кармана и баланса,
система Лябушера
Среднее
кол-во сделок,
система Лябушера
 Среднее содержимое
кармана и баланса,
система
с постоянной
ставкой
 Среднее кол-во
сделок,
система
с постоянной
ставкой
Прибыль
на сделку,
система Лябушера
Прибыль
на сделку,
система
с постоянной
ставкой
Прибыль
на одну сделку,
% от начальной ставки,
система Лябушера
Прибыль
на одну сделку,
% от начальной
ставки, система
с постоянной ставкой
75
10
51 177.34
3 728.62
160 489.6
99 530.41
11.04
1.51
14.72
2.02
500
45
14 016.36
127.27
349 479
33 771.46
31.56
10.05
6.31
2.01

Ведь на самом деле существует простой способ получить от системы с постоянной ставкой такое же среднее количество прибыли на сделку, которую демонстрирует система Лябушера — нужно всего лишь увеличить размер ставки в 7 раз (в данном примере — с 0,75% до 5%). Конечно, 5% — это очень высокий уровень риска, но даже при таком риске система с постоянной ставкой имеет в 10 раз более высокую "живучесть".

Ну что, убедились в преимуществе системы с постоянной ставкой?

Мне кажется, что статистика обманула вас еще раз.

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

И пожалуй, наиболее корректный вывод, который можно сделать из этих расчетов, звучит примерно так: "При вероятности выигрыша в 51% от системы Лябушера с начальной ставкой в 0,75% от депозита и выводом 10% прибыли следует ожидать такой же доходности, как и от системы с постоянной ставкой в размере 5% от стартового депозита с выводом 45% прибыли. Система Лябушера достигает такого уровня доходности путем временного повышения размера позиции в процессе работы".

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

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

Для сравнения приведу графики обеих систем при 55% выигрышей:

Баланс после 1000 повторов, Лябушер и постоянный лот, 55% выигрыша

Время жизни депозита, 1000 повторов, Лябушер и постоянный лот, 55% выигрыша

Прибыль на одну сделку, Лябушер и постоянный лот, 55% выигрыша

Прибыль на одну сделку, % от начальной ставки, Лябушер и постоянный лот, 55% выигрыша

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

Различие в средней прибыли на одну сделку снизилось с 6-7 раз при 51% выигрышей до примерно 3,7 раза при 55% выигрышей. Это связано с тем, что при более высоком матожидании исходной системы система Лябушера меньше времени проводит в просадках, и, следовательно, меньше времени торгует повышенным лотом.


Заключение

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

К тому же, стали понятны причины возникновения приведенных во введении мифов о системе Лябушера:

Стоит ли применять систему Лябушера в торговле при наличии системы с положительным матожиданием? Выбор, скорее, зависит трейдера. Применение системы Лябушера является достаточно сложным, а влияние на прибыльность с трудом можно назвать выдающимся. Однако в любом случае я могу дать 2 совета: не превышать допустимый уровень риска, если вы дорожите депозитом, и работать над повышением матожидания вашей торговой системы.