Блог им. zweroboi

Тест системы на неслучайность

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

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

Время: 10:20:30, 10:20:31, 10:20:32, 10:20:33, 10:20:34, 10:20:35...
Цена: 1000, 1001, 1002, 1000, 998, 998, 997...
Приращение: 0, 1, 1, -2, -2, 0, -1...

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

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

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

По счастью, для целей проверки гипотезы о различии средних значений двух выборок давным-давно придуманы статистические тесты. Нам интересен тест Стьюдента, вернее его модификация для двух выборок разного размера с необязанными совпадать дисперсиями, известная также как тест Уэлча. Ссылка на англоязычную Википедию: goo.gl/CTa5Jc.

Внимание, формула:
Тест системы на неслучайность 
Здесь X1 и X2 с чёрточками — это средние значения, s1^2 и s2^2 — выборочные дисперсии, а N1 и N2 — количество элементов для первой и второй выборок, соответственно. Считаете эти параметры для каждой выборки, получаете конкретное значение t. Уже когда размеры обоих выборок составляют порядка нескольких десятков элементов, распределение значений t очень близко к нормальному с матожиданием 0 и дисперсией 1. Соответственно, чем больше абсолютное значение t для конкретной пары выборок, тем интереснее для нас та система, с помощью которой они были получены. Фактически, это количество «сигм», стандартных отклонений от матожидания нормального распределения для данной системы, показывающее вероятность того, что она ведёт себя на рынке случайным образом.

С увеличением периода тестирования и, соответственно, размеров выборок, у интересной системы критерий t постепенно растёт до интересных значений. Из практики и простого научного здравого смысла, начинаются эти значения где-то в районе шести (сигм). Системы с t меньше шести — скорее всего ни о чём. Те, о которых я писал в предыдущем посте, на EMAшках на минутках, дают порядка 8-9 сигм, и это только за период с середины марта для фьюча SiH5.

Вот так вот как-то так, умеющий читать да прочитает!
Всем профита (по мере сил).
★39
56 комментариев
а как вам не ЕМА а WMA?
avatar
Тихая Гавань, что это, Windows Media Audio?
Zweroboi, Weighted Moving Average
avatar
JMA точнее если уж так нравятся эти машки
avatar
AlexFox, а какая там формула?
Дайте ему в профиль медальку «Профессор»
прочитал всё, но понял только концовку )
avatar
Зачем Вы так поступили с моим мозгом? )
Владислав (Pilot), ноу пэин ноу гэин.
крупняк внутри дня играет против таких стратегий. У больших денег большие робота с мощной вычислительной базой, которые быстро вычисляют такие прибыльные идеи и рушит их. Как среди маркетанов, стоящих спредом в стакане выигрывает тот кто первый поставил заявку, так и среди роботов выиграет тот, кто первее нашел неэффективность.
avatar
Absourd, если они разрушают неэффективности вместо того чтобы их использовать, то они ничего не зарабатывают.
Думаю, что дело обстоит чуть иначе. Они сначала неэффективности создают, затем играют на них, пока «число сигм" не упадёт ниже некоторого значения.
Мы же со стороны это наблюдаем, и если успеваем, то присоединяемся, проведя соответствующие вычисления, как автор.
avatar
MS, они играют против неэффективности т.к. могут набрать там достаточную позу, а зная где будет слив стопов после набора поз можно понять где он будет крыться.
avatar
Absourd, рушит идеи — это пытается заработать на них, тем самым снижая прибыльность системы?
avatar
V.V., играя против какой либо системы ты набираешь нужный объем и сливаешь их по стопам, давая тем самым импульс на дальнейшее движение.
avatar
Для построения прибыльной торговой системы не достаточно знать, что среднее значение изменяется со временем (оно действительно изменяется, и от этого построение системы становится только более трудным). Нужно уметь предсказывать, как именно изменяется это среднее. Как минимум, нужно уметь предсказывать будет ли средняя доходность завтра положительной или отрицательной.
avatar
finstrateg, тут цель понять случайно ты оказался в плюсе или нет. Вернее, какова вероятность того, что ты оказался именно в таком плюсе именно на таком графике совершенно случайно. А если оказался не в плюсе, то опять же, случайно так вышло или можно перевернуть систему и торговать по ней.
Zweroboi, может быть есть фрагмент расчетов в excel для такой выборки — думаю так было бы гораздо понятней
avatar
BiTrader, сам я в Экселе такое не считаю, но для Вас нагуглил: www.usablestats.com/calcs/2samplet&sample=1
1. На рынке все нестационарно и не нормально. А Стьюдент и вообще вся классическая статистика применима только к ЦПТ процессам.

2. Зачем сравнивать то, что внутри сделки с тем, что снаружи? Вроде, логично сравнивать среднюю сделку с нулем. Мы ж деньги хотим зарабатывать а не b&h обгонять.
avatar
anatolyutkin,

1. При тестировании на истории мы имеем дело с реализацией процесса, а среднее по случайной выборке стремится к нормальному независимо от формы распределения в самой популяции, в силу той же ЦПТ. В этом всё и дело, тут не вводится никаких искусственных предположений о нормальном распределении приращений цен, ибо это очевидно не так.

2. Чтобы отличить выигрышную систему от торгующей случайно на длинном тренде. Не знаю как Вы, а я хочу обгонять B&H, причём со страшной силой )) Иначе это не зарабатывание денег, а «шадринг», понравился мне этот термин.
Zweroboi, 1. Результаты сделок не являются независимыми и малыми. Это по опыту. Точнее, про независимость не знаю, а вот про малость--точно. Собственно, 14й год с его взрывом волатильности на доллар-рубле тому пример. Поэтому распределение результатов сделок не нормально.

2. Это философский вопрос :) Я хочу денег--стабильно, и, как следствие стабильности, много. Плавная растущая эквити--вот цель, и испиленный с рисками в 100% b&h тут точно не конкурент и не бенчмарк.
avatar
anatolyutkin,

1. Да, очевидно, результаты сделок не распределены нормально, поскольку ценовые приращения внутри сделки не являются случайной выборкой. Система может выбирать периоды повышенной волатильности, и дисперсии приращений внутри и вне сделок могут существенно отличаться. Именно по этой причине используется критерий для выборок с неодинаковой дисперсией. Но его значение уже имеет нормальное распределение )

2. Я тоже хочу много денег )) Главное тут понимание оптимального направления в каждый момент времени, а как на этой основе пилить график и с какими объемами и рисками — это уже отдельная тема и свои ноу-хау.
Zweroboi, Вот смотрите. У меня есть трендилка на si. Средняя сделка у нее до осени 2014 была что-то типа 100 рублей. Типичная сделка в районе 500 рублей. Дэйли фрейм. А потом она прокатилась от 45000 до 78000 одной сделкой. И эта одна сделка сразу неслабо изменила нафиг все средние. И что тут делать? Ясно же, что ваша и любая другая статистика из гауссова мира тут неуместна--ибо если одной сделкой меняются все средние--это печально. Точно также поменялись парой участков и «внешние» средние. В этих условиях средние просто неуместны.
avatar
anatolyutkin, может быть уместны, может быть неуместны, главное чтобы работало, верно? Как у меня работает один из элементов приёмки систем, я описал. Для систем на дэйли фреймах при описанном подходе нужно много данных, с захватом двухтысячных точно. И тогда средние от одной сделки, дыже такой жирной, уедут не сильно. А даже если и уедут, то пускай, но только в правильную сторону )
а как мне быть с образованием 8классов / 1974г/,
avatar
И еще. Si--трендовый. На это есть причины. И поэтому трендовые системы, в частности, трендовухи на скользящих средних работают хорошо. Это и без t распределений известная вещь.
avatar
anatolyutkin, это да, а на каком ещё инструменте предложили бы проверить?
anatolyutkin, они хорошо работают, пока тренд есть. А когда тренд исчезает — их отключают в ручном режиме или есть автоматический критерий, по которому отключают?
Иными словами, как понять, что надо отключать?
avatar
V.V., Трендовость и тренд--разные вещи. Ясно видимый тренд не является обязательным следствием трендовости, более того--тренды есть и на нетрендовых процессах. Поэтому трендовухами можно торговать и инструменты без четко видимых трендов--главное, чтобы трендовость была.
avatar
Все проблемы нетрендовости решаются с помощью крнл
avatar
а где период то ЕМА написан?? или я не там читал?)
avatar
Всего два вопроса: 1) какое значение теста будет у системы с достаточным числом степеней свободы, чтобы пропустить все отрицательные приращения и оставить все положительные? 2) насколько это запредельное число сигм будет гарантировать такие же характеристики системы в будущем?
avatar
bstone,
1) Речь о системе, которая переподогнана под конкретный набор исходных данных? Разумеется, для такой системы значение теста будет просто космическим. С другой стороны, вероятность случайно выбрать именно данную конкретную систему из всего множества подобных с таким же числом степеней свободы будет исчезающе малой.
Поэтому:
2) Для переподогнанной системы не будет гарантировать нинасколько. А если мы создаем набор из нескольких тысяч систем и находим среди них такие, которые чисто случайно появляются с вероятностью одна на миллиард, причём не одну а пару десятков, то в них уверенности уже будет побольше.
Zweroboi, вот именно, подгонка системы с большим числом параметров — это тоже в своем роде результат «с вероятностью один на миллиард» :)
avatar
bstone, вот представьте, что множество всех возможных систем — это колода карт. Из неё можно вытащить пикового туза наугад с какой-то вероятностью, можно посмотреть все карты и честно его найти, а можно даже не искать и просто нарисовать самому. Когда колода размером с земной шар, последнее сделать проще всего. Вот это и называется подгонка.
Zweroboi, в вашем примере результат случайного вытаскивания туза пик из колоды и результат его поиска полным перебором колоды одинаков, но вы почему-то считаете, что если вам этот туз выпал случайно, то он какой-то особенный :)
avatar
bstone, вы ничего не поняли. Тузы самые обычные. Но если они случайным образом появляются чаще, чем должны, то можно сделать соответствующие выводы о самой колоде.
Zweroboi, протестую :) Тест Стьюдента можно интерпретировать в разрезе достоверности различия средних значений выборок, но уж никак нельзя по нему судить о качественной природе этих различий! Вы максимизируете функцию среднего и не важно, перебрали ли вы в данном случае все пространство параметров, или случайно нашли несколько наборов, дающих хороший результат. И тот и другой вариант — это «подгонка» под конкретный ряд.
avatar
bstone, а в чём, по-Вашему, заключается отличие между подгонкой и оптимизацией? Или Вы два этих понятия не различаете?
Zweroboi, «подгонка» для меня в данном случае является синонимом оптимизации. Просто чаще используется среди алготрейдеров. Тут можно пространно порасуждать об оптимизации и переоптимизации, но применительно к торговле это все одно и тоже. Вы находите какие-нибудь различия?
avatar
bstone, разумеется, как минимум одно принципиальное.
С увеличением периода тестирования и, соответственно, размеров выборок, у интересной системы критерий t постепенно растёт до интересных значений. Из практики и простого научного здравого смысла, начинаются эти значения где-то в районе шести (сигм). Системы с t меньше шести — скорее всего ни о чём. 
***
Вот так вот как-то так, умеющий читать да прочитает!
Не умеющему читать (не математику) можно на пальцах?
Комменты не перечитывал, если надо — осилю. )
avatar
VladMih, да там и так вроде на пальцах, что именно непонятно могу ответить на конкретные вопросы.
при расчете сигм Вы какие берете средние?
avatar
SergeyJu, не совсем понял вопрос. В посте речь о средних приращениях цены за одинаковые промежутки времени, соответственно есть среднее приращение, когда мы в сделке и когда нет. Цены я считаю сам из тиков как VWAP за 1с )
Zweroboi, понял, среднее Вы считаете раздельно по двум подвыборкам и вычитаете при расчете дисперсии.
А если система имеет 3 состояния — лонг, шорт, аут, Вы считаете 3 статистики?
Я понял так, что Вы по тикам считаете секундные бары и на их основе строите системы. И при расчете этих статистик бары тоже секундные или более медленный таймфрейм. И вообще, о какой примерно частоте сделок идет речь при работе на секундных барах?
Я работаю на минутках.


avatar

SergeyJu, если система имеет три состояния, то котируется считать лонг и шорт отдельно, как будто у нас две системы — одна лонг и одна шорт. Соответственно считаем 4 средних: лонг, шорт+аут, шорт, лонг+аут, и сравниваем первое со вторым и третье с четвёртым.

Бары я не считаю, для каждой секунды считается одна цена — VWAP (volume-weighted average price). Секундный интервал нужен для того, чтобы набрать нужное для анализа количество исходных точек данных — это порядка неск сот тысяч для одного инструмента. С частотой сделок это связано чуть менее, чем никак, она настраивается через, например, периоды используемых индикаторов, которые по этим секундным средним ценам считаются.

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

Zweroboi, а средние за секунду лучше, чем закрытия секунд?
Несколько сот тысяч секунд, это два-десять торговых дней. Неужели расчет по секундам дает дополнительный плюс к расчету по минутам. Или для Вас важна скорость реакции?
Я тоже торгую трендследящие системы. И у меня вполне обычно, что группа однородных систем с чуть-чуть разными параметрами входи в рынок (выходит) 10-20 минут. 
avatar
SergeyJu, я не проверял, но думаю средние за секунду и закрытия секунд будут работать примерно одинаково. В принципе, и 10 секунд и может даже минута тоже, но с точки зрения количества вычислений на этапе построения модели разницы нет, поэтому я просто выбрал более надёжный и заведомо более точный вариант. Ведь ниоткуда же не следует, что минутные интервалы должны начинаться строго в 00 секунд по часам? Да и оно как-то спокойнее, когда аналитика приходит реалтайм, а не раз в минуту )

Например я ещё могу захотеть из любопытства построить модельку для последнего месяца и сравнить с годом, что там у них есть общего а чего нет и т д. Короче, самый универсальный таймфрейм )
Zweroboi, тогда еще логичнее брать не тики, а аски-биды :)
Кстати, более устойчивая конструкция, особенно для ликвидных, но не слишком ликвидных активов. 
В общем-то я хочу перейти со временем в более быстрый таймфрейм, но не по тем соображениям, что у Вас.
avatar
SergeyJu, не факт. Я предпочитаю тики, потому что по этим ценам реально были сделки и объёмы. А биды и аски — то, что они видны совсем не гарантирует, что они ещё есть там где они были, мы ж почти как астрономы в этом смысле )
Zweroboi, я когда-то строил индекс широкого рынка корпоративных облигаций. По бид-аскам он получался устойчивым и более-менее адекватным. По тикам — нет.
avatar
SergeyJu, понятно, но индекс это всё-таки чуть другое. И в облигациях наверняка не так много сделок как на фьючах
avatar
Zweroboi, на облигах было много случаев, когда за день ни одной сделки. При этом аск-бид могли стоять вполне адекватные.  Поэтому индекс на сотне и более тикеров оказывался устойчивым. Все облигации, кроме ОФЗ у нас или неликвид или полуликвид. Точно также я строил индекс РТС2. В принципе, нормальная тема для медленных торговых систем.
avatar

теги блога Пафос Респектыч

....все тэги



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