Блог им. VDV

ГраалеМетр: Как объективно оценить эффективность торговой системы…

Если Вы создаете механические торговые системы, наверняка задумывались о том, как сравнивать одну торговую систему с другой. Или же (хотя это и является по сути одним и тем-же) – как объективно оценить какой набор параметров механической торговой системы является оптимальным.
 
Несмотря на то, что задача вроде бы является довольно простой – как и всегда возникает куча нюансов – не зря же говорят, что черт кроется в деталях.
 
У одной системы прекрасный RecoveryFactor – но очень маленький размер средней сделки… Вроде бы это и хорошо и не очень.
 
Другая система имеет хороший RecoveryFactor, приемлемую среднюю сделку, но результаты неравномерно распределены по периодам тестирования и SharpRatio явно не дотягивает до желаемых показателей…
 
У третьей системы вроде бы тоже все хорошо, но соотношение между среднегодовой прибылью и максимальной просадкой очень уж маленькое…
 
Самое обидное здесь то, что как только мы начинаем использовать известный показатель для оптимизации – тут же появляется куча проблем.


Если пытаемся найти максимальную NetProfit – появляются параметры, которые предполагают одну или две сделки (к примеру, купить Сбербанк в начале 2009 года и продать его когда цена достигла 100 рублей за акцию).
 
Начинаем минимизировать DrawDawn – могут подобраться параметры, которые предполагают вообще отсутствие сделок…
 
В общем, на первый план выходит выработка некого универсального показателя, который позволит измерять результаты любой торговой системы путем сравнения с неким эталоном.
 
Исторически так сложилось, что очень хорошую торговую систему трейдеры называют «Грааль». Соответственно инструмент использующийся для  сравнения исследуемой торговой системы с идеальной системой (либо с системой, которая считается нами приемлемой) будет называться ГраалеМетр.
 
Давайте попробуем создать такой инструмент. Но прежде разберемся что такое измерение. Измерением называется процесс сравнения одной, пока ещё неизвестной величины с другой, известной величиной. Известная величина играет здесь роль единицы измерения.
 
Что будет единицей измерения в нашем случае?
 
На мой взгляд такой единицей может быть синтетический показатель (суперметрика) – который для каждого трейдера будет своим.
 
Если брать меня – то я буду считать хорошей торговую систему, которая обладает следующими характеристиками:
 
RecoveryFactor – должен быть не менее 7. Если больше 7-ми – это отлично…
 
Средний размер сделки – должен быть положительным и быть не менее (с учетом комиссии и проскальзывания) чем 0,12%.
 
Коэффициент Шарпа – посчитанный по месячным и по дневным данным должен быть на уровне 2х (лучше даже больше)
 
Среднее количество сделок в год должно быть не менее чем 50 штук
 
Ну и соотношение между годовым доходом и максимальной просадкой за все время должно быть не менее 3х.
 
Теперь нам с Вами нужно сваять некий интегральный показатель (суперметрику), который оценит на сколько процентов наша реальная торговая система лучше или хуже эталонной…
 
При этом нужно учитывать, что некоторые составные показатели будут значительно превышать свое эталонное значение, но это не должно сказываться на интегральном показателе.
 
К примеру, если мы говорим что средняя сделка не должна быть менее чем 0,12% — то если по факту размер средней сделки составляет 1,2% — влияние этого превышения эталонного значения на общий результат должно быть ограничено.
 
Точно также мы должны ограничить показатель количества сделок и некоторые другие…
У меня подход к такому ограничению следующий…
Расчет суперметрики (GraaleMetr) 
Ну и осталось всего лишь определить сводный показатель (GraaleMetr).
Здесь возможны разные подходы. Я остановился на среднегеометрическом между соотношениями реальных и эталонных показателей (с учетом ограничений). Чтобы перевести в % нужно всего лишь умножить на 100.
 
Таким образом найденный показатель будет показывать во сколько % от эталонной торговой системы можно оценить исследуемую торговую систему. Если показатель равняется 120% — значит наша система на 20% лучше эталонной.
 
Если показатель 91% — значит мы 9% не дотянули до эталона.
 
Таким образом мы нашли показатель, который измеряет качество нашей торговой системы основываясь на научном подходе, ведь измерить какую-либо величину — значит установить, сколько единиц в ней содержится, или, другими словами, во сколько раз она больше, чем единица измерения.
 
Ну и теперь – как можно использовать наш показатель GraaleMetr:
 
Самое приятное, что мне удалось создать специальную карту (так называемую ScoreCard – в Wealth-Lab). Благодаря этому теперь используя  генетический оптимизатор либо оптимизатор MonteCarlo могу подбирать такие параметры, которые наилучшим способом совпадают с моим представлением о хорошей торговой системе.
 
Ну и кроме того, теперь можно объективно сравнивать разные торговые системы между собой. Что особенно приятно – показетель GraaleMetr не зависит ни от таймфрейма ни от финансового инструмента, который используется.
Идея показателя эффективности торговой системы «ГраалеМетр» достаточно подробно расписана в этой статье. Если есть желание подробно разобраться — как расчитывать все показатели, включая Sharp (даже для режима RowProfitMode), RecoveryFactor, Apr и прочие — которые являются составными частями ГраалеМетра — приглашаю посетить мастер-класс, который состоится 19 сентября в 20-00 по Москве. Там сделаем ScoreCard, Visualizer — подробно рассмотрим эту концепцию используя Excel.
Надеюсь, информация в этой статье оказалась для Вас полезной. Было бы интересно узнать чему равен показатель ГраалеМетр Ваших торговых систем. Можете написать об этом в комментах.
★28
34 комментария
что думать если система каждый месяц или день дает прибыль значит она эффективна имхо
avatar
не каждую систему возможно оценить по вашему гралеметру
avatar
Через 3 месяца Ваши представления об оптимальности изменятся…
avatar
Ральф Винс по среднегеометрической сделке сравнивал системы.
avatar
smax0, Можно и среднегеометрическую сделку использовать в качестве одного из нескольких показателей. Кстати, есть карта, в которой TWR рассчитывается. В принципе, можно по этому показателю оптимизировать…
avatar
Ничего не понял. Мне кажется, всё намного проще: доходность. Изменяя параметры, найти её максимум. И пределы масштабируемости.
Например, А. Резвяков на кусах, слушателем которых я был, демонстрировал увеличение счёта с 1 миллиона до 4 за полгода.
Чем не эталон?
Для себя решил, что пятикратное увеличение счёта (до 3 000 000) за год — это и есть эталон. Человека такого я видел, а значит это возможно.
avatar
Berty, Главное найти систему с положительным математическим ожиданием и стабильными результатами. Доходность за счет методов управления капиталом можно безгранично увеличивать. Правда тогда волатильность эквити будет повышаться тоже до предела…
avatar
Вы пишете:
— соотношение между годовым доходом и максимальной просадкой за все время должно быть не менее 3х.
— Так это и есть Recovery Factor. Или вы подразумеваете, что RF не менее 7 — это за весь период тестирования?
Если так, то важна еще продолжительность этого периода. Само собой что при тесте за 4 года и 10 лет он будет сильно разный.
avatar
Dmitriy Tomarov (in line), Не совсем. Recovery Factor берет NetProfit и делит на максимальную просадку. В итоге если система торгуется больше одного года — рекавери будет больше, если меньше — меньше… А среднегодовой доход можно определять или в пунктах (в случае, если RowProfitMode) или как AprPct / MaxDDPct
avatar
Дмитрий Власов, Причем если в пунктах определяем — то не за весь период (как при RecoveryFactor) — а за год… — есть специальная метода подсчета.
avatar
Дмитрий Власов, согласен, но суть в том, что он зависит от продолжительности периода теста. Раз уж ставите по нему цель (7 или больше), то ставьте и по периоду ограничение. Например RF 7 за 10 лет — это ни о чем, а за 2-3 года — нормально.
avatar
Dmitriy Tomarov (in line), Это я для примера привел. Плюс такого подхода в том, что вместо RecoveryFactor Вы можете подставить тот показатель, который важен именно для Вас. И количество исходных показателей определяете Вы. Ведь та система, которую считаю хорошей я кто-то другой посчитает посредственной и наоборот.
avatar
Dmitriy Tomarov (in line), А вообще показатель вместо рекавери фактора лучше использовать YearReturnToMaxDD (просто это не общеупотребительная метрика).
avatar
Дмитрий Власов, Как считаете мой подход нормальным?
Опимизируем Модифицированный Рекавери фактор, который равен
MRF = Прибыль/(Просадка^2)
Т.е. используем тот же рекавери, только придаем просадке больший вес.
avatar
Jaguar, Нормальный подход. Только прибыль я бы брал не NetProfit а или Прибыль за год или APR в %, тогда и DrawDawn в %… Можете просадку увеличивать. Интересно потестировать.
avatar
Дмитрий Власов, не бесконечно, но в разы. А здесь главное, какой риск выдержит ваша голова перед тем, как вы окажетесь на Канатчиковой даче. Для всех этот предел разный.
Вот у меня вопрос: смогу ли я выдержать возможную потерю 40% счёта при доходности в 200% за 3 месяца, или ограничится 20%, при доходности 100%? Логика за первый вариант, но психологически не готов.
avatar
Berty, Ну так если ориентироваться на психологию — то для каждого будет свое соотношение потенциального дохода и приемлемого риска. А если с точки зрения здравого смысла — то ориентироваться на объективный показатель (например на оптимальную F либо на Security F). Плюс выделять на такую торговлю ту сумму, потеря которой никак не скажется на психическом состоянии… А вообще очень подробно про методы управления капиталом здесь общались: youtu.be/0yUjel117fI
avatar
интересно
avatar
Чем плохи системы с малым количеством сделок? По моему наоборот, экономия на комиссиях и времени
avatar
q-trader, Чем меньше сделок — тем меньше можно доверять системе — что она на истории сможет повторить (хотя бы частично) ту эффективность, которую показала на тестах.
avatar
q-trader, чем больше сделок генерирует система — тем больше денег за единицу времени вы сможете заработать… Допустим, есть разница 10 трейдов в год и 10 трейдов в неделю (при равных прочих параметрах)… как то так…
avatar
pattern, … так вот, при малом количестве трейдов, Вам для достижения каких то финансовых целей (например определенную сумму денег в год), придется увеличивать риски (размер лота)
avatar
Дмитрий Власов, за ссылку спасибо. Поставил на закачку. Однако с: «Плюс выделять на такую торговлю ту сумму, потеря которой никак не скажется на психическом состоянии…», — не согласен. Так выше одного контракта не поднимешься. Полагаю, здесь дело в тренировке риску, смещении «точки сборки». Работаю над этим. Система есть, а торговать боюсь.
avatar
Спасибо, виртуальный +. Такой вопрос — при генетической оптимизации в Wealthlab можно задать для оптимизатора мин. количество сделок за тест? Т.е. чтобы гены тестов с небольшим количеством сделок не учитывались в последующих шагах.
avatar
ab_trader, Можно создать свою метрику, в которой одним из влияющих факторов будет количество сделок. Именно так сделано и здесь. Ведь если количество сделок будет 5 (к примеру), а не 50, то общий показатель будут существенно снижаться (будет равен 5/50 = 0,1). Как результат генетический оптимизатор будет искать другие параметры — где количество сделок будет большим. Можно сделать любую метрику, но делать равным ее нулю при количестве сделок меньше заданного кол-ва (лучше брать количество сделок за год).
avatar
И еще вопрос — рекавери = 7, шарп > 2 — это для какого таймфрейма?
avatar
ab_trader, Для любого.
avatar
Если в наличии так много прибыльных торговых систем, которые надо сравнивать между собой чтобы выбрать, значит просто выбираете между оптимизированными подгонками под кривые, которые в реальной торговле бесполезны, вернее даже вредны для депозитов.
Когда попадется действительно стоящая система, ничего сравнивать вообще не надо будет, она сама за себя все скажет. Не так уж много рабочих систем, вернее даже единицы. :)
JC, вы ведь торгуете портфель систем. Неужели не приходилось выбирать какую из 2-х пускать в торговлю?
avatar
ab_trader, нет, если вижу что система потенциально стОящая, буду ее играть вместе с другими системами. Проблема в том что количество таких систем уменьшается почему то. Наверное рынки становятся эффективнее.

теги блога Дмитрий Власов

....все тэги



UPDONW
Новый дизайн