Форум » Инструменты трейдера » Оценка торговой системы » Ответить

Оценка торговой системы

Scriptong: Оценка торговой системы Определение качества торговой системы на основе методики, предложенной Ван Тарпом. Идея подана здесь.

Ответов - 23, стр: 1 2 All

Genry: Scriptong пишет: Скрипт распознает три вида файлов отчета: •Краткий отчет. Его можно получить, выбрав пункт "Сохранить как отчет" из контекстного меню, показанного на рис. 2. •Детализированный отчет. Пункт этого же меню "Сохранить как детализированный отчет". •Отчет тестера стратегий. Образуется после проведения тестирования и использования пункта "Сохранить как отчет" контекстного меню вкладки "Результаты" окна "Тестер". Игорь, спасибо за универсальность, доступны практически все варианты отчетов для анализа. Да, найти приличную торговую систему оказалось действительно непросто

Scriptong: Genry пишет: Да, найти приличную торговую систему оказалось действительно непросто Нужно делать скидку на то, что Ван Тарп в некотором роде загоняет нас в угол. Так, если к большому матожиданию вопросов нет, то к малому СКО вопрос серьезный: почему это большинство сделок должно иметь примерно одинаковый результат? Прибыльная торговля может быть основана одновременно на малых (скальпинг) и больших (средне- и долгосрочная торговля) прибылях. Более того, подобный подход очень требователен к убыточным сделкам, каждую из которых он рассматривает как огромный минус к качеству.

Sergey: Игорь спасибо! Но есть вопрос: Какое отклонение считать допустимым? Если я правильно понял, отклонение обратно пропорционально качеству. В током случае может лучше вывести фактор восстановления в качестве альтернативного показателя?


Scriptong: Sergey пишет: Но есть вопрос: Какое отклонение считать допустимым? На мой взгляд, никакое. Лично я не вижу связи между качеством системы и подобностью результатов сделок. Но это лишь мое мнение. Вполне возможно, что есть огромное количество трейдеров и инвесторов (Ван Тарп в их числе), для которых это значимая характеристика. Именно для таких случаев и разработан скрипт. Sergey пишет: В током случае может лучше вывести фактор восстановления в качестве альтернативного показателя? Это уже совсем другая история. У меня пока нет собственного плана автоматической оценки стратегий.

Genry: Глава из книги "COMPUTER ANALYSIS OF THE FUTURES MARKET" Лукаса и Лебо Волатильность и вероятность провала (Volatility and Probability of Ruin) Вычисление этих двух ключевых величин даст вам представление о том, насколько надежной будет ваша торговая система в реальном времени. Первой величиной, которую надо вычислить, является стандартное отклонение ваших торговых результатов. Чем больше стандартное отклонение, тем более волатильными будут ваши торговые результаты. Чем меньше стандартное отклонение, тем менее волатильными будут результаты. При прочих равных выбирайте систему с меньшей волатильностью (минимальным стандартным отклонением) в терминах индивидуальных торговых результатов. Вторая ключевая величина - это вероятность провала (POR - probability of ruin). POR дает трейдеру выраженную в процентах вероятность того, что баланс его счета будет опускаться до определенной точки прежде, чем подниматься до определенной более высокой точки. В вычисление POR включены шесть величин: процент выигрышей, средняя прибыльная торговля в долларах, средний проигрыш в долларах, начальный баланс счета, уровень, на котором можно сказать, что счет провалился, и уровень, на котором можно сказать, что состояние счета успешное. POR базируется на той идее, что в любой торговой системе события возникают регулярно и могут возникать ненормальные события, но все они подчиняются теории вероятности. Например, монетка, подбрасываемая бесконечное количество раз, будет иметь отношение выпадений орел/решка 1:1, но примерно в одном из 1024 случаев орлел будет выпадать 10 раз подряд. Любая торговая система, таким образом, живет с вероятностью того, что независимо от изменения рыночных условий, она будет до некоторой степени саморазрушающейся. POR - это вероятность такого самоуничтожения. Уровень, до которого мы можем контролировать процент выигрышей и отношение выигрыша к проигрышу, диктует степень контроля, которым мы обладаем над нашей торговой системой. Мы не имеем возможности контролировать рыночные условия, но мы, по крайней мере, будем уверены, что наша торговая система не будет самоуничтожаться по собственному разумению. Существует несколько способов вычисления вероятности провала (или риска провала). Мы будем использовать простейшую формулу, которую можно найти в работе П. Гриффина "TheTheory of Blackjack"***. Следующая таблица показывает репрезентативное множество значений процентов выигрышей и отношений среднего дохода к среднему проигрышу. Для упрощения вычислений мы приняли начальный баланс счета равным $25000, цель дохода равной $50000 и уровень проигрыша (провала) равным $ 12000. (Смотрите рисунок) Как вы можете видеть из в таблицы, POR резко меняется с изменением процента выигрышей и отношений выигрыш/проигрыш. Небольшая поправка в системе, которая дает в результате положительное изменение любого из отношений, может сделать громадный вклад в будущие возможности системы. POR может оказаться очень показательным. Например, средний СТА, управляющий сегодня общественными паями, вероятно, имеет процент выигрышей от 35 до 40 процентов, причем большинство из них менее 40 процентов, 35-процентная доля выигрышей требует высокого отношения среднего выигрыша к среднему проигрышу для того, чтобы система была успешной. Это прекрасно и просто достижимо, когда рынки находятся в состоянии тренда, но, когда они становятся неспокойными, отношение дохода к потерям резко падает, и POR поднимается до пугающих высот. Тщательное слежение за этими двумя статистическими величинами и возможное изменение вашей торговой системы для учета нетрендовых рынков может быть необходимым для обеспечения выживания. *** The Theory of Blackjack: The Compleat Card Counter’s Guide to the Casino Game of 21. _h_ttp://dl.lux.bookfi.org/genesis/262000/7711f435b7acbdc02963544ce758bead/_as/[Peter_Griffin]_The_Theory_of_Blackjack_The_Compl(BookFi.org).pdf Питер Гриффин родился в Нью-Джерси в 1937 году в семье управляющего крупной компании. Дед Питера преподавал точные науки в Reed College Франка Локсли и являлся автором нескольких учебников по математике. Именно дед привил мальчику уважение к точным наукам. Защитив магистерскую диссертацию Гриффин преподавал статистику и вычисление дифференциальных уравнений в одном из университетов Калифорнии. Впервые ученый заинтересовался блекджеком в 1970 году. За статистическими данными Гриффин отправился в казино где, опустошая кошелек в игорных заведениях Вегаса, он пришел к одному из самых важных выводов в истории изучения игры. А именно: любое казино имеет 2%-ное преимущество перед среднестатистическим игроком в блекджек. Заключение Гриффина стало настоящим открытием, которое произвело небывалый фурор в среде игроков. Однако Питер на этом не остановился. Важным вкладом в теорию игры стала его книга «Теория блекджека: полное руководство по системам счета карт в игре «21» (The Theory of Blackjack: The Compleat Card Counter’s Guide to the Casino Game of 21), которая вышла в 1978 году. В ней Питер предложил использовать метод коротких чисел, разработанный статистиками, для решения самых сложных задач анализа и сравнения систем вычисления карт в блекджеке.

Scriptong: Genry пишет: Вторая ключевая величина - это вероятность провала (POR - probability of ruin). Это то же самое, что вероятность разорения? То есть вычисление вероятности того, что попадем в длинную серию неудач, которая одним махом доведет до слива?

Genry: Scriptong пишет: Это то же самое, что вероятность разорения? То есть вычисление вероятности того, что попадем в длинную серию неудач, которая одним махом доведет до слива? По описанию - да, это она. Но книгу Гриффина только скачал и пока еще не смотрел.

Genry: Кстати, строгий товарищ TradingSystemRating_Script_AD за торги с 16.12.14 по 24.12.14 решил поставить мне твердую четверку О как!

Genry: На mql5 попалась статья Александра Дубовика " Статистическая проверка системы управления капиталом Лябушера" Введение Бродя на выходных по просторам интернета, я нашел систему управления капиталом, о которой до этого не слышал — систему Лябушера (Labouchere) или метод вычеркивания ( Forex Vacuum Cleaner System с использованием системы Labouchere). На самом деле система является разновидностью Мартингейла, т.е. предписывает после проигрышей повышать ставки, а после выигрышей делать минимальную ставку. Но это менее агрессивная разновидность, чем оригинальный Мартингейл, т.к. ставки повышаются не в 2 раза, а на определенную величину. А теперь приведу фразы в описании свойств системы, которые меня крайне заинтриговали: "Итак, обратите внимание! Для того чтобы система функционировала и выигрывала, необходимо иметь количество прибыльных сделок, выше 33%-40% процентов!!!" — Очень сильное заявление. Правда, не понятно, почему разбежка такая большая — аж от 33% до 40%? "Имейте ввиду, подобный метод игры может рассматриваться казино, как нечестный". — Неужели? Может, метод действительно работает!? "Но принцип остается НЕИЗМЕННЫМ, 33% выигрышей компенсируют 66% процентов проигрышей. Таким образом, применяя подобный манименеджмент в практической торговле на форексе, нам нужна торговая система, имеющая 50% вероятность выигрыша, и соотношение возможной прибыли к возможному убытку больше или равным 1, т.е. Profit factor >=1". Фактически в найденном мной источнике утверждается, что если взять систему с выигрышем равным проигрышу и вероятностью выигрыша 50% (или даже "выше 33%"), то система Лябушера с легкостью сделает из нее прибыльную! Зачем же тогда искать систему с положительным матожиданием, если за нас придуман способ его сдвига в положительную область? Ведь сделать систему, например, с 47% выигрышей так легко... Давайте разберемся, как система Лябушера предлагает варьировать ставки.

Scriptong: Да, полезная информация. Спасибо. Сразу, что хочется сказать после прочтения подобных статей: "Ну почему автор так странно распорядился идеей?" Потом, конечно же, вспоминаешь, что у каждого человека свое видение решений тех или иных задач. Ну а раз у читателя возникли свои идеи решений, то автор достиг своей цели: заинтересовал читателя. Неудовлетворенность результатом статьи в данном случае исходит из чисто академического подхода к исследованию. Казалось бы - зачем брать ГПСЧ для исследований, если есть готовая история котировок? Но в том то и соль, что статья убедительно доказывает несостоятельность любых Мартингейлов на нейтральных данных. На реальных котировках это доказать было бы тяжелее: там нас ждал бы либо феерический успех, либо такой же феерический провал. Свои же идеи заключаются в том, что систему Лябушера можно легко преобразовать в линейную систему без существенного повышения ставки, где для выхода из просадки не требуется серия выигрышей. Ну это уже для размышлений...

Genry: Scriptong пишет: Свои же идеи заключаются в том, что систему Лябушера можно легко преобразовать в линейную систему без существенного повышения ставки, где для выхода из просадки не требуется серия выигрышей. Ну это уже для размышлений... Игорь, на то и был мой "тонкий" расчет

Scriptong: Разработана вторая версия скрипта Оценка торговой системы. Во второй версии добавлена возможность оценки системы по коэффициенту Сортино.

Genry: Scriptong пишет: Разработана вторая версия скрипта Оценка торговой системы. Во второй версии добавлена возможность оценки системы по коэффициенту Сортино. Спасибо, Игорь! Как-то эта новость сначала прошла мимо меня, теперь попалась

Genry: Игорь, а может сделаете третий вариант? Имеется ввиду в виде функции для дополнения этими оценками процесса оптимизации (по необходимости). Т.е. включаем расчет в любой ЕА, по завершении тестирования функция вызывается из OnTester() и у результатов оптимизации появляются еще две колонки с оценкой по Ван-Тарпу и\или Сортино. И у нас есть достаточно параметров с результатами оптимизации для расчета: https://docs.mql4.com/ru/constants/environment_state/statistics#enum_statistics Сейчас использую оценку фактора восстановления (отношение прибыли к максимальной просадке). [pre2] double GetRecoveryFactor() { double Res = 0; if (MAX_EQUITY_DD != 0) Res = TesterStatistics(STAT_PROFIT) / MAX_EQUITY_DD; return(Res); } ИЛИ double GetRecoveryFactor( void ) { double Res = 0; double MaxDD = TesterStatistics(STAT_EQUITY_DD); if (MaxDD != 0) Res = TesterStatistics(STAT_PROFIT) / MaxDD; return(Res); } потом double OnTester( void ) { return(GetRecoveryFactor()); }[/pre2] И еще один подход опробован для процесса оптимизации: перед открытием первого ордера (и любых последующих первых ордеров) фиксируется количество свободной маржи. В процессе торговли сравнивается свободная маржа с размером маржи при начале торговли и начальным депозитом. Если текущая маржа становится меньше начальной - тестирование данного варианта останавливается. Т.е. начальная была = 500$, при оптимизации проверяем - если свободной стало меньше на 500$ - останавливаем, начинаем следующий вариант. Таким образом в результатах оптимизации находятся варианты которые прошли весь тестируемый период не с нарастающей прибылью, а каждый новый трейд шел как первый с начальным депо. Значимость такого результата значительно выше - практически исключена грубая подгонка. Плюсов много: резко увеличивается скорость оптимизации кривые варианты отсеиваются автоматом легко докрутить хороший вариант, который не проходит, до рабочего фактор восстановления помогает в этой оценке А если добавить и Ваши оценки из этой темы - оптимизация обретет совсем человеческое лицо Так выглядит результат оптимизации: последняя колонка - фактор восстановления. Если = 0, то тест завершился досрочно из-за снижения уровня свободной маржи ниже уровня начального депозита. [pre2] 1643 6.94 2 0.00 3.47 4.80 0.95% 1.44 2229 6.32 23 1.02 0.27 572.60 53.07% 0.00 3376 6.24 6 2.40 1.04 29.18 5.74% 0.21 190 5.59 51 1.02 0.11 334.63 39.83% 0.00 2095 5.34 2 0.00 2.67 4.80 0.95% 1.11 1373 5.13 39 1.02 0.13 378.72 42.85% 0.00 4255 5.02 22 1.01 0.23 496.99 49.60% 0.00[/pre2] Правда решать этот вопрос пришлось кардинально - вызовом ExpertRemove перед которым в лог пишется сообщение: 2016.03.25 22:15:23.193 2016.01.21 15:37 EURUSD,M5: ExpertRemove function called 2016.03.25 22:15:23.193 2016.01.21 15:37 Alert: Сработал стоп, при стартовой марже в 776.49 остаток 576.48 превышен начальный депозит ЕА в AccFreeMargin=200.0

Scriptong: Genry пишет: Игорь, а может сделаете третий вариант? Имеется ввиду в виде функции для дополнения этими оценками процесса оптимизации (по необходимости). Т.е. включаем расчет в любой ЕА, по завершении тестирования функция вызывается из OnTester() и у результатов оптимизации появляются еще две колонки с оценкой по Ван-Тарпу и\или Сортино. И у нас есть достаточно параметров с результатами оптимизации для расчета: https://docs.mql4.com/ru/constants/environment_state/statistics#enum_statistics Так он уже сделан. Достаточно перенести соответствующие функции из скрипта в OnTester. Genry пишет: Сейчас использую оценку фактора восстановления (отношение прибыли к максимальной просадке). Да, в МТ4, почему то нет фактор восстановления в статистике тестирования, хотя в МТ5 он есть. Genry пишет: И еще один подход опробован для процесса оптимизации: перед открытием первого оредера (и любых последующих первых ордеров) фиксируется количество свободной маржи. В процессе торговли сравнивается свободная маржа с размером маржи при начале торговли и начальным депозитом. Если текущая маржа становится меньше начальной - тестирование данного варианта останавливается. Т.е. начальная была = 500$, при оптимизации проверяем - если свободной стало меньше на 500$ - останавливаем, начинаем следующий вариант. Таким образом в результатах оптимизации находятся варианты которые прошли весь тестируемый период не с нарастающей прибылью, а каждый новый трейд шел как первый с начальным депо. Значимость такого результата значительно выше - практически исключена грубая подгонка. Здесь не продумана простая вещь: перед открытием любого ордера свободные средства всегда больше, чем после его открытия. Поэтому, если в качестве критерия остановки прохода тестера использовать условие: Текущие свободные средства < Размер начальных свободных средств, то все проходы будут останавливаться сразу же после открытия первого ордера.



полная версия страницы