Форум » Идеи для статей » Как оценить качество советника » Ответить

Как оценить качество советника

Stoletov: Здравствуйте коллеги! Сейчас расскажу вам, как можно оценить качество торговой системы (советника). Идея изложена в книге Ван Тарпа «Супертрейдер. как зарабатывать на бирже в любых условиях». По мнению автора качество системы определяется отношением M/S, где М - матожидание (средняя прибыль или убыток в расчете на 1 сделку), а S - среднеквадратичное отклонение (оно определяет изменчивость системы). Для понимания лучше рассмотреть это на примере. Я изложу это немного по другому и попроще, чем автор книги. Пусть вы совершили 3 сделки с такими результатами: 1: прибыль +50 пипсов, 2: убыток -30 пипсов, 3: прибыль +10 пипсов. Тогда М=(50-30+10)/3=10 пипсов, S= (√(50-10)^2+(-30-10)^2+(10-10)^2)/3=32.66 (здесь стоит квадратный корень из всего выражения) M/S=10/32.66=0.31 Качество системы автор (напомню - Ван Тарп) оценивает по отношению M/S так: 0,16-0,19 – низкое, но торговать можно 0,20-0,24 – среднее 0,25-0,29 – хорошее 0,30-0,50 – отличное 0,50-0,69 – превосходное >0.70 – священный Грааль Автор также отмечает, что рассчитывать эти величины (M, S и M/S) имеет смысл при количестве сделок N как минимум 30, чтобы результаты были достовернее. Он рекомендует постоянно их рассчитывать по мере накопления новых сделок, чтобы контролировать качество своей системы. При N=100-200 можно уже будет почти наверняка сделать вывод о качестве системы по приведенным выше цифрам. Если конечно еще останутся деньги на счете… Понятно, что с добавлением каждой новой сделки величины M, S и M/S будут меняться. Я сам сосчитал их для своей системы на исторических данных. Это мне было сделать легко, т.к. у меня свой тестер, специально написанный для моей системы, который выводит результаты сделок в массив. Так вот, сначала при малых N значения M/S иногда были даже отрицательными, но по мере увеличения N до 50-100 они все меньше меняются и стремятся к положительному числу. А если система убыточная, то получите отрицательное число, зато хоть будете знать, что такую систему применять не надо. Для иллюстрации и лучшего понимания прикладываю рисунок. Уж извините, что нарисовал от руки, да ведь мы здесь не научные статьи пишем.

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

Scriptong: Подход интересный. Причем достаточно легко сделать скрипт, определяющий качество торговли на основании сделок из истории счета (видимо, так и сделаю). Только вот вопрос к формуле расчета среднеквадратичного отклонения (СКО). Обычно СКО считается по формуле: Вы, вроде бы, именно ее и привели, но результат какой-то странный. По моим подсчетам СКО в данном случае должно быть равно 32.66. Кстати, виндовый калькулятор тоже склоняется к этой мысли. Если же использовать еще одну распространенную формулу расчета СКО (деление не на n, а на n-1; используется в Excel), то получаем 40. В итоге качество рассматриваемой системы будет 0,31 или 0.25, в зависимости от выбранной методики расчета СКО.

Stoletov: Спасибо вам за замечание. Действительно я ошибся в расчете и теперь исправил. Поднят интересный вопрос - на что делить при расчете СКО (среднеквадратичного отклонения) - на N или на N-1. Теория говорит, что правильнее на N-1. т.к. для конечной выборки оценка смещенная. Лично мне это не совсем понятно. Чтобы здесь не путаться, можно применить такую теорему: дисперсия D равна разности между матожидланием квадрата случайной величины X и квадратом ее матожидания, т.е. D= M(x^2) - (M(x))^2. Тогда СКО рассчитывается по такой формуле (суммирование по i от 1 до N): СКО = SQRT[М(x^2) - (M(x))^2] = SQRT[SUM(Xi^2)/n - (SUM Xi/n)^2)]

Scriptong: Stoletov пишет: дисперсия D равна разности между матожидланием квадрата случайной величины X и квадратом ее матожидания Для лучшего восприятия: и Еще пожалуйста укажите, где взята подобная формулировка расчета дисперсии. Кто или какой статпакет использует подобный подход?


Stoletov: На этот раз ошиблись вы, уважаемый Scriptong. В обоих формулах надо убрать внешние скобки, а перед второй суммой поставить 1/n. Обратите внимание, что при возведении в квадрат второй суммы 1/n тоже возводится в квадрат. Это известная формула из теории вероятностей. Например, она приводится в книге В.Е. Гмурман "Теория вероятностей и математическая статистика" (параграф 4 "Фрмула для вычисления дисперсии", стр 89). А в виде сумм я расписал ее сам. А как иначе распишешь? Ведь матожидание элементов выборки (или их квадратов) равно сумме всех ее элементов (квадратов), деленное на количество этих элементов. Кстати, если считать СКО по этой формуле, то получится такой же результат, как по обычной формуле с делением на n (а не на n-1).

Scriptong: Stoletov пишет: На этот раз ошиблись вы Ну да, во втором слагаемом ведь 1/n в квадрате. Поэтому один экземпляр этого множителя должен оставаться со вторым слагаемым, в то время, как общий множитель все равно выносится за скобки:

Scriptong: Stoletov пишет: она приводится в книге В.Е. Гмурман "Теория вероятностей и математическая статистика" Спасибо. Нашел здесь (стр. 89).

Stoletov: Ну вот теперь в формуле все правильно. К слову, по этой формуле и программа считает быстрее. Ведь на каждом шаге, т. е. при новом значении n, программа делает лишь несколько операций - к одной сумме добавляет Xi, к другой Xi^2, потом делит на новое n и т.д. А вот если считать по обычной формуле, то надо каждый раз для нового n вычислять всю сумму (из-за изменения матожидания М для каждого n надо находить все разности Xi-М и возводить их в квадрат). Если уж быть до конца честным, то надо признаться, что и при достаточно больших n величина M/S может заметно меняться. Это происходит, когда добавляются сделки с очень большой прибылью или убытком. Администраторам тоже спасибо за повышение звания до прапорщика.

Scriptong: Stoletov пишет: К слову, по этой формуле и программа считает быстрее. Ведь на каждом шаге, т. е. при новом значении n, программа делает лишь несколько операций - к одной сумме добавляет Xi, к другой Xi^2, потом делит на новое n и т.д. А вот если считать по обычной формуле, то надо каждый раз для нового n вычислять всю сумму (из-за изменения матожидания М для каждого n надо находить все разности Xi-М и возводить их в квадрат). Веское замечание. Stoletov пишет: Если уж быть до конца честным, то надо признаться, что и при достаточно больших n величина M/S может заметно меняться. Это происходит, когда добавляются сделки с очень большой прибылью или убытком. В этом нет ничего удивительного. Это происходит с любым нестационарным процессом (например, с нашей жизнью - если она с самого начала не задалась, то вовсе не значит что такою будет до своего конца ; ну и наоборот). Stoletov пишет: Администраторам тоже спасибо за повышение звания до прапорщика. Вины администрации здесь нет - форум повышает звания в зависимости от количества оставленных сообщений.

Stoletov: Еще одна идея: величину M/S можно последовательно оценивать например по 30 сделкам со смещением на 1 сделку. Например, у вас 100 сделок. Сначала оцените для сделок 1-30, затем для 2-31 и т.д. вплоть до 71-100. При этом результаты для сделок 1-30, 31-60 и 61-90 будут совсем некоррелированы. Если эти 3 результата будут сильно отличаться друг от друга и особенно если будут давать то плюс то минус, то торговая система сильно изменчивая и с ней надо быть осторожным.

Scriptong: Stoletov пишет: Если эти 3 результата будут сильно отличаться друг от друга и особенно если будут давать то плюс то минус, то торговая система сильно изменчивая и с ней надо быть осторожным. Это, скорее, касается ручной торговли. При работе автоматических систем такое бывает очень редко.

Sergey: ссылка на сообщение Отправлено: 25.10.14 20:38 Scriptong пишет: Подход интересный. Причем достаточно легко сделать скрипт, определяющий качество торговли на основании сделок из истории счета (видимо, так и сделаю). Идея не плохая. Когда планируется реализация?

Scriptong: Sergey пишет: Идея не плохая. Когда планируется реализация? С одной стороны, она достаточно простая, если говорить просто об обработке истории счета. И можно было бы сделать в течение нескольких часов. Но понимая, что основная потребность такой программы заключается в обработке стейтментов (htm-файлы отчетов, генерируемые тестером или вкладкой "История счета"), приходим к выводу, что нужно сначала разработать парсер htm-файлов для получения данных. А это уже не такая простая задача. На нее нужно намного больше времени. Поэтому конкретный ответ дать не могу.

Genry: Scriptong пишет: Но понимая, что основная потребность такой программы заключается в обработке стейтментов (htm-файлы отчетов, генерируемые тестером или вкладкой "История счета"), приходим к выводу, что нужно сначала разработать парсер htm-файлов для получения данных. А это уже не такая простая задача. На нее нужно намного больше времени. Игорь, а может сделать промежуточный csv- файл и с ним работать? я давно использую Ваш скрипт History_to_file который делает выжимку, там и ЕА лучше описаны чем в стейте - есть магик.

Scriptong: Genry пишет: Игорь, а может сделать промежуточный csv- файл и с ним работать? Если речь о том, чтобы пользователь сам это делал, то это какая-то странная автоматизация. Если же имеется в виду, что скрипт должен делать промежуточный файл, то это лишнее телодвижение в программе. Достаточно просто напрямую читать файл отчета. Sergey пишет: Когда планируется реализация? Приступил к работе. Думаю, на следующей неделе будет новый инструмент.

Sergey: Scriptong пишет: Приступил к работе. Думаю, на следующей неделе будет новый инструмент. И это радует! Удачи!



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