Мой статистический анализ (поиск стат. преимущества)

 
 Хочу расказать как я провожу статистический анализ, надеюсь услышать аргументированную критику и предложения.

В статистическом анализе я использую тиковою историю котировок (мне кажется так анализ будет точнее), а точнее средню цену между ask и bid ((ask + bid) / 2), тейкпрофит TP и стоп лос SL использую одинаковые (TP = SL).

 Введу несколько определение, которые я буду использовать:

- Параметр финансового инструмента - любой осциллирующий параметр, например скорость MA, расстояние между MA с разными периодами усрднения и т.п. Использую только осциллирующие (коллеблющиеся) параметры так как необходимо множество совпадений на исследуемом промежутке истории.
- Значение параметра. Как правило используемые мной параметры имеют не целое значение (например 1.4826582...) и в следствии этого сложно искать моменты с одинаковыми значениями параметров, так как в тиковой истории может просто не найтись одинаковых значений параметов. Поэтому используются диапазоны значений, то есть все значения попадающие в определенный диапазон от и до (например от 1.3457 до 1.589) условно равны между собой. Далее под значением параметра я буду использовать именно диапазон значений в который попадает значение параметра.

- Состояние финансового инструмента - любая комбинация параметров или даже один параметр. То есть условно говоря, финансовый инструмент в разные моменты времени имеющие одинаковые (или очень похожие) значения этих параметров, находится в одинаковом состояние в эти моменты времени. Я работаю с комбинациями до 4 параметров, объясню почему.

 Каждый параметр может принимать некоторое количество значени, например параметр 1 - может принимать 100 значений, параметр 2 - 50 значений, параметр 3 -70 значений. Тогда всего будет существовать 100 * 50 * 70 = 350000 состояний фин. инструмента. 350 000 это не моного, а вот если взять 5 параметров, по 60 значений, то получается 60 в 5-ой степени = 12 960 000 состояний. Учитывая что в моей тиковой истории в настоящий момент насчитывается около 40 000 000 тиков (примерно столько же в секундах), и если предположить что каждое из состояний равновероятны, то получается по 3,0864 тика на состояние. Какой тут можно проводить статистический анализ с такой частотой совпадений.

 Смысл анализа в том что бы найти такие состояния фин. инструмента в которых более вероятна (по статистике) прибыльная покупка или прибыльная продажа с отпределнным TP=SL и использовать их при торговле.

 Анализ производится следующим образом:

 Беру тиковую историю, выбираю участок на котором будет производится поиск состояний со стат. преимуществом, оставляю участок истории для конечного испытиня. Для каждой секунды определяется прибыльна она для покупки или для продажи с определенным TP=SL. Определяются состояния для каждой секунды в истории. Для каждого состояния считается количество секунд прибыльных для покупки и прибыльных для продажи. Предположим для состояния A получилос 1489 секунд в продажу и 527 секунд в покупки, значит вероятнось получить прибыль при продаже в состоянии A составляет 1489 / (1489 + 527) * 100% = 73,8%.
Расчитываю таким образом все состояния и сохраняю те которые больше определенного процента (>55%, или >60%, или >65%).
Делаю проверку найденных состояний на втором отрезке истории.
 

 В приведенном  Вами примере 350 000 состояний. А сколько нужно ждать что бы прибыльные состояния (скажем со статистической вероятностью >65%) возникли в реальном времени? День? Неделю? Возможно изменяя диапазоны значений параметров состояний можно как то уменьшить этот срок. 

 
И как работает это все? Я вот пришел к выводу, что состояние рынка слишком сильно дрейфует и находится в диапазоне вероятностей, причем диапазон настолько широк, что практического смысла не имеет.Я придумал много способов определения состояния, прямо и косвенно, и некоторые даже показывпют прогноз с точностью до 1 пункта на 10 часов вперед. Но проблема в том что это происходит иногд, и у меня всегда получается вероятность правильного входа 50%, как не крути, не больше не меньше. Что у вас получается? 
 
К тому же в работе с тиками меня всегда смущает один момент, они не настоящие. Биржевые тики это проторгованные обьемы и совершенные сделки, а форексные тики - по сути ничего не значат. Все время мне не дает покоя этот факт, какие у вас мысли на этот счет?
 
Yuri_Evseenkov:

 В приведенном  Вами примере 350 000 состояний. А сколько нужно ждать что бы прибыльные состояния (скажем со статистической вероятностью >65%) возникли в реальном времени? День? Неделю? 

Частота появления этих состояний зависит от количества найденных прибыльных состояний (а следовательно критериев предъявляемых к состояниям: прибыльность, надежность; под надежностью подразумевается достаточное количество существовавших таких состояний в прошлом, ведь если за всю историю рынок был в каком-то состоянии всего один раз и после этого фин. инструмент пошел вверх, не значит что когда будет такое же состояние в будущем вероятность прибыли от покупки 100%). А точнее даже отношения этого кол-ва к общему количеству возможных состояний. Я делал анализ похожий на тот что привел в примере (на основе скорости МА, ускорения МА и скорости изменения ускорения МА) и количество найденных "полезных" состояний было достаточно большое (возможно из-за того что я рассчитываю состояния сразу для множества TP=SL), даже слишком большой, каждый день приходило множество сигналов и около половины из них были ложными. То есть со скользящими средними анализ не дал положительных результатов.

Yuri_Evseenkov:

 Возможно изменяя диапазоны значений параметров состояний можно как то уменьшить этот срок. 

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

- уменьшение диапазона, приводит к увеличению количества этих диапазонов значений (если мы хотим охватить все возможные значения параметра), а значит к увеличению кол-ва состояний, и к уменьшению надежности такой статистики;

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

223231:
И как работает это все? Я вот пришел к выводу, что состояние рынка слишком сильно дрейфует и находится в диапазоне вероятностей, причем диапазон настолько широк, что практического смысла не имеет.Я придумал много способов определения состояния, прямо и косвенно, и некоторые даже показывпют прогноз с точностью до 1 пункта на 10 часов вперед. Но проблема в том что это происходит иногд, и у меня всегда получается вероятность правильного входа 50%, как не крути, не больше не меньше. Что у вас получается? 

Да действительно рынок сильно дрейфует даже внутри дня, поэтому приходятся использовать еще такой параметр как время (часы), для разных отрезков времени (0-6, 6-12, 12-18, 18-24) рассчитываются свои состояния. И все равно результаты до этой недели меня не устраивали. Не удавалось найти такие комбинации параметров с которыми имелись бы какие-либо стабильные полезные состояния. Полезные были, но они были не стабильные, один месяц давали стат. преимущество, а на другой уже нет. Да и само это стат преимущество меня не устраивало (считанные проценты), учитывая размеры TP=SL, по которым было большинство полезных состояний, спрэд просто все съедал, практически без остатки или даже с небольшим минусом.

Но на этой неделе доделал новую статистику на некоторых оригинальных параметрах рынка (какие не скажу, коммерческая тайна), и только что провел испытания на трех 6-ти недельных периодах не использовавшихся для поиска состояний. И результатом доволен. Есть стат преимущество от 55 до 65% на трех периодах из четырех, на четвертом отрицательный результат от 46 до 51%. Но если смотреть четвертый период там и на графике котировок невооруженным глазом видны серьезные отклонения от нормы. Все равно в среднем за 4 периода я в плюсе.

Но я думаю не останавливаться на достигнутом, хочу поискать еще полезные параметры, и отказаться при анализе от валютных пар, а использовать некоторые условные индексы по каждой валюте (рассчитываемые на основе нескольких валютных пар). Мне кажется тогда статистика будет еще лучше.

223231:
К тому же в работе с тиками меня всегда смущает один момент, они не настоящие. Биржевые тики это проторгованные обьемы и совершенные сделки, а форексные тики - по сути ничего не значат. Все время мне не дает покоя этот факт, какие у вас мысли на этот счет?

В моем анализе тики используются для определения секунд удачных для покупки, удачных для продажи, и неудачных ни для покупки, ни для продажи (если в течение секунды котировка успела сходить в обе стороны). Я не думаю что форексные тики ни чего не значат, все таки они практически одинаковые у всех ДЦ (разница незначительная), я имею ввиду нормальные ДЦ. Хотя некоторые ДЦ периодически меняют настройки на своих серверах и тики начинают приходить со строго определенной частотой, при этом пропуская все промежуточные значения. Меня это совершенно не устраивает.

Большой интерес у меня вызывают объемы, и я не брезгую тиковыми объемами. Нашел ДЦ который не производится каких-то манипуляций с тиковыми объемами, и кажется на графиках тиковых объемов видны некоторые закономерности. У меня давно руки чешутся сделать на тиковых объемах какой-нибудь осциллирующий параметр (а может и не один) и включить его в свой стат. анализ.

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

В статистическом анализе я использую тиковою историю котировок (мне кажется так анализ будет точнее), а точнее средню цену между ask и bid ((ask + bid) / 2), тейкпрофит TP и стоп лос SL использую одинаковые (TP = SL).

 

Введу несколько определение, которые я буду использовать:
- Параметр финансового инструмента - любой осциллирующий параметр, например скорость MA, расстояние между MA с разными периодами усрднения и т.п. Использую только осциллирующие (коллеблющиеся) параметры так как необходимо множество совпадений на исследуемом промежутке истории.
- Значение параметра. Как правило используемые мной параметры имеют не целое значение (например 1.4826582...) и в следствии этого сложно искать моменты с одинаковыми значениями параметров, так как в тиковой истории может просто не найтись одинаковых значений параметов. Поэтому используются диапазоны значений, то есть все значения попадающие в определенный диапазон от и до (например от 1.3457 до 1.589) условно равны между собой. Далее под значением параметра я буду использовать именно диапазон значений в который попадает значение параметра.

- Состояние финансового инструмента - любая комбинация параметров или даже один параметр. То есть условно говоря, финансовый инструмент в разные моменты времени имеющие одинаковые (или очень похожие) значения этих параметров, находится в одинаковом состояние в эти моменты времени. Я работаю с комбинациями до 4 параметров, объясню почему.

 

Каждый параметр может принимать некоторое количество значени, например параметр 1 - может принимать 100 значений, параметр 2 - 50 значений, параметр 3 -70 значений. Тогда всего будет существовать 100 * 50 * 70 = 350000 состояний фин. инструмента. 350 000 это не моного, а вот если взять 5 параметров, по 60 значений, то получается 60 в 5-ой степени = 12 960 000 состояний. Учитывая что в моей тиковой истории в настоящий момент насчитывается около 40 000 000 тиков (примерно столько же в секундах), и если предположить что каждое из состояний равновероятны, то получается по 3,0864 тика на состояние. Какой тут можно проводить статистический анализ с такой частотой совпадений.

 

Смысл анализа в том что бы найти такие состояния фин. инструмента в которых более вероятна (по статистике) прибыльная покупка или прибыльная продажа с отпределнным TP=SL и использовать их при торговле.

 

Анализ производится следующим образом:
Беру тиковую историю, выбираю участок на котором будет производится поиск состояний со стат. преимуществом, оставляю участок истории для конечного испытиня. Для каждой секунды определяется прибыльна она для покупки или для продажи с определенным TP=SL. Определяются состояния для каждой секунды в истории. Для каждого состояния считается количество секунд прибыльных для покупки и прибыльных для продажи. Предположим для состояния A получилос 1489 секунд в продажу и 527 секунд в покупки, значит вероятнось получить прибыль при продаже в состоянии A составляет 1489 / (1489 + 527) * 100% = 73,8%.
Расчитываю таким образом все состояния и сохраняю те которые больше определенного процента (>55%, или >60%, или >65%).
Делаю проверку найденных состояний на втором отрезке истории.
Поддерживаю небходимость поиска статпреимущества именно при ТП=СЛ, однако, не согласен с методом этого поиска. Флуктуация цены происходит вокруг некоторой глобальной закономерности с которой нужно определиться.
 
yosuf:
Поддерживаю небходимость поиска статпреимущества именно при ТП=СЛ, однако, не согласен с методом этого поиска. Флуктуация цены происходит вокруг некоторой глобальной закономерности с которой нужно определиться.
Есть предложения?
 
Согласен что нужно использовать оригинальные параметры. Скользящие средние уже давно обрабатываются суперкомпьютерами и роботы крупных игроков могут играть на опережение. Как Вам такой параметр: отклонение цены от зоны с наибольшим числом котировок за определенное количество баров. Его можно получить при помощи моей программы Popular Prices которая есть в Code Base. 
 
Yuri_Evseenkov:
Согласен что нужно использовать оригинальные параметры. Скользящие средние уже давно обрабатываются суперкомпъютерами и роботы крупных игроков могут играть на опережение. Как Вам такой параметр: отклонение цены от зоны с наибольшим числом котировок за определенное количество баров. Его можно получить при помощи моей программы Popular Prices которая есть в Code Base. 
Да, мне эта идея нравится. Это ведь что-то на подобии профиля рынка? Я еще не использовал параметры зависящие от каких-либо ценовых уровней, но собираюсь. Посмотрел Popular Prices, мне понравилось. Я тоже когда-то делал проекцию тиковых объемов и времени существования котировки (сколько времени котировка имела определенное значение) на ценовую ось. Но поигравшись с получившимися графиками решил отложить на то время когда будет готова программа для стат. анализа. И кажется это время уже подходит.
 
AleksRazgul:
Да, мне эта идея нравится. Это ведь что-то на подобии профиля рынка? Я еще не использовал параметры зависящие от каких-либо ценовых уровней, но собираюсь. Посмотрел Popular Prices, мне понравилось. Я тоже когда-то делал проекцию тиковых объемов и времени существования котировки (сколько времени котировка имела определенное значение) на ценовую ось. Но поигравшись с получившимися графиками решил отложить на то время когда будет готова программа для стат. анализа. И кажется это время уже подходит.

В версии Popular Prices на Code Base тиковые объёмы не учитываются.  Вот Вы пишите:

" Беру тиковую историю, выбираю участок на котором будет производится поиск состояний со стат. преимуществом, оставляю участок истории для конечного испытиня. Для каждой секунды определяется прибыльна она для покупки или для продажи с определенным TP=SL. Определяются состояния для каждой секунды в истории. Для каждого состояния считается количество секунд прибыльных для покупки и прибыльных для продажи. Предположим для состояния A получилось 1489 секунд в продажу и 527 секунд в покупки, значит вероятнось получить прибыль при продаже в состоянии A составляет 1489 / (1489 + 527) * 100% = 73,8%."

Интересный алгоритм оптимизации. Но почему расчет идет каждую секунду? Если за минуту пришло 10 тиков то остальные 50 секунд программа считает одно и тоже ? Или это как то связано со скоростью скользящей средней? 

 Скажите какой язык используете и может ли Ваша программа работать как тестер-оптимизатор? 

 
Yuri_Evseenkov:

В версии Popular Prices на Code Base тиковые объёмы не учитываются.

Да, я видел описание алгоритма, но я делал в том числе и с использованием тиковых объемов.

Yuri_Evseenkov:

Интересный алгоритм оптимизации. Но почему расчет идет каждую секунду? Если за минуту пришло 10 тиков то остальные 50 секунд программа считает одно и тоже ? Или это как то связано со скоростью скользящей средней? 

 Каждую секунду в которую приходил хотя бы один тик, остальных секунд как бы и нет. Очень хорошо что вы обратили на это внимание. Я как бы об этом не задумывался, а ведь действительно возможно следует заполнить разрыв между двумя секундами последними значениями. Возможно это изменит результаты отбора и тестирования.

Yuri_Evseenkov:

 Скажите какой язык используете и можно ли использовать Ваша программа работать как тестер-оптимизатор? 

 Пишу на C++.

Я и использую её как тестер оптимизатор, она ведь ищет такие комбинации параметров которые дают наибольшее стат. преимущество. Но вот использовать её без моего участия вероятно не получится (на данный момент). Исходными кодами я очень дорожу (все таки больше 2-х лет с ними мучился). А делать человеческий пользовательский интерфейс и разрабатывать интерфейс подключения стороних модулей некогда.

Причина обращения: