Блог им. Foudroyant

Как измерить качество бэктеста?

Неоднократно попадались такие споры в комментариях:

«Я проверял на прошлых данных такую-то стратегию или семейство стратегий — она не работает».

«Я тоже проверял — всё работает».

То есть, мы имеем разных людей, делающих проверки на истории одного и того же, и уверенных, что всё делают правильно, но получающих разные, а иногда и противоположные результаты.

Получается, мы выходим на такие темы как:

1. Разные методологии проверки на прошлых данных.

2. Разное качество такой проверки, зависящее от знаний проверяющего.

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

И ставить алготрейдерам оценки от 1 до 5, в зависимости от соответствия проводимых ими проверок идеальной модели.

Вопрос: вывел ли уже кто-то такую идеальную модель бэктеста?

И где её найти?

73 комментария
1. Разные методологии проверки на пошлых данных.
тебе 5 за артистизм
avatar
Дмитрий, 
avatar
самое простое — при сделках в лонг рассматривать только покупки по максимальной цене свечи покупки, продажи по минимальной. при шорте соответственно наоборот. Это уже даст самое худшее из возможные соотношение вход/выход. Если при этом ТС жизнеспособна, можно двигаться дальше.
avatar
u-gyn, при условии, что торговля идёт по свечам, верно?
avatar
u-gyn, ничего это не даст если объёмы не учитывать. Проскальзывания всё равно могут быть намного больше.
Антон Денисков (Fry), я ж написал «Если при этом ТС жизнеспособна, можно двигаться дальше.». Естественно, дальше нужно вводить следующие переменные, то, что я написал — самое простое для того, чтобы отсечь сразу потенциально бесперспективную ТС.
avatar
Только идеальный результат — это оптическая иллюзия, в чем подвох — не скажу, сами догадайтесь.
примерно 40 правил... 

кстати все просто… пишешь бота… тестишь… запускаешь в работу… смотришь как он работает месяца 3… затем переписваешь… снова тестишь… снова смотришь реальную торговлю 3 месяца… и лет через 5 начнет получаться…
avatar

ves2010, хотелось бы побыстрее... 

Раз — и прочитал всё, что нужно. И сразу стал делать правильно. Что-то вроде «франшизы бэктестирования».

avatar
Плечо, побыстрее… берешь кидаешь пример бота на смартлаб… с примером оптимизации.… тебе его обосрут… но зато скажут много полезного
avatar
ves2010, 
avatar
Плечо, ты всерьез думаешь что твои кустарные поделки оригинальны?
avatar
ves2010, не знаю. Теоретически, большинство должно быть не оригинально, а что-то может и оригинально, всё может быть.
avatar
Плечо, ну тогда лет через 5 сам научишься
avatar
«То есть, мы имеем разных людей, делающих проверки на истории одного и того же, и уверенных, что всё делают правильно, но получающих разные, а иногда и противоположные результаты»

Два разных человека не могут написать абсолютно идентичный код.
avatar
spekul900, если качество бэктеста зависит даже от таких тонкостей, которые заведомо нельзя унифицировать, то это как-то совсем запутывает всё дело…
avatar
Плечо, просто совет: не тратьте время на бэктесты.
Результаты бэктестов по доходности смотреть и выбирать не имеет никакого смысла.

Максимум может быть полезно прогонять для отладки программы и тестирования отдельных стресс-сценариев.
avatar
spekul900, для отладки лучше запускать на демо контуре.
Есть золотое правило, число сделок должно быть как можно большее. Но как минимум емнип 47. Тогда Система работает.

Кстати, в одной из книг я нашел критерий Profit Factor * Корень квадратный (Число сделок). Он должен быть как можно больший.
avatar
Вопрос интересный и очень сложный.

«Я проверял на прошлых данных такую-то стратегию или семейство стратегий — она не работает».

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

«Я тоже проверял — всё работает».

Ха! Так это же я! =)

В чём сложность вопроса?
У всех разные критерии. Один человек ищет стратегию, которая допускает максимальную просадку с его моделью торгового инструмента по методу монте-карло X, а наиболее вероятный профит 3X. И всё что не соответствует для него не работает. А другой взял историю рубль-бакса за 3 года, выделил паттерн, оценил перевес и начинает это трейдить сразу и у него профит, а значит всё работает. Причём оба могут выживать на рынке годами и ещё не известно у кого финрез на длинном отрезке будет выше...
Как тут найти общий идеальный подход???
Антон Денисков (Fry), по мне так второй пример более обоснованный. Даже единственно возможный. Ибо первый слишком высоко поднимает планку.
avatar
Плечо, если первый работает на свой личный капитал — да, но если первый выходит на новый уровень, открывает фонд, набирает большой объём средств в управление… Второй так и будет «зарплату» с рынка вытягивать, а первый имеет шанс изменить свою жизнь и вырваться в высшую лигу.
Тут много переменных и много сценариев…
Такой идеальной модели теста не существует.
avatar
3Qu, «не существует» или «не может существовать»?
avatar
Плечо, думаю, что не может существовать.
avatar
Ну для начала проверить: идея рабочая или пустышка. Как это сделать, я описал тут

smart-lab.ru/blog/623379.php

avatar

А. Г., на «Рандом.орг» точно случайные числа?

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

avatar
Плечо, трендовые участки на реализациях СБ, это нормальное явление. Иначе и быть не может.
avatar
3Qu, а если они преобладают? Тоже нормально?
avatar
Плечо, да.
Если бы это было бы ненормально, то вы бы помещение проветрить не смогли, и запах подгоревший котлет в кухне стоял бы вечно.
avatar
3Qu, отлично. Трендовиков это должно радовать.
avatar
Плечо, не думаю, что это им поможет.)
avatar
3Qu, почему? Увидел тренд — встал по нему. Если тренды преобладают, то получим положительное МО.
avatar
Плечо, к сожалению, не получим. Лучший прогноз на СБ — текущее значение. Что в переводе означает — вообще нет никакого прогноза.
avatar

3Qu, многое же ещё зависит от того, то считать сбывшимся прогнозом.

 

Например, Вы спрогнозировали 100, а дошло до 99.

 

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

 

А в геометрическом пространстве между 99 и 100 разницы нет, то есть прогноз сбылся. Прогнозировалось 100. Попало в 98, 99, 100, 101 — всё равно «прогноз сбылся».

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

Почему? Потому что её область поражения шире возможной погрешности.

Если перенести это подобие на трейдинг, то это «прибыль, которая всё равно большая, хотя прогноз и не дошёл до цели».

avatar
Плечо, с СБ все не так. По выборке прогноз, это само значение, а по каждой конкретной реализации ± бесконечность. Т.е., в каждой точке траектории полная неопределенность.
avatar

3Qu, так на рынке ведь разброс значений случайного блуждания не является неограниченным (плюс-минус бесконечным).

 

Например, акция Сбербанка ведь не может стоить сегодня 200 руб, завтра 30, послезавтра 1, а на следующий день 5 000. Её разброс значений тесно сжат в тисках плит лимитных заявок с обеих сторон. И уйти далеко она может только через довольно продолжительное время движения со смещением в определённую сторону — что даёт тебя время это увидеть и зайти. Время смещения в другой диапазон определяется силой давления на цену и силой привычки участников рынка видеть цену в таком-то диапазоне.

 

То есть уже погрешность в конкретном значении, в большинстве случаев, получается весьма небольшой — за счёт такой ограниченности диапазона приращений.

 

Остаётся только вопрос с определением направления такого приращения. 

 

Это чем-то похоже на кулачный бой в очерченном узком круге. Бей в последнее место нахождения противника — и, скорее всего, попадёшь. Потому что противнику просто некуда далеко деться от этой точки. Это даст МО+ таким ударам.

 

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

Потому что блуждание чаще будет трендовым — это ограничение, наложенное на него его природой.

Следующее приращение всегда недалеко от предыдущего — ограничение. наложенное рыночной инфраструктурой и психологией участников торгов.

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

На пересечении трёх этих ограничений возникает возможность ловли трендов.

avatar
Плечо, так, рынок и не СБ.) Хотя СБ неплохая модель рынка.
Что касается, бей в последнее место, так промахнешся почти в 100% случаев.)
avatar

3Qu, в случае с направлениями «в последнее место» — это в последнее направление.

То есть на росте — ставь на рост, на снижении — ставь на снижение.

 

В случае с ценой — смотря что считать последним местом. Если некий диапазон, вроде 200-210 — то почти всегда попадёшь. И надо вводить поправку на смещение этого диапазона во времени и скорость смещения. Ну и надо подумать, на основании каких признаков определять этот целевой диапазон.

avatar
Плечо, с СБ это не прокатит. С рынком прокатит, но тоже далеко не всегда. Только на некоторых интервалах. Не люблю термин — паттерн, но для краткости, на ограниченном множестве паттернов.
avatar
3Qu, давайте поставим эксперимент: берём рыночные графики и графики СБ, 100 пар. Вы сможете в большинстве случаев их различить, не зная изначально, где какой?
avatar
Плечо, нет, визуально не смогу. Только стат анализом на большом интервале.
avatar
3Qu, а что там должен будет показать стат. анализ, что невидимо зрительно, но позволит чётко различить одно и другое?
avatar
Плечо, мысль правильная, но построить ТС, берущую на тренде больше, чем она теряет при смене направления, трудно. В том смысле, чтобы доказать это. А не просто иметь в какой-то период.
avatar
стой в сторону последнего движения и, при преобладании трендовых участков, скорее всего будешь торговать в плюс

Самообман мозга. Который «видит» тренды, думая что они неслучайны.
А на самом деле в каждой точке вероятности вверх и вниз примерно равны.
Чтобы убедиться в нетрендовости СБ, посчитайте распределение монотонных участков по длительностям. МО длины монотонного участка получится в соответствии с теорией = e.    2,718… Если брать +1 и -1 как изменения цен. А это в плюс торговать не удастся. На определение начала направления и ошибок при его окончании как раз столько же в среднем и потратите, e единичных движений.
avatar

MS, так а не обязательно же закрываться на первом же -1. 

И если даже тренд случаен, пусть так — его всё равно можно взять.

avatar
Плечо, Вы задачу чётко сформулируйте. Тогда из плоскости верю-не верю можно к расчётам перейти будет и что-то выяснить.
Вы видите серию +1+1+1-1, и вдруг не выходите, тогда о чём говорим? Что тогда тренд, что значит «взять»? Себе ответьте.
И всё же вникните в цифры, что я написал о средней длине такого тренда из +-1.
avatar

MS, с некоторой точки зрения вот это движение — единый тренд. Несмотря на «разрывы». 

 

Эта точка зрения предполагает, что:

1. Рынок можно рассматривать как геометрическое пространство.

2. Имеют значение не только само наличие разрывов, но и их длина относительно предыдущего ряда "+1+1+1+1...". 

И это единичное "-1" слишком мало по сравнению с длиной накопленного ряда "+1" и «не видно» на его фоне. 

Иными словами — является «шумом» для этого тренда, поэтому обращать внимание на него не нужно. Поэтому я там и не выйду.

 

Соответственно, у геометрического подхода — свои «тренды» — и вот таких трендов на графике СБ — очень много. И СБ является легко торгуемым.

avatar
Плечо, увеличением масштаба, например, в три раза постановка задачи сводится к предыдущей.
Вместо +1+1+1+1+1+1-1+1+1-1+1+1+1 получите
+1+1      +1.
Так можно свести всю историю вообще к одному тренду. От заблуждения это Вас не избавляет.
В укрупнённом масштабе всё те же соотношения на среднюю длину тренда. Она 2,72. Первый элемент потратите на определение направления, последний на фиксацию. Постройте распределение длин трендов, вычтите эти естественные потери из столбиков каждой длины и посмотрите на результат торговли.
---
Вы просто не понимаете, что все ваши «тренды» убьют результаты от такого: +1-1   -1+1, ввиду их многочисленности. Глазом Вы отказываетесь их замечать.
avatar

MS, при увеличении масштаба относительные соотношения настоящих разрывов и псевдо-разрывов (вроде тех, что видны на этом тренде) не изменятся. А я смотрю именно на относительные соотношения разрыва и накопленного перед ним тренда.

Факт в том, что вот этот тренд я возьму как целостный, разрывы будут отфильтрованы как несуществующие. Собственно, я это уже сделал и удвоил счёт на этом тренде. 

Большинство таких трендов как +1-1 отфильтровываются заранее, для этого есть способ.

2.72 — это не тот тренд, о котором говорю. Это Вы, как я понял, про непрерывный ряд однознаковых приращений. А тренд может включать в себя и разнознаковые приращения, не переставая быть трендом.

avatar
Плечо, напрасно я распинался, Вы ничего не понимаете.
avatar

MS, ну Вы тоже поймите:

1. Говорите, что там нет тренда.

2. А моя трендовая ТС удвоила счёт там, где «нет тренда».

Как так может быть?

avatar
Плечо, люди в лотерею иногда машины выигрывают. Это не значит, что они познали как выигрывать в лотерею. Аналогия понятна? 
Ваша проблема в том, что Вы не можете выйти за рамки своего привычного мышления. И видите вокруг только своё.
В каком месте я сказал, что нет тренда? А мне это приписано. Это первый пример странного мышления.
Я написал вам, что ваш «фильтр» пропуска единичных отступлений — ни что иное, как просто увеличение масштаба, поглощающее отступление. Привёл пример как в увеличенном масштабе то, что не было трендом на мелком, станет им. Вы снова этого не поняли.
Вы не понимаете, что при укрупнении принципиально ничего не меняется. Снова нужен один шаг по тренду, чтобы посчитать, что он начался. И один шаг, чтобы закрыть его. Минусом на конце. Просто сами шаги крупнее стали, чем первоначально рассматриваемые +1 и -1.
Могу так переписать, разжевывая:
Вместо +1+1+1+1+1+1-1+1+1-1+1+1+1 получите
+9. В масштабе 9 это снова +1. Понятно?  Это всего один шаг. Как Вы входить собираетесь, увидев +9? Надеяться на следующие +9? Ведь по тренду! Удачи.

avatar
MS, завтра ещё раз всё перечитаю с начала.
avatar
3Qu, а я думал, там дело в разнице давления, вот я глупец.
avatar
Плечо,  ну вообще то вероятность СБ со средним нуль со временем уйти «далеко» от нуля вверх ИЛИ вниз больше, чем остаться «около» нуля.
avatar
А. Г., так я тоже так думаю. Просто видел замечания к случайным графикам: «А что это они такие трендовые?» И решил прояснить этот вопрос.
avatar
Плечо, точно. И не с ДСЧ, а именно с интенсивности излучения какого-то изотопа, которое физики считают случайным блужданием. А как их использовать, я описал в ссылке.
avatar

А. Г., имеем график случайного блуждания. На отдельных участках среднее нуль, на других — не нуль.

Чем обусловлен этот переход от нулевого к ненулевому среднему?

avatar
Плечо,  на этот вопрос нет однозначного ответа, если не делать дополнительных предположений.
avatar
А. Г., например, каких?
avatar
Плечо, предположений о смене средних. Каких? Да их можно придумать десятки.
avatar
уверенных, что всё делают правильно, но получающих разные, а иногда и противоположные результаты.

Надо просто делать правильно, а не быть уверенным что делает правильно. 
Дядя Ваня СпекулянтЪ, для этого как раз и нужен единый чёткий критерий «правильности».
avatar
Самый лучший бектест это растущее эквити на реальном счете. Логика алгоритма должна быть разумной. Как и почему у вас деньги не заберут.
avatar
Очень простой ответ. Для этого был придуман Walk-Forward тест
avatar

 Бэктест это исследование. Ты можешь его автоматизировать, но чтобы его автоматизировать, алгоритмизировать, ты сначала должен его пройти руками, научно, обоснованно, по логике и т.д. и т.п. Если все грамотно делать, будущее станет для тебя примерно понятным. Вероятностно понятным. Если творить какую-то дичь вместо бэктеста и интерпретации результатов, если неправильно расставлять акценты важности, если быть предвзятым при интерпретации результатов — получишь херню. Потом эти люди плачутся, что стратегии «ломаются» на бою, что прошлое никак не связано с будущим, что от переоптимизации нет спасения и прочее и прочее. А, «не работает», наверно, говорят те же люди после того как у них на бою что-то не работает, так как испортить идею бэктестом можно запросто, т.е. на бою оно не будет работать, а могло бы и не в смысле, что из миллиардов вариантов стратегии есть 100 прибыльных, которые в следующий раз станут не прибыльными, а в смысле что скорее всего (если идея не совсем распоследняя) есть варианты заставить её торговать нормально, это может быть совсем-скромный эдж, но тем не менее.

 

Короч, задолбался я писать одно и то же, буду на абстрактно-менторский стиль переходить в этом вопросе)).

avatar
А зачем вам измерять качество бэктеста?
avatar

Vanches, чтобы понять, кто же всё-таки прав.

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

avatar
Плечо, правы те кто зарабатывает не на бектесте, а в реальном вермене ;-)
avatar

теги блога Foudroyant

....все тэги



UPDONW