Машинное обучение: прогнозируем цены акций на фондовом рынке

Машинное обучение: прогнозируем цены акций на фондовом рынке

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

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

Нейронные сети в экономике

Изменения в сфере финансов происходят нелинейно, и иногда может показаться, что цены на акции формируются совершенно случайным образом. Традиционные методы временных рядов, такие как модели ARIMA и GARCH эффективны, когда ряд является стационарным — его основные свойства со временем не изменяются. А для этого требуется, чтобы ряд был предварительно обработан с помощью log returns или приведён к стационарности по-другому. Однако главная проблема возникает при реализации этих моделей в реальной торговой системе, так как при добавлении новых данных стационарность не гарантируется.

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

Обычно data science проект состоит из следующих операций:

  1. Сбор данных — обеспечивает набор необходимых свойств.
  2. Предварительная обработка данных — часто пугающий, но необходимый шаг перед использованием данных.
  3. Разработка и реализация модели — выбор типа нейронной сети и её параметров.
  4. Модели бэктестинга (тестирование на исторических данных) — ключевой шаг любой торговой стратегии.
  5. Оптимизация — поиск подходящих параметров.

Сбор данных

К счастью, необходимые для этого проекта данные можно найти на Yahoo Finance. Данные можно собрать, используя их Python API pdr.get_yahoo_data(ticker, start_date, end_date) или напрямую с сайта.

Предварительная обработка данных

В нашем случае данные нужно разбить на обучающие наборы, состоящие из 10-ти прошлых цен и цены следующего дня. Для этого я определил класс Preprocessing , который будет работать с обучающими и тестовыми данными. Внутри класса я определил метод get_train(self, seq_len) , который преобразовывает обучающие входные и выходные данные в NumPy массивы, задавая определенную длину окна (в нашем случае 10). Весь код выглядит так:

Аналогично я определил метод, который преобразовывает тестовые данные X_test и Y_test .

Модели нейронных сетей

Для проекта я использовал две модели нейронных сетей: Многослойный перцептрон Румельхарта (Multilayer Perceptron — MLP) и модель Долгой краткосрочной памяти (Long Short Term Model — LSTM). Кратко расскажу о том, как работают эти модели. Подробнее о MLP читайте в другой статье, а о работе LSTM — в материале Джейкоба Аунгиерса.

MLP — самая простая форма нейронных сетей. Входные данные попадают в модель и с помощью определённых весов значения передаются через скрытые слои для получения выходных данных. Обучение алгоритма происходит от обратного распространения через скрытые слои, чтобы изменить значение весов каждого нейрона. Проблема этой модели — недостаток «памяти». Невозможно определить, какими были предыдущие данные и как они могут и должны повлиять на новые. В контексте нашей модели различия за 10 дней между данными двух датасетов могут иметь значение, но MLP не способны анализировать такие связи.

Для этого используется LSTM или Рекуррентные нейронные сети (Recurrent Neural Networks — RNN). RNN сохраняют определенную информацию о данных для последующего использования, это помогает нейронной сети анализировать сложную структуру связей между данными о ценах на акции. Но с RNN возникает проблема исчезающего градиента. Градиент уменьшается, потому что количество слоев повышается и уровень обучения (значение меньше единицы) умножается в несколько раз. Решают эту проблему LSTM, увеличивая эффективность.

Реализация модели

Для реализации модели я использовал Keras , потому что там слои добавляются постепенно, а не определяют всю сеть сразу. Так мы можем быстро изменять количество и тип слоев, оптимизируя нейронную сеть.

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

Начнем с более простой модели — MLP. В Keras строится последовательность и поверх неё добавляются плотные слои. Полный код выглядит так:

С помощью Keras в пяти строках кода мы создали MLP со скрытыми слоями, по сто нейронов в каждом. А теперь немного об оптимизаторе. Популярность набирает метод Adam (adaptive moment estimation) — более эффективный оптимизационный алгоритм по сравнению с стохастическим градиентным спуском. Есть два других расширения стохастического градиентного спуска — на их фоне сразу видны преимущества Adam:

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

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

Adam объединяет в себе преимущества этих расширений, поэтому я выбрал его.

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

Когда модель готова, нужно проверить её на тестовых данных, чтобы определить, насколько хорошо она сработала. Это делается так:

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

Вам будет интересно  Прямые инвестиции

Для модели LSTM используется похожая процедура, поэтому я покажу код и немного объясню его:

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

Модели бэктестинга

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

Однако, это упрощенная версия тестирования. Для полной системы бэктестинга нужно учитывать такие факторы, как «ошибка выжившего» (survivorship bias), тенденциозность (look ahead bias), изменение ситуации на рынке и транзакционные издержки. Так как это только образовательный проект, хватает и простого бэктестинга.

Прогноз моей модели LSTM на цены акций Apple в феврале

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

Оптимизация гиперпараметров

Для улучшения результатов модели после тестирования часто нужна оптимизация. Я не включил её в версию с открытым исходным кодом, чтобы читатели могли сами попробовать оптимизировать модель. Тем, кто не умеет оптимизировать, придется найти гиперпараметры, которые улучшат производительность модели. Есть несколько методов поиска гиперпараметров: от подбора параметров по сетке до стохастических методов.

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

Вывод

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

Торговля на фондовом рынке в 2020 году

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

Фондовый рынок (рис. 1) можно назвать основой современной финансовой системы и экономики, так как он выполняет несколько ключевых задач:

  • Консолидация капитала на мировом и национальном уровне. Фактор, обеспечивающий стабильность экономики;
  • Перераспределение финансовых потоков таким образом, что деньги следуют в наиболее доходные отрасли;
  • Постоянное развитие. Компании эмитируют ценные бумаги для целей развития бизнеса, и это фактор привлечения в трейдинг всё новых участников;
  • Компенсация денежной массы. Во время кризиса ЦБ эмитирует ценные бумаги, которые покрывают возникший дефицит денежной массы.
  • Систематизация информации. Поскольку фондовый рынок регулируемый, и на нём представлены работающие компании-эмитенты, то биржи представляют собой источник исчерпывающей информации о компаниях, их состоянии и перспективах, о развитии национальной и мировой экономики.

Фондовый рынок отзывы

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

  • Типам торгуемых активов (ценные бумаги, долевые, долговые);
  • По активам: первичные (новые ценные бумаги) и вторичные (деривативы, т. е. производные бумаги)
  • По сроку активов (краткосрочные, среднесрочные, долгосрочные, бессрочные ценные бумаги);
  • По структуре: биржевыми (трейдинг активами в листинге биржи) и внебиржевыми (бумаги не включены в листинг биржи);
  • По типу эмитента: ценные бумаги могут быть корпоративными, государственными и так далее.

Торговля на фондовом рынке

Основной способ заработка на фондовой бирже — это инвестирование, то есть покупка акций или другого торгуемого актива для того, чтобы получать прибыль по мере роста его цены. Инвестирование осуществляется на средний или долгий срок. При низком риске в среднем прибыль составляет 50% в месяц. Грамотное размещение инвестиций — сложный бизнес, да и не у всех есть время или желание этим заниматься. Но люди, у которых есть свободные деньги — небольшие или больше, знают, что на акциях можно заработать.

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

В отличие от инвестора, трейдеры пытаются получить прибыль от колебаний курсов активов, у них нет интереса к дивидендам. Сейчас можно торговать акциями самостоятельно, на интернет-платформах брокеров. Прибыль от трейдинга может быть больше и быстрее, чем от инвестирования, но и риски значительно выше. Ещё один способ заработка на фондовом рынке — портфельное инвестирование. В этом случае в «портфель» отбираются акции, среди которых есть акции с очень низким риском, — эмитированные крупными компаниями, государством. Такими инвестициями управляет сам инвестор, который сам формирует портфель и отвечает за результаты инвестирования. Сделки в портфельном инвестировании осуществляются 12-15 раз в год, но прибыльность выше, чем в трейдинге, а риск меньше.

Как выбрать фондового брокера

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

  • Какой минимальный депозит предлагает брокер: торговать сразу с больших сумм могут себе позволить немногие, к тому же нужно убедиться, что брокер знает своё дело, поэтому инвестировать предпочтительно начинать с малых сумм;
  • Размер брокерской комиссии: чем меньше, тем лучше;
  • Особое значение имеет вопрос вывода денег: в каком объеме доступен вывод, как часто, как быстро и насколько добросовестно (последнее можно уточнить по отзывам о брокере в сети);
  • Размер кредитного плеча: в каком размере и на каких условиях предоставляется кредит. Важно понимать, что использовать кредит можно только с обретением необходимого опыта и понимания рынка;
  • Обеспечивает ли брокер хеджирование рисков, — возможность подстраховать клиента от падения цен большое преимущество брокера.

Где и зачем покупать акции?

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

Вам будет интересно  Стереотипы об инвестициях: 3 главных заблуждения

При торговле на фондовом рынке очень важно получать информацию из надёжных и в то же время оперативных источников. Важны статистика рынка глобального или национального, важных отраслей, компаний-эмитентов акций и прочее. Каждый инвестор и трейдер создаёт свой «информационный портфель». Порядок торговли на фондовой бирже с самого начала выглядит примерно так:

  • Теоретическая подготовка;
  • Регистрация аккаунта на сервисе брокера;
  • Загрузка и изучение терминала или изучение веб-терминала;
  • Работа в демо-режиме до получения стабильных положительных результатов;
  • Пополнение счёта;
  • Выбор определённого ценных бумаг;
  • Покупка.

Впоследствии активный инвестор или трейдер должен постоянно изучать рынок, покупать новые акции, оптимизировать портфель акций, выводит прибыль (дивиденды), снова инвестировать и так далее. Наиболее крупные биржи для торговли акциями — на NYSE, NASDAQ, London Stock Exchange, Токийская биржа и для российских инвесторов важна Российская фондовая биржа.

NYSE (https://www.nyse.com/index) — ключевая биржа мира, которая во многом определяет структуру и тенденции этой отрасли. Здесь формируется крайне важный для фондового рынка индекс Dow Jones. На бирже торгуются крупнейшие корпорации мира, а всего предлагают акции более 4 тыс. эмитентов. Для торгов трейдеры скачивают приложения LEVEL-2, Arcabook или Nyse Openbook, торги идут в онлайн-формате.

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

London Stock Exchange (https://www.londonstockexchange.com/home/homepage.htm) – ведущая биржа мира по обороту ценных бумаг, опционов, фьючерсных контрактов, на которой представлены эмитенты со всего мира. Среди ключевых игроков General Electric, Vodafone, CNN, BASF, Unilever. В том числе здесь есть отдельная площадка для торговли акциями небольших компаний, не попавших в листинг на основной платформе.

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

Торговля фьючерсами и опционами

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

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

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

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

Торговля на фондовом рынке отзывы

Операции с опционами более просты, чем форекс или акции, так как фактически трейдеру нужно «угадать» лишь направление цены (рис. 2), то есть главным в трейдинге является волатильность. Брокеры (среди которых не все добросовестные) проводят массированные кампании продвижения торговли бинарными опционами, апеллируя именно к простоте этого типа трейдинга (бинарные опционы с минимальным депозитом). Однако, эта «простота» приносит прибыль только опытным трейдерам (обучение торговле опционами). Объективно, для начинающих трейдеров это сложный тип торговли с высокими рисками и отсутствием какой-либо защиты (бинарные опционы без риска). И даже среди брокеров отношение к опционам неоднозначное. Что касается вопроса о том, где торговать бинарными опционами, то можно ориентироваться на рейтинг брокеров бинарных опционов, который есть на нашем сайте.

Машинное обучение: прогнозируем цены акций на фондовом рынке

Как с помощью нейронных сетей предсказывать цены акций на фондовой бирже ― рассказываем в а даптированной статье инженера Кембриджского университета Вивека Паланиаппана.

Машинное обучение: прогнозируем цены акций на фондовом рынке

Полина Кабирова

Коммерческий автор и переводчик

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

От редакции. Статья не для новичков. Чтобы применить модель, нужно знать основы Python, теорию вероятности, статистику и моделирование данных. Необходимые знания можно получить на онлайн-курсе «Data Scientist» в Нетологии.

Нейронные сети в экономике

Изменения в сфере финансов происходят нелинейно, и иногда может показаться, что цены на акции формируются совершенно случайным образом. Традиционные методы временных рядов, такие как модели ARIMA и GARCH, эффективны, когда ряд является стационарным — его основные свойства со временем не изменяются. А для этого требуется, чтобы ряд был предварительно обработан с помощью log returns или приведён к стационарности по-другому. Однако главная проблема возникает при реализации этих моделей в реальной торговой системе, так как при добавлении новых данных стационарность не гарантируется.

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

Обычно проект Data Science состоит из следующих операций:

Сбор данных — обеспечивает набор необходимых свойств.

Вам будет интересно  Собственные и внешние источники инвестиций банка

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

Разработка и реализация модели — выбор типа нейронной сети и её параметров.

Модели бэктестинга (тестирование на исторических данных) — ключевой шаг любой торговой стратегии.

Оптимизация — поиск подходящих параметров.

Входные данные для нашей нейронной сети — данные о ценах на акции за последние 10 дней. С их помощью мы спрогнозируем цены на следующий день.

Сбор данных

К счастью, необходимые для этого проекта данные можно найти на Yahoo Finance. Данные можно собрать, используя их Python API pdr.get_yahoo_data(ticker, start_date, end_date или напрямую с сайта.

Предварительная обработка данных

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

Внутри класса я определил метод get_train(self, seq_len), который преобразовывает обучающие входные и выходные данные в NumPy массивы, задавая определённую длину окна (в нашем случае 10). Весь код выглядит так:

Аналогично я определил метод, который преобразовывает тестовые данные X_test и Y_test.

Модели нейронных сетей

Для проекта я использовал две модели нейронных сетей: Многослойный перцептрон Румельхарта (Multilayer Perceptron — MLP) и модель Долгой краткосрочной памяти (Long Short Term Model — LSTM). Кратко расскажу о том, как работают эти модели. Подробнее о MLP читайте в другой статье, а о работе LSTM — в материале Джейкоба Аунгиерса.

MLP — самая простая форма нейронных сетей. Входные данные попадают в модель и с помощью определённых весов значения передаются через скрытые слои для получения выходных данных. Обучение алгоритма происходит от обратного распространения через скрытые слои, чтобы изменить значение весов каждого нейрона. Проблема этой модели — недостаток «памяти». Невозможно определить, какими были предыдущие данные и как они могут и должны повлиять на новые. В контексте нашей модели различия за 10 дней между данными двух датасетов могут иметь значение, но MLP не способны анализировать такие связи.

Для этого используется LSTM или Рекуррентные нейронные сети (Recurrent Neural Networks — RNN). RNN сохраняют определённую информацию о данных для последующего использования, это помогает нейронной сети анализировать сложную структуру связей между данными о ценах на акции. Но с RNN возникает проблема исчезающего градиента. Градиент уменьшается, потому что количество слоев повышается и уровень обучения (значение меньше единицы) умножается в несколько раз. Решают эту проблему LSTM, увеличивая эффективность.

Реализация модели

Для реализации модели я использовал Keras, потому что там слои добавляются постепенно, а не определяют всю сеть сразу. Так мы можем быстро изменять количество и тип слоёв, оптимизируя нейронную сеть.

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

Начнём с более простой модели — MLP. В Keras строится последовательность и поверх неё добавляются плотные слои. Полный код выглядит так:

С помощью Keras в пяти строках кода мы создали MLP со скрытыми слоями, по сто нейронов в каждом.

А теперь немного об оптимизаторе. Популярность набирает метод Adam (adaptive moment estimation) — более эффективный оптимизационный алгоритм по сравнению с стохастическим градиентным спуском. Есть два других расширения стохастического градиентного спуска — на их фоне сразу видны преимущества Adam:

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

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

Adam объединяет в себе преимущества этих расширений, поэтому я выбрал его.

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

Когда модель готова, нужно проверить её на тестовых данных, чтобы определить, насколько хорошо она сработала. Это делается так:

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

Для модели LSTM используется похожая процедура, поэтому я покажу код и немного объясню его:

Обратите внимание, что для Keras нужны данные определённого размера в зависимости от вашей модели. Очень важно изменить форму массива с помощью NumPy.

курс

Машинное обучение

Узнать больше

  • Получите прикладной опыт создания работающих нейронных сетей вместо «обзора по верхам»
  • Научитесь сравнивать алгоритмы на готовых датасетах, определять методы улучшения качества
  • Заложите фундамент для развития на уровне middle ?

Модели бэктестинга

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

Однако это упрощённая версия тестирования. Для полной системы бэктестинга нужно учитывать такие факторы, как «ошибка выжившего» (survivorship bias), тенденциозность (look ahead bias), изменение ситуации на рынке и транзакционные издержки. Так как это только образовательный проект, хватает и простого бэктестинга.

Машинное обучение: прогнозируем цены акций на фондовом рынке

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

Оптимизация гиперпараметров

Для улучшения результатов модели после тестирования часто нужна оптимизация. Я не включил её в версию с открытым исходным кодом, чтобы читатели могли сами попробовать оптимизировать модель. Тем, кто не умеет оптимизировать, придётся найти гиперпараметры, которые улучшат производительность модели. Есть несколько методов поиска гиперпараметров: от подбора параметров по сетке до стохастических методов.

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

Подведём итоги

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

Мнение автора и редакции может не совпадать. Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.

Источник https://habr.com/ru/company/netologyru/blog/428227/

Источник https://eto-razvod.ru/blog/other/trade-stockmarket/

Источник https://netology.ru/blog/mashinnoe-obuchenie-prognoz-cen

Предыдущая запись Потребительские кредиты в банках Самары
Следующая запись США направили больше прямых инвестиций в Казахстан, чем Россия и Китай