Что нужно ждать о создании стратегий для торговли на бирже: насколько эффективно машинное обучение |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-05-30 12:21 ИИ проекты, алгоритмы машинного обучения, новости нейронных сетей В нашем блоге на Хабре мы публиковали адаптированные переводы материалов из блога The Financial Hacker, посвященные вопросам создания стратегий для торговли на бирже. Ранее мы обсудили поиск рыночных неэффективностей, создание моделей торговых стратегий, и принципы их программирования. Сегодня речь пойдет об использовании подходов машинного обучения для повышения эффективности торговых систем. Первым компьютером, выигравшим мировое первенство по шахматам стал Deep Blue. Это было в 1996 году, и прошло еще двадцать лет, прежде чем другая программа, Alpha Go, сумела победить лучшего игрока в Го. Deep Blue был модель-ориентированной системой с вшитыми правилами игры в шахматы. AplhaGo — это дата-майнинговая система, глубокая нейронная сеть, натренированная с помощью тысяч партий в Го. То есть для того, чтобы сделать шаг от побед над людьми-чемпионами в шахматах, к доминированию над топовыми игроками в Го понадобилась не улучшенная железка, а прорыв в области программного обеспечения.
В текущей статье мы рассмотрим применение подхода дата-майнинга к созданию торговых стратегий. Этот метод не учитывает рыночные механизмы, он просто сканирует ценовые кривые и другие источники данных для поиска предиктивных паттернов. Машинное обучение или «искусственный интеллект» нужны для этого не всегда. Напротив, очень часто, наиболее популярные и прибыльные методы дата-майнинга работают без всяких рюшечек в виде нейронных сетей или поддержки векторных методов. Принципы машинного обучения Обучаемому алгоритму «скармливают» образцы данных, обычно каким-то образом выделенных из исторических биржевых цен. Каждый семпл состоит из n переменных x1… xn, которые обычно называют предикторами, функциями, сигналами или, проще, входными данными. Эти предикторы могут быть ценами последних n баров на графике цен или набором значений классических индикаторов, да любыми другими функциями от ценовой кривой (бывают даже случаи, когда в качестве предикторов для нейронной сети используют отдельные пиксели графика цен!). В каждом семпле также обычно содержится некая целевая переменная y, например, результат следующей сделки после анализа семпла или следующее движение цены. Обучение: x1… xn, y => модель Предикторы, функции или как вы хотите их назвать, должны содержать информацию, достаточную для генерации предсказаний о значении целевого y с определенной точностью. Также они должны соответствовать двум формальным критериям. Во-первых, все значения предикторов должны находиться в одном диапазоне, например -1… +1 (для большинства алгоритмов на R) или -100… +100 (для алгоритмов на скриптовых языках Zorro или TSSB). Так что перед отправкой данных в систему понадобится их нормализация. Во-вторых, семплы должны быть отбалансированы, то есть равномерно распределены по значениями целевой переменной. То есть у вас должно быть одинаковое число семплов, приводящих к положительному исходу, и проигрышных наборов. Если этим двум требованиям не следовать, то получить хорошие результаты не удастся. Алгоритмы регрессии генерируют прогнозы о численных значениях, вроде магнитуды или знака следующего ценового движения. Алгоритмы классификации предсказывают количественные классы семплов, например, предшествуют ли они получению прибыли или потере средств. Некоторые алгоритмы, вроде нейронных сетей, деревьев принятия решений или метода опорных векторов могут быть запущены в обоих режимах. Существуют также алгоритмы, которые могут научиться выделять из семплов класса без необходимости наличия целевого y. Это называется неконтролируемым обучением, в отличие от контролируемого с использованием цели. Где-то между этими двумя методами располагается «подкрепляемое обучение» (reinforcement learning), при котором система тренируется с помощью запуска симуляций с заданными функциями и использует результат в качестве цели. Последователь AlphaGo, система под названием AlphaZero использовала подкрепляемое обучение, играя миллион партий Го сама с собой. В финансах же крайне редко встречаются подобные системы или продукты, использующие неконтролируемое обучение. 99% систем используют контролируемое обучение. Какие сигналы бы мы не использовали для предикторов в финансах, в большинстве случаев они будут содержать много шума и мало информации, да вдобавок будут нестационарными. Так что предсказания в финансах — одна из сложнейших задач машинного обучения. Более сложные алгоритмы здесь достигают лучших результатов. Выбор предикторов критически важен для успеха. Не обязательно их должно быть много, поскольку это приводит к переобучению и сбоям в работе. Поэтому стратегии дата-майнинга часто применяют заранее отобранный алгоритм, который выделяет небольшое количество предикторов из более широкого пула. Такой предварительный отбор может быть основан на корреляции между предикторами, их значимости, информационной насыщенности или просто успешности/неуспешности использования тестового набора. Практические эксперименты с отбором целей можно найти, например, в блоге Robot Wealth. Ниже — список самых популярных методов дата-майнинга, используемых в сфере финансов. 1. Суп из индикаторов Большинство торговых систем не основаны на финансовых моделях. Часто трейдерам нужны лишь торговые сигналы, генерируемые определенными техническими индикаторами, которые фильтруются другими индикаторами в комбинации с дополнительными техническими индикаторами. Когда такого трейдера спросить о том, как такая мешанина из индикаторов может приводить к какой-то прибыли, он обычно отвечает что-то вроде: «Поверьте мне, я так руками торгую, и все работает». 2. Свечные паттерны Не путать с паттернами японских свечей, которые существуют сотни лет. Современный эквивалент этому подходу — это торговля на основе движений цен. Вы точно также анализируете показатели open, high, low и close для каждой свечи графика. Но теперь вы используете дата-майнинг для анализа свечей ценовой кривой для выделения паттернов, которые могут быть использованы для генерирования прогнозов о направлении движения цены в будущем.
Эта функция на C возвращает 1, когда сигнал подходит одному из паттернов, в противном случае возвращается 0. Длинный код как бы намекает на то, что это не самый быстрый способ поиска паттернов. Лучше использовать подход, при котором функция детектирования не нуждается в экспорте, а может сортировать сигналы по их важности и проводить сортировку. Пример такой системы можно найти по ссылке. Может ли работать «торговля по цене»? Как и в предыдущем случае, этот метод не основан на какой-либо рациональной финансовой модели. При этом, все понимают, что действительно определенные события на рынке, могут влиять на его участников, в результате чего возникают краткосрочные предиктивные паттерны. Но число таких паттернов не может быть большим, если вы изучаете лишь последовательность нескольких последовательных свечей на графике. Затем нужно будет сравнивать результат с данными свечей, которые не находятся рядом, а напротив, случайно выбраны на более длинном временном отрезке. В таком случае вы получите почти неограниченное количество паттернов — и успешно оторветесь от понятий реальности и рациональности. Сложно представить, как можно предсказать будущую цену, на основе каких-то ее значений на прошлой неделе. Несмотря на это, многие трейдеры работают именно в этом направлением. 3. Линейная регрессия Простой базис множества сложных алгоритмов машинного обучения: предсказать целевую переменную y с помощью линейной комбинации предикторов x1… xn. 4. Перцептрон Часто его называют нейросетью с всего одним нейроном. По факту же перцептрон — это функция регрессии, как описанные выше, но с двоичным результатом, в результате чего его называют логистической регрессией. Хотя вообще-то это не регрессия, а алгоритм классификации. К примеру, функция advise(PERCEPTRON, …) фреймворка Zorro генерирует код на C, которые возвращает 100 или -100 в зависимости от того, является ли предсказанный результат пороговым или нет:
Как нетрудно заметить, массив sig эквивалентен функциям xn в формуле регрессии, а цифровыми факторами являются коэффициенты an. 5. Нейронные сети Линейная или логистическия регрессия могут решать только линейные проблемы. При этом задачи трейдинга часто в эту категорию не укладываются. Знаменитый пример — предсказание вывода простой функции XOR. Сюда же попадает и предсказание прибыли от сделок. Искусственная нейросеть (artificial neural network, ANN) может решать нелинейные проблемы. Это набор перцептронов, которые соединены в массив различных уровней. Каждый перцептрон — это нейрон сети. Его выходные данные становятся входными для других нейронов следующего уровня: Как и перцептрон, нейросеть обучается, определяя коэффициенты, которые минимизируют ошибку между предсказанием и целью в семпле. Для этого требуется процесс аппроксимации, обычно с обратным распространением ошибки от выходных данных к входным с попутной оптимизацией весов. Этот процесс накладывает два ограничения. Во-первых, вывод нейронов должен представлять собой постоянно дифференцируемую функцию вместо простого порога для перцептрона. Во-вторых, сеть должна быть не очень глубокой — наличие большого количества скрытых уровней нейронов между входными и выходными данными только вредит. Это второе ограничение лимитирует сложность проблем, которую может решить стандартная нейронная сеть. При использовании нейронных сетей для предсказания сделок, у вас будет множество параметров, с которыми можно манипулировать, что при неаккуратной работе может вылиться в появление предубеждений выбора (selection bias):
Функция активации эмулирует порог перцептрона. Для обратного распространения понадобится постоянно дифференцируемая функция, которая генерирует мягкий шаг для определенного значения x. Обычно для этого используются функции sigmoid, tanh или softmax function. Иногда используется линейная функция, которая возвращает взвешенную сумму всех входных данных. В этом случае сеть может быть использована для регрессии, предсказания численных значений вместо бинарного вывода. Нейросети входят в стандартную поставку пакета R (например, nnet — сеть с одним скрытым уровнем), а также во многие другие пакеты (вроде RSNNS и FCNN4R). 6. Глубокое обучение Методы глубокого обучения используют нейросети с большим количеством скрытых уровней и тысячами нейронов, которые невозможно эффективно обучить с помощью простого обратного распространения. В последние годы для обучения таких больших сетей приобрели популярность несколько методов. Они обычно подразумевают предварительное обучение скрытых уровней нейронов для повышения эффективности основного обучения.
7. Опорные векторы Как и в случае нейросетей, метод опорных векторов — еще одно расширение линейной регрессии. Если взглянуть на формулу регрессии еще раз:
Часто используется библиотека libsvm, которая доступна в пакете e1071 для R. 8. Алгоритм k-ближайших соседей В сравнении с тяжелыми ANN и SVM, это простой и приятный алгоритм с уникальным свойством: его не нужно обучать. Семплы и будут моделью. Этот алгоритм можно использовать для торговой системы, которая постоянно обучается с помощью добавления новых семплов. Этот алгоритм вычисляет дистанции в пространстве функций от текущего значения к k-ближайшим семплам. Дистанция в n-размерном пространстве между двумя наборами (x1… xn) и (y1… yn) вычисляется по формуле: Алгоритм просто предсказывает цель от среднего k целевых переменных ближайших семплов, взвешенных по их обратным расстояниям. Его можно использовать как для классификации, так и для регрессии. Для предсказания ближайших соседей можно вызвать функцию knn в R или самостоятельно написать код на C для этой цели.9. K-средние Это алгоритм аппроксимации для неконтролируемой классификации. Он чем-то похож на предыдущий алгоритм. Для классификации семплов алгоритм сначала размещает в пространстве функций k случайных точек. Затем он присваивает какой-то из этих точек все семплы с наименьшим расстоянием до нее. Затем точка сдвигает к среднему от этих ближайших значений. Это генерирует новые привязки семплов, поскольку какие-то из них теперь окажутся ближе к другим точкам. Процесс повторяется до тех пор, пока перепривязка в результате сдвига точек не прекратится, то есть до тех пор, пока каждая точка не окажется средней для ближайших семплов. Теперь у нас есть k классов семплов, каждый расположенный по соседству от какой-то k-точки. 10. Наивный Байес Этот алгоритм использует Байесовскую теорему классификации семплов нечисловых функций (событий), вроде упомянутых выше свечных паттернов. Предположим, что событие X (например, параметр Open предыдущего бара ниже параметра Open текущего бара) появляется в 80% выигрышных семплов. Тогда какова будет вероятность выигрышности семпла при наличии в нем события X? Это не 0,8 как можно подумать. Эта вероятность вычисляется по формуле: 11. Деревья решений и регрессий Такие деревья предсказывают результат численных значений, основанных на цепочке принятия решений в формате да/нет в структуре ветвей дерева. Каждое решение представляет собой наличие или отсутствие событий (в случае не-числовых значений) или сравнения значений с фиксированным порогом. Типичная древесная функция, сгенерированная, например, фреймворком Zorro, выглядит так:
Как такое дерево получается из набора семплов? Для этого может быть несколько методов, включая информационную энтропию Шеннона. Деревья принятия решений могут довольно широко применяться. Например, они подходят для генерирования предсказаний, более точных, чем удается достичь с помощью нейросетей или опорных векторов. Однако это не универсальное решение. Наиболее известный алгоритм такого типа это C5.0, доступный в пакете C50 для R. Для еще большего повышения качества предсказаний, можно использовать наборы деревьев — они называются случайным лесом. Этот алгоритм доступен в пакетах R под названием randomForest, ranger и Rborist. Заключение Существует множество методов дата-майнинга и машинного обучения. Критичный вопрос здесь заключается в следующем: что лучше, стратегии, основанные на моделях или на машинном обучении? Нет сомнений в том, что у машинного обучения есть ряд плюсов. Например, вам не нужно заботиться микроструктуре рынка, экономике, учитывать философию участников рынка или другие подобные вещи. Можно сконцентрироваться на чистой математике. Машинное обучение куда более элегантный и привлекательный способ создания торговых систем. На его стороне все плюсы, кроме одного — помимо рассказов на форумов трейдеров, успехи этого метода в реальной торговле отследить проблематично. Другие материалы по теме финансов и фондового рынка от ITI Capital:
Источник: habr.com Комментарии: |
|