Теория случайных потоков и FOREX - страница 14

 
Yurixx:


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

А такие стратегии есть, живые. Посмотрите на Better'a. Его советник реально делает то, что я хотел реализовать в своем - распознает точки разворота и входит в начале волны. Причем как вверх, так и вниз. Вот вам и прогноз, и распознавание до того как.

...

Так что требуется четко оценить ресурсы и по памяти, и по времени вычислительного цикла. А то может получиться один расчетный цикл 5-10 часов. Какие тогда новости ? Только и останется что на днях играть или неделях. :-)


Конечно это на самом деле гипотеза и основана она не на статистике (которая для таких утверждений не может быть аргументом потому что для опровержения достаточно одного примера) а на системных соображениях, т.е. на соображениях равновесия. Но и советник Better'a тоже не аргумент - мало время наблюдения. Однако для нас, безденежных донов (а миллиардеров среди нас мало :), есть и хорошая новость: тот факт что наши действия никак на рынок не влияют на порядки упрощает задачу. Кроме случаев, когда наша модель совпадает с моделью кого-нибудь из китов :)

Проблема объёма вычислений обходится созданием кластера, думаю для работы по готовой стратегии проблемы набрать участников не будет. Ну а один компьютер один фильтр можно надеяться потянет.

 
lna01:


есть и хорошая новость: тот факт что наши действия никак на рынок не влияют на порядки упрощает задачу. Кроме случаев, когда наша модель совпадает с моделью кого-нибудь из китов :)

Проблема объёма вычислений обходится созданием кластера, думаю для работы по готовой стратегии проблемы набрать участников не будет. Ну а один компьютер один фильтр можно надеяться потянет.


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

А по поводу кластера вы меня расстроили. Даже мое личное участие чую не спасет ситуацию. Ведь на Земле всего 8 миллиардов людей, компьютеров наверное не больше. Как же тогда создать кластер, если нужно обсчитывать 10-100 миллиардов фильтров ? :-)))

 
Yurixx:
Мне кажется наоборот. Если бы наши действия влияли на рынок (причем, желаемым образом) то это не только упростило, вообще ликвидировало бы ее как задачу. :-) И роботов тогда не надо было бы.

Желаемым образом? Как только наши действия начнут заметно влиять на рынок, рынок начнёт работать лично против нас. Включая центробанки и спецслужбы. Соросу удалась в своё время разовая акция, а вы хотите иметь модель, позволяющую перекачать к себе все деньги мира? Ну предположим это получится. И кому эти деньги после этого будут нужны? :)

Чисто технически все константы просто начнут превращаться в переменные.

С миллиардом участников приближение отсутствия обратной связи перестанет работать. Ну а 100 не такая уж недостижимая цифра

 

Калмановская фильтрация

Введение

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

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

Задача оценки параметров

Одной из задач теории статистических решений, имеющих большое практическое значение, является задача оценки векторов состояния и параметров систем, которая формулируется следующим образом. Предположим, необходимо оценить значение векторного параметра X, недоступного непосредственному измерению. Вместо этого измеряется другой параметр Z, зависящий от X. Задача оценивания состоит в ответе на вопрос: что можно сказать об X, зная Z. В общем случае, процедура оптимальной оценки вектора X зависит от принятого критерия качества оценки. Например, байесовский подход к задаче оценки параметров требует полной априорной информации о вероятностных свойствах оцениваемого параметра, что зачастую невозможно. В этих случаях прибегают к методу наименьших квадратов (МНК), который требует значительно меньше априорной информации. Рассмотрим применения МНК для случая, когда вектор наблюдения Z связан с вектором оценки параметров X линейной моделью, и в наблюдении присутствует помеха V, некоррелированная с оцениваемым параметром:

(1)

где H – матрица преобразования, описывающая связь наблюдаемых величин с оцениваемыми параметрами.

Оценка X, минимизирующая квадрат ошибки, записывается следующим образом:

(2)

Пусть помеха V не коррелирована, в этом случае матрица RV есть просто единичная матрица, и уравнение для оценки становится проще:

(3)

Задача фильтрации

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

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

Формула 3 легко реализуется программно, для этого нужно заполнить матрицу H и вектор столбец наблюдений Z. Такие фильтры называются фильтры с конечной памятью, так как для получения текущей оценки Xnоц они используют последние k наблюдений. На каждом новом такте наблюдения к текущей совокупности наблюдений прибавляется новое и отбрасывается старое. Такой процесс получения оценок получил название скользящего окна.

Фильтры с растущей памятью

Фильтры с конечной памятью обладают тем основным недостатком, что после каждого нового наблюдения необходимо заново производить полный пересчет по всем хранящимся в памяти данным. Кроме того, вычисление оценок можно начинать только после того, как накоплены результаты первых k наблюдений. То есть эти фильтры обладают большой длительностью переходного процесса. Чтобы бороться с этим недостатком, необходимо перейти от фильтра с постоянной памятью к фильтру с растущей памятью. В таком фильтре число наблюдаемых значений, по которым производится оценка, должна совпадать с номером n текущего наблюдения. Это позволяет получать оценки, начиная с числа наблюдений, равного числу компонент оцениваемого вектора X. А это определяется порядком принятой модели, то есть сколько членов из ряда Тейлора используется в модели. При этом с ростом n улучшаются сглаживающие свойства фильтра, то есть повышается точность оценок. Однако непосредственная реализация этого подхода связана с возрастанием вычислительных затрат. Поэтому фильтры с растущей памятью реализуются как рекуррентные.

У фильтра с растущей памятью имеется одна важная особенность. Если посмотреть на формулу 6, то окончательная оценка есть сумма прогнозируемого вектора оценки и корректирующего члена. Эта поправка велика при малых n и уменьшается при увеличении n, стремясь к нулю при . То есть с ростом n сглаживающие свойства фильтра растут и начинает доминировать модель, заложенная в нем. Но реальный сигнал может соответствовать модели лишь на отдельных участках, поэтому точность прогноза ухудшается. Чтобы с этим бороться, начиная с некоторого n, накладывают запрет на дальнейшее уменьшение поправочного члена. Это эквивалентно изменению полосы фильтра, то есть при малых n фильтр более широкополосен (менее инерционен), при больших – он становится более инерционен.



Сравните рисунок 1 и рисунок 2. На первом рисунке фильтр имеет большую память, при этом он хорошо сглаживает, но в силу узкополосности оцениваемая траектория отстает от реальной. На втором рисунке память фильтра меньше, он хуже сглаживает, но лучше отслеживает реальную траекторию.

Прочитав ветку с самого начала и бегло ознакомившись с содержанием статьи, выдержки из которой приведены выше, становится понятно, что в основу метода обработки ВР с использованием фильтров Кальмана положено априорное утверждение о наличии в исследуемом ВР детерминированных трендов.
Определимся:
1. Пусть имеется нормально распределённая случайная величина с нулевым матожиданием и нулевой или знакопеременной коррелограммой. Проинтегрировав её, получим аналог временного ряда. Если ряд достаточно длинный, мы можем выделить на нём сколь угодно продолжительные участки направленного движения цены. Будем называть такай тренд стохастическим. Исходя из принципиальной невозможности построить ТС, которая могла бы на продолжительном временном интервале статдостоверно приносить прибыль на таком ряде, делаем вывод о невозможности выявления стохастических трендов с помощью казуальных систем.
2. Пусть имеется нормально распределённая случайная величина с нулевым матожиданием и положительной коррелограммой.
Если ряд достаточно длинный, мы можем выделить на нём сколь угодно продолжительные участки направленного движения цены. Будем называть такай тренд детерминированным. Выделение детерминированного тренда принципиально возможно с помощью цифровых фильтров низких частот или их производных. Например, пересечение двух скользящих средних с разными периодами есть не что иное, как приближение к производной от сглаженного временного ряда. Понятно, что это работает, как того требует математика: производная больше нуля, значит, функция растёт, меньше - падает. Вот, только мало кто знает, что работает это только для рядов с положительной ФАК, а ВСЕ валютные ряды, на всех ТФ имеют отрицательную ФАК! И, как следствие, метод на рынке не работает, или работает, но случайно...
Основные задачи анализа временных рядов
Принципиальные отличия временного ряда от последовательности наблюдений, образующих случайную выборку, заключаются в следующем:
• во-первых, в отличие от элементов случайной выборки члены временного ряда не являются независимыми;
• во-вторых, члены временного ряда не обязательно являются одинаково распределенными.

Как правило, выделяют 4 фактора под воздействием которых формируются значения временного ряда.
1. Долговременные, формирующие общую (в длительной перспективе) тенденцию в изменении анализируемого признака. Обычно эта тенденция описывается с помощью той или иной неслучайной функции (аргументом которой является время), как правило, монотонной. Эту функцию называют функцией тренда или просто – трендом.
2. Сезонные, формирующие периодически повторяющиеся в определенное время года колебания анализируемого признака. Поскольку эта функция должна быть периодической (с периодами, кратными «сезонам»), в ее аналитическом выражении участвуют гармоники (тригонометрические функции), периодичность которых, как правило, обусловлена содержательной сущностью задачи.
3. Циклические (конъюнктурные), формирующие изменения анализируемого признака, обусловленные действием долговременных циклов экономической или демографической природы (волны Кондратьева, демографические «ямы» и т.п.).
4. Случайные (нерегулярные), не поддающиеся учету и регистрации. Их воздействие на формирование значений временного ряда как раз и обусловливает стохастическую природу элементов ряда, а, следовательно, и необходимость интерпретации членов как наблюдений, произведенных над случайными величинами. Будем обозначать результат воздействия случайных факторов с помощью случайных величин («остатков», «ошибок »).

Конечно, вовсе не обязательно, чтобы в процессе формирования значений всякого временного ряда участвовали одновременно факторы всех четырех типов. Выводы о том, участвуют или нет факторы данного типа в формировании значений конкретного ряда, могут базироваться как на анализе содержательной сущности задачи, так и на специальном статистическом анализе исследуемого временного ряда. Однако во всех случаях предполагается непременное участие случайных факторов. Таким образом, в общем виде модель формирования данных (при аддитивной структурной схеме влияния факторов) выглядит как сумма всех или некоторых факторов.
Существуют критерии, по которым ВР относят к тому или иному типу. Согласно им, ВР типа валютных не содержат детерминированных трендов, не содержат циклической составляющей, не содержат сезонной составляющей... дальше продолжать?
Теперь вопрос к вам, Prival: что мы собираемся выявлять с помощью многомерного, супер-пупер навороченного Кальмановского фильтра?



 

В фильтр может быть заложен любой процесс не обязательно детерминированный. Можно настроить 1 фильт на (1. Долговременные,....) 2-ой фильт на (2. Сезонные,...) 3-й на (3. Циклические...) 4-й на (4. Случайные (нерегулярные), ...) и т.д.

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

Задача фильтров Калмана (не одного !!! фильтра на все случаи жизни) а нескольких. 1 Определить – вид маневра и время его начала. 2 Предсказать где будет самолет через некоторое время, что бы атаковать его максимально эффективно (взять прибыль :-)).

Поэтому надо строить не 1 фильтр а несколько, каждый из которых настроен на свою модель - (флет, тренд, ... ).

Простейший вариант 1 фильтр работает по тренду, другой по флету. В алгоритме фильтра Калмана есть процедура, которая позволяет определить какой из фильтров сейчас лучше.

Надеюсь Вы не будете утверждать, что есть системы прекрасно работающие на флете, и сливающие на тренде и наоборот при тренде прекрасно работают, а при флэте нет. Так вот фильтр Калмана, как раз и может подсказать когда нужно переключиться.

P.S. Я все таки попробую построить фильтр Калмана, построить различные модели движения и реализовать ТС на их основе. У фильтра Калмана есть одно уникальное свойство которого нет в стандартных индикаторах, он умеет прогнозировать + допустим я построю 3 фильтра флэт, тренд, гэп, . На каком то участке ни один из этих фильтров не работает, анализирую этот участок и делаю 4-й фильтр и т.д. Не тупой перебор от -100 до +100 (perceptor), а осмысленное обучение системы.
 

to Prival

Я надеюсь, Вы не Cтратегическую Оборонную Инициативу против котировок создаете, как ответ стервятникам империалистам? :о)))

 
Prival:
P.S. Я все таки попробую построить фильтр Калмана, построить различные модели движения и реализовать ТС на их основе. У фильтра Калмана есть одно уникальное свойство которого нет в стандартных индикаторах, он умеет прогнозировать + допустим я построю 3 фильтра флэт, тренд, гэп, . На каком то участке ни один из этих фильтров не работает, анализирую этот участок и делаю 4-й фильтр и т.д. Не тупой перебор от -100 до +100 (perceptor), а осмысленное обучение системы.


Рекомендую: не слишком сильно замахивайтесь, можно ведь и руку вывихнуть. Постройте для начала только один фильтр, для флэта или тренда. Пока будете этим заниматься много чего поймете про форекс, легче будет двигаться дальше. Особенно важно понять следующее: ни один реальный трейдер не стремится извлекать прибыль из любых ситуаций. Каждый находит для себя весьма ограниченный список и работает только по этим своим конкретным патернам.

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

 

Prival, тема интересная, ознакомился с Вашими статьями - здравые мысли (хотя по моему убеждению и моделировать и фильтровать траекторию лучше в декартовой системе координат, но это к делу не относится). Однако, некоторое визуальное сходство АФК доплеровской траектории воздушной цели и движения цены представляется мне случайным и не заслуживающим внимания, т.к. природа процессов совершенно разная. Динамические свойства летательного аппарата и котировок, увы, имеют мало общего. Как тут на какой-то ветке движение цены сравнили с траекторией полёта мухи, а не самолёта. Но даже муха не способна, например, на гепы.

В то же время, если выделять в качестве сигнала линейную регрессию цены, то за год может быть и "выловите" несколько сот пипсов, а может и ноль - если коэффициент линейной регрессии окажется равным нулю. То же можно сказать и про стохастический резонанс - возможно мы и выделим медленную тенденцию за счёт высокочастотной с большей амплитудой, но что мы на этом заработаем?! При этом, иногда движения цены на несколько фигур происходят всего за пару-тройку дней. И таких движений в году может быть десятки чуть ли не на каждой паре. А на мелких графиках - сотни в год по полфигуре или около того, и тысячи - по 20 пунктов. Вот и спрашивается: сигнал нам нужен или шум?

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

Есть ли адекватные методы? Есть. Накануне чемпионата с подачи klot'a и других участников форума я заинтересовался искусственным интеллектом. Термин, к сожалению, затрепали, а некоторые публикации здесь на сайте даже девальвировали его в моих глазах, поэтому я долгое время отмахивался от "новомодной" теории. Впрочем - нет, антиреклама - тоже реклама, на каком-то этапе пропаганда Perceptron'a тоже сыграла положительную роль в привлечении внимания к теме. Но почитав литературу, я увидел как далеко ушёл т.н. "слабый ИИ" вперёд по сравнению с тем, что было, например, лет тридцать назад, когда я впервые о нём услышал. А точнее - как далеко я от него отстал.

На Чемпионат я поставил простенькую обученную сетку, как оказалось - переученную и тупую, но примеры других экспертов и, прежде всего, сегодняшнего лидера Better'a показывают, что это направление, по которому есть смысл поработать.

Prival, не хочу сбивать Вас с Вашего Плана, но убеждён, что Вы сумеете найти в ИИ много полезного и для Вашей профессиональной деятельности и быстрее построите прибыльную ТС.

 

Господа позвольте и мне дать Вам совет. Вы предлагаете мне другие пути построения ТС (приводя тут примеры ИИ, нейронные сети, но с моей точки зрения сами до конца их не понимаете). Или считаете, что я только что занялся форексом (хотя я помню времена когда минимальный спред был 10-15 пунктов и это казалось счастьем) или я не имею представления про ИИ, нейронные сети и откуда там ноги растут :-).

Теперь постараюсь, как всегда на примере помочь Вам понять, что хочу сделать Я и чем занимаетесь Вы если создаете «простенькую обученную сетку».

Для лучшего понимания приведу Вам ссылки, прочти те еще раз, что там написано и сравните с тем, что я напишу ниже (к сожалению высказывания klot'a найти не смог, может там про это тоже говориться).

Как найти прибыльную торговую стратегию ('Как найти прибыльную торговую стратегию')

Нестандартная автоматическая торговля ('Нестандартная автоматическая торговля')

Вот цитата «Если мы разделим объекты на два класса: открываемые длинные позиции и короткие позиции, а в качестве признаков возьмем значения индикаторов или осцилляторов технического анализа, то остается лишь выяснить уравнение плоскости и попытаться с ее помощью произвести идентификацию. Постановка задачи ясна».

Это теория распознавания в чистом виде, и военные её прекрасно и давно используют (примеры классов («свой - чужой», (истребитель – транспортник и т.д.). А вот задачка по сложнее 4 класса (БМП – БТР - макет БМП - макет БТР), попробуйте тут одной прямой обойтись :-), разделите с её помощью все на 4 класса.

Нейронные сети, пресловутый ИИ появился как раз из этой теории просто люди по своей сути ленивы и хотят создать систему снова цитата «Насколько реально можно успешно и комфортно торговать, используя торговую платформу МТ4, и не слишком обременяя себя, при этом, скрупулезным анализом рынка?». Обучение компьютера распознаванию при большом количестве классов и признаков очень сложны, поэтому и были созданы Нейронные сети (НС). НС добились некоторых успехов но эта не панацея, там нет никакого ИНТЕЛЕКТА. Основное в этих задачах и самое главное - это разбиение на классы и выбор признаков распознавания этих классов.

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

double perceptron() 
  {
   double w1 = x1 - 100.0;
   double w2 = x2 - 100.0;
   double w3 = x3 - 100.0;
   double w4 = x4 - 100.0;
   double a1 = iAC(Symbol(), 0, 0);
   double a2 = iAC(Symbol(), 0, 7);
   double a3 = iAC(Symbol(), 0, 14);
   double a4 = iAC(Symbol(), 0, 21);
   return (w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
  }

Если бы я создал боевой алгоритм который определяет «свой-чужой» используя в качестве признака (Технический индикатор Ускорения/Замедления (Acceleration/Deceleration, AC)), к стенке поставить будет мало (даже если при этом я учту ускорение этого объекта 7, 14 и 21 мин назад). Сути это не меняет. Причем обратите внимание, я говорю только про задачу разделения на классы и не говорю, что с ними делать после их разделения. Авторы выше указанного материала, смешивают все в кучу (сразу в бой покупать или продавать).

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

1. Вот рисунок, задумайтесь над ним, возможно он подскажет Вам как улучшить создаваемые «сетки». Это Вальдовский обнаружитель в картинке (логика ДА-НЕТ-незнаю, о нем я говорил несколько страниц назад).

2. Четко определитесь с признаками распознавания (я хочу использовать в качестве них модели «поведения» которые закладываю в фильтр Калмана.). Что закладывать будете Вы я не знаю, постарайтесь хотя бы соблюсти одно условие признаки не должны быть коррелированны (сильно коррелированны).

3. Определитесь с классами на который Вы разбиваете входной поток котировок (допустим флет-тренд). И только после распознавания потока бросайтесь в бой, т.е выбирайте торговую систему которая хорошо работает на флете, другая на тренде.

P.S. Опять пол дня потерял, рассказывая очевидные для меня вещи. А цели своей так и не достиг :-(. Не нашлись те кто хочет мне реально помочь в создании такой ТС. Удалю я наверно нафиг эту ветку.

 

Считаю, что конструктивное критическое замечание по своей ценности не уступает возможному согласию между сторонами на этапе проектирования и обсуждения возможной стратегии. Это может сэкономить время и силы. Потому, не вижу причины для раздражения - мы в одной упряжке и цель у нас общая.

Вам, Prival, уже несколько раз замечали, что ЛА обладает массой и, следовательно, всегда можно выбрать дискретность разбиения временной шкалы такой, что кривая, описывающая перемещение ЛА в пространстве с учётом всех возможных кульбитов, будет гладкой. Наложение на эту кривую аддитивной случайной помехи не меняет картины - мы можем восстановить траекторию и способны к прогнозированию. Я считаю это принципиальным моментом отличающего поведение ЛА от ВР типа цены. В ценовом ряде нет гладкой кривой отягощённой помехой - есть критерии оценок, которые об этом говорят с известной достоверностью.

Это критика с моей стороны, и Вы, пока на это не реагируете конструктивно.