Return to list

Частный случай нейросетевого анализа

Views: 3621
форекс
автоматизация процессов
модель вычислений
нейронная сеть


Сегодня Форексом интересуется любой программист. Форекс требует от программиста тех же предельных усилий логики и последовательности. При этом сулит почти моментальные золотые горы. Помимо этого, для любого человека, не только программиста, Форекс – это вызов. По теории нейросетевого анализа, в том числе анализа финансовых рынков, написано множество книг. Однако многие из них ушли в такие «дебри» анализа, что забыли, зачем нужен финансовый рынок. А нужен он не для теорий, а для заработка, а еще лучше – выбивания денег из воздуха. Если существует кривая цены, то должна существовать и функция, позволяющая описать эту кривую? В данной статье будет сделана попытка вывести такую функцию или, по крайней мере, предложить модель вычислений, максимально приближенную к заработку на Форекс и одновременно максимально удаленную от заумного теоретизирования «вокруг да около».

Почему нейронная сеть, чем привлекателен «черный ящик»? Неужели тем, что мы наваяли и запаяли, больше ничего сделать не можем, а можем только сидеть и до остервенения ждать? Мол, есть в этом что-то волшебное, пропускать некие сигналы через мозгоподобную систему и лелеять математическую точность программного кода, созданного собственноручно... Повторюсь, мы не собираемся ходить вокруг да около. У нас только одна цель – зарабатывать больше всех остальных! А нейронная сеть может быть плохим «черным ящиком» только, если его запаять криво. После прочтения с полсотни трудов, посвященных нейросетевому анализу, были сделаны компрометирующие выводы. Во-первых, не нужно стремиться воссоздать нейронную сеть в том виде, в котором она существует на биологическом уровне. Во-вторых, если функции приведения (самая любимая у теоретиков сигмоидальная) преобразуют все значения до заданного диапазона, позволяющего отличать покупку от продажи, то проще использовать одну сеть на каждый тип сделки. В этом случае можно обойтись без функций приведения, имеющих, в сущности, чисто эстетический характер, ввести изначальную классификацию и упростить задачу, стоящую перед нейронной сетью, на порядок: не нужно отличать покупку от продажи, нужно лишь запретить или разрешить покупку (одна сеть) и продажу (вторая сеть). И, наконец, в-третьих, теория вероятности никак не позволяет улучшить качество прогноза нейронной сети. Мы не воссоздаем человеческий мозг и не идем по пути биологической эволюции. Мы решаем конкретную задачу, переменные которой известны до боли с самого начала. Значит, создаваемая нейронная сеть должна быть а) прозрачной и б) исключать любой элемент случайности. Далее обо всем по порядку.

Биология Форексу не товарищ!
Известно, что человек произошел от обезьяны. Хе-хе, какая банальная истина… При этом что помогло человеку в процессе эволюции, так это его мозг, способность учиться на собственных ошибках и, самое главное, передавать уже приобретенные знания последующим поколениям не на уровне инстинктов, а на уровне знаний. Так у нового поколения возникала потребность запоминать все большие объемы знаний.

Когда рождается младенец, в его голове тот же триллион нейронов, что и в голове взрослого индивида. Разница в том, что у младенца не установлены связи между нейронами. Ему еще предстоит «учиться жизни». Но именно благодаря уже наличествующему триллиону нейронов младенец со временем научиться говорить и держать в руке ложку. Когда рождается детеныш примата, у него в голове нет никакого триллиона. Именно поэтому детеныш примата никогда не научиться разговаривать или делать еще что-то, приближающее его к сложной умственной деятельности. В этом плане задача обучения детеныша не может сводиться к каким-либо бесчисленным итерациям известных истин. Сама постановка такой задачи является глупостью.

В 2004 году русский теоретик Барский зафиксировал в своей книге по нейросетевому анализу мысль, суть которой сводится к следующему: не все обезьяны стали человеками. Это означает, что в процессе биологической эволюции было забубенное число циклов обучения, которые завели нейронную сеть приматов в тупик. А ведь на Крайнем севере России по-прежнему кочуют ненцы (их тысяч 40 осталось) и хоронят в снегу детей, умерших от простуды, которых потом волки выкапывают и кушают.

Современные модели воспроизводят структуру нейронной сети в том виде, как она определена «венцом эволюции», человеком. Чтобы не тратить время, несколько слов о том, о чем дальше пойдет речь. Есть некая схема нейронов, веса которых изменяются под влиянием процессов. Входящий сигнал быстрее движется к тому нейрону, который имеет наибольший вес, так как именно к этому нейрону уже проложен более широкий канал. Так у людей, имевших в детстве сильные эмоциональные переживания (например, насилие в том или ином виде), с раннего возраста «прокладываются» широкие каналы между зрительными нейронами, в результате развивается фотографическая зрительная память. Теперь обратимся к Форексу. Когда мы ставим перед собой задачу создать некую схему нейронов, которая будет распознавать выгодные ситуации на рынке, мы начинаем с мозга примата. Мы не знаем, сколько нужно нейронов, сколько нужно слоев, какие должны существовать связи между этими нейронами/слоями и, самое главное, мы не знаем ничего о весах нейронов. Так почему же в этой ситуации архи-неопределенности мы решаем сразу переходить к человеческой модели нейросети?!

Все начиналось с Розенблата, все начиналось с ирисов Фишера. Чтобы сильно не грубить, с них все начиналось тогда, когда еще не было 4-ядерных компов и возможности автоматизации открытия и сопровождения сделок на Форекс с помощью 1-1,5 тыс. строк программного кода на упрощенном языке. Давайте представим на минуту, что если грамотный и образованный взрослый индивид не способен моментально запоминать быстро меняющиеся графики и выполнять вычисления с пятизначными дробями, то его нейросетевая модель не венец эволюции, а тупик. Таким образом, перед нами должна стоять задача не прокладывать каналы и утяжелять нейроны, воссоздавая биологическую модель нейронной сети, а описывать конкретные ситуации на рынке с помощью точных данных и указывать какие ситуации были выгодными, а какие нет.

Покончить с сигмоидальным беспределом
Многие построители нейронных сетей используют разные функции приведения (самая популярная – сигмоидальная функция), которые обрабатывают сигнал на выходе сети, чтобы получить более или менее сравнимый результат. Сигмоид - нелинейная функция, которая позволяет усилить слабый сигнал (кривизна линии для слабого сигнала больше) и не уменьшать сильный сигнал (кривая сильного сигнала становится более пологой). Вау, прикольно! Вопрос, на кой это нужно?!

Во время построения сети мы обязаны использовать только приращения, то есть разницу между двумя какими-либо значениями. Нельзя использовать значения цен или показания индикаторов «как они есть». Сегодня цена колеблется в одном диапазоне, через месяц уже в другом диапазоне – как же сравнивать цены из разных диапазонов, если не использовать приращения? Значит, нейроны сети в любом случае должны изменяться только на величину дельты. А наша сеть нейронов будет всегда (!) давать на выходе сумму дельт, представляющую собой «путь» сигнала.

Не нужно принимать ноль за покупку, а единицу за продажу и, тем самым, перекладывать на сигмоид самую ответственную роль – решать, какое движение рынка является нисходящим, а какое – восходящим. Вместо этого лучше создать две независимые друг от друга нейронные микро-сети, каждая из которых безо всяких сигмоидов будет выдавать на выходе сумму нейронов (иначе – дельт): положительная сумма – разрешить сделку этого типа, отрицательная – запретить. Как ни крути самолет, вот и мы на месте стоять не будем, а будем использовать советник, различающий не только покупку и продажу, но и еще 6 разных подтипов сделок: пробой уровня поддержки или сопротивления, разворот от уровня, доливку, пробой узкого коридора, сделку «против шерсти» и компенсирующую сделку. По каждому из 12 подтипов такая система создает отдельную таблицу нейронной сети, которые хранятся в виде CSV-файлов на жестком диске пользователя. Система загружает сведения из файлов в массивы и оперирует элементами массивов исходя из их индексов. После каждой значимой операции изменившиеся сведения из массива дописываются в соответствующую электронную таблицу. Общее число нейронов сети 1728… Неволей вспоминаются «уважаемые» теоретики, писавшие (не напутать с ударением) еще несколько лет назад и утверждавшие, что при большом числе нейронов обучение или работа такой сети будет занимать неприемлемо много времени. Стоит напомнить, что одно исполнение советника в МетаТрейдере длится не более 1 миллисекунды (0,001 секунды). При этом советник исполняется каждый раз, когда приходят новые цены, то есть в среднем несколько раз в секунду.

Impossible is when it’s the only way possible
Теория вероятности гласит: бутерброд обязательно когда-нибудь упадет на бок, просто вероятность этого относительно мала. Хочется сразу отметить одну зацепу. Пока этот бутерброд будет падать, он на фиг весь перепачкается (прикиньте, сколько пыли насобирает сторона с маслом) и ко времени, когда он, наконец, встанет на бок, будет уже абсолютно не съедобным. Другими словами, теоретизирование на тему, что может быть и как это вычислить красивыми формулами, неприменимо к получению дохода на Форекс. На Форекс есть одно устоявшееся правило: если «это» не зарабатывает – выбросить и забыть, при чем еще в течение этого же дня попробовать что-нибудь новое.

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

Теперь о том, что следует предложить взамен
Вложенный рисунок – одна из 12 наполненных таблиц рассматриваемой нейронной сети. Электронная таблица обучалась на продажах и предназначена для фильтрации продаж. Структура обладает простой логикой. Каждая строка – это один индикатор. Каждая ячейка в строке – это нейрон, за которым закреплен определенный диапазон индикатора. Например, для стохастика ячейка с координатами 0:3 соответствует диапазону значений 0-10, 1:3 – 11-20, 2:3 – 21-30 и т.д.

Обучение и торговля по обученной нейронной сети происходит одновременно. Рассмотрим оба этапа по отдельности. На этапе обучения все нейроны сети имеют вес 10, то есть мы предполагаем, что все сделки советника (любые проходы сигнала) прибыльные. Если сделать исходные веса нейронов нулевыми, то уже после нескольких сделок один минусовой нейрон сможет перекрыть все нулевые нейроны. А это было бы неверно. Все же лучше, чем случайные веса, как это обычно делают для обучения нейросети чисто биологической модели.

На этапе обучения выполняются две последовательные операции:
1) Когда открывается сделка, советник вписывает в базу данных (не путать с электронными таблицами нейронной сети) показания индикаторов и значение прибыли, равное нулю.
2) Когда сделка закроется, советник вновь обратиться к базе данных, «вспомнит» показания индикаторов и прибавит появившееся значение прибыли к тем нейронам (или ячейкам) в нужной электронной таблице, диапазоны которых соответствуют показаниям индикаторов.

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

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

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

Чем же такая схема отличается от чисто биологической модели? Есть прямо-таки революционное отличие. Входящий сигнал не движется к более тяжелому нейрону на каждом слое, так как между нейронами нет никаких связей. Есть лишь путь, который может пройти сигнал, собрав в итоге положительную или отрицательную сумму. И именно сумма, которая, по сути, является результатом многих сделок по заданному сочетанию показаний индикаторов, дает или не дает «добро».

Что с порогом ошибки? Отметим противоречие построителей биологической модели нейронных сетей. Они скопировали все, кроме порога ошибки. У человеческого рода есть даже поговорка «Повторение – мать учения». А вот построители биологической нейросети считают, что на определенном этапе обучение следует прекратить, иначе сеть «переучиться» и будет давать скорее случайный результат, чем спрогнозированный. Можно ли это противоречие объяснить тем, что нейронной сети, представленной в виде небольшой базы данных, ничего повторять не нужно, так как, в отличие от человека, ей не свойственно забывать? При ответе на этот вопрос нам следует помнить, что мы дали обещание держаться поближе к Форексу. Что же, глупость сморозили эти антибиологи, поскольку именно Форекс, как никакая другая живая материя, характеризуется «сезонным» характером (выберем слово «сезонность», хотя понятно, что с временами года это никак не связано). Параметры торговли, которые давали стабильную прибыль последние месяц или два, не работают в текущем месяце. Опыт показывает, что не существует в природе советника способного показывать стабильный результат длительное время без изменения его параметров. Таким образом, нейронная сеть, работающая на Форекс, подлежит постоянной корректировке. И корректировка эта не может привести к «переобучению», а веса нейронов описанной схемы не будут стремиться к какому-то бесконечному числу, поскольку советник вписывает в электронные таблицы нейронной сети как плюсовые значения прибыли, так и минусовые. Но самое, пожалуй, важное заключается в том, что благодаря изначальной классификации – у каждого из 12 подтипов сделок своя электронная таблица – у нас не получится «обученная каша». Кстати, именно так можно охарактеризировать головы большинства трейдеров, игнорирующих автоматические методы торговли на Форекс.

Аминь
Госпожа Яхъяева в 2006 году заявила, что нейросетевой анализ находится на перепутье, и ответы на вопросы, стоящие перед современными нейронными сетями, «неудовлетворительные». Неужели это от того, что про Форекс она думала мало, а все больше стремилась написать цифр, букв латинского и древнегреческого алфавита, перевернутых U-образных знаков... ну и где-нибудь как-нибудь перечеркнутое тождество? По мнению автора этой куда более емкой статьи, нейронная сеть в виде правильно «запаянного» черного ящика способна адекватно решать задачи распознавания выгодных рыночных ситуаций. Предложенная модель построения нейронной сети отвечает элементарным требованиям логики. При этом нам не нужно гадать, что происходит с очередным сигналом внутри черного ящика. Мы можем сами сподобиться такому сигналу, пройти через электронную таблицу, а на выходе еще помнить, что с нами происходило. Нас не волнуют проблемы, которые волновали «уважаемых» построителей биологической модели:

1) мы не сомневаемся в скорости работы 4-ядерного компа, поэтому рассматриваемую нейронную сеть никогда не заест;
2) сеть не может стать «заученной», поскольку повторение пройденного лишь отвечает сезонному, изменчивому характеру рыночных колебаний;
3) и впоследствии можно лишь добавлять другие индикаторы, хотя делать это нужно осознанно, а не случайно «тыкать» все подряд.

Наконец, осмелюсь-таки утверждать, что практические возможности современного программирования куда как превосходят теоретические потуги в области статистики и нейросетевого анализа старокалошечных профессоров перестроечного сплава. Программирование, и это медицинский факт, есть Вселенная, в которой все ограничивается только воображением программиста. У настоящего программиста не бывает «перепутий». Бывают только задачи и четкие, последовательные пути их решения.
Return to list

 
 
 
 
 
© eugene-last's art studio, 2012-2018. All rights reserved. If you are so unlucky to do copy-paste you must use links to source pages.