Это мой первый блог. Надеюсь, вам всем понравится.

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

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

Деловая проблема-

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

ML постановка бизнес-задачи-

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

Источник данных-

Используемый набор данных позаимствован у Kaggle. Набор данных доступен на сайте, и он был загружен 3 года назад.

https://www.kaggle.com/datasets/mysarahmadbhat/stock-prices

Существующие подходы: -

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

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

Мой подход: -

Я попытался отобразить эту проблему как проблему регрессии. Таким образом, сложности уменьшаются. Набор данных изменен таким образом, что создается 12 столбцов. Первые 10 столбцов — это цена акций за предыдущие 10 дней, а остальные 2 столбца — объем акций за предыдущие 2 дня. Эта вещь подробно объясняется в следующих разделах.

Исследовательский анализ данных

Набор данных с именем (исторические данные фондового рынка для текущих компаний S&P 500 за 2014–2017 годы) на Kaggle. Набор данных содержит данные S&P 500 за период с 2014 по 2017 год. Standard and Poor’s 500, или просто S&P 500, — это индекс фондового рынка, отслеживающий результаты деятельности 500 крупных компаний, зарегистрированных на фондовых биржах США. Это один из наиболее популярных фондовых индексов. По состоянию на 31 декабря 2020 года более 5,4 триллиона долларов США было инвестировано в активы, привязанные к показателям индекса. Существует 505 уникальных значений, т.е. всего 505 акций, котирующихся на фондовом рынке США.

· Данные об акциях

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

· Каждая строка файла данных имеет следующие атрибуты/функции, в которых перечислены сведения о конкретном продукте.

1. символ — Название акции

2. дата — дата

3. open — цена акции на момент начала торгов.

4. высокая — самая высокая цена, которой коснулась данная конкретная акция в этот день.

5. low — самая низкая цена, которую коснулась данная конкретная акция в этот день.

6. close — цена акции, по которой закрывается фондовый рынок.

7. объем — количество акций, торгуемых в этот день.

Создается новый набор данных, в котором для каждого биржевого символа мы рассчитали разницу между самым первым значением в наборе данных, упорядоченным по дате, и последним значением в наборе данных, упорядоченном по дате: -

  1. Процентное изменение запасов за 4 года

Акции, которые принесли максимальную прибыль после инвестирования в течение 4 лет, — это NVDA с процентным приростом 1120,050441. Акции, давшие минимальную или отрицательную доходность после инвестирования в течение 4 лет, представляют собой ЧК с процентным убытком 85,123967.

2. Графическое представление процента каждой акции

3. Акции с отрицательной доходностью

4. Доходность по акциям

вывод приведенного выше кода приведен ниже.

5. Нет прибыли, нет убыточных запасов

Уровень инфляции составляет 2%. Таким образом, акции, приносящие 2% дохода в год, можно рассматривать как акции без прибыли и убытков. При усугублении 2% в течение 4 лет примерно получается 8%.

вывод кода следующий.

Это две акции, которые не являются ни прибыльными, ни убыточными.

6. Разложение

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

Решение для первого разреза:

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

· Бизнес-ограничения-

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

· Показатель эффективности-

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

Набор данных изменен таким образом, что создается 12 столбцов. Первые 10 столбцов — это цена акций за предыдущие 10 дней, а остальные 2 столбца — объем акций за предыдущие 2 дня. Если разбить набор данных по названию акции, то для каждой акции можно использовать около 1000 точек данных. В таблице ниже показано, как изменяется таблица:

а. C-1 представляет текущий день — 1 или вчерашнюю цену, C-2 представляет текущий день — 2 или цену за день до вчерашней, C-3 представляет цену за два дня до вчерашней и так далее до C-10. V-1 и V-2 представляют объем вчера и позавчера соответственно. Это делает набор данных поезда.

б. В тестовом наборе данных содержится C-0 или просто текущая цена закрытия. Это делает набор тестовых данных для этой задачи. В таблице ниже показано, как изменяется таблица. Заглавные буквы представляют значения.

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

Точно так же изменяется тестовый набор данных.

Код: -

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

Выше суть объясняет, как создается набор данных. Если вызывается вышеуказанная функция, создается пользовательский набор данных. Набор данных будет выглядеть

Поскольку набор данных очень мал, нам нужно добавить синтетические точки данных, чтобы увеличить размер данных.

После этого модели машинного обучения применяются к созданному набору данных.

Описание модели:

После предварительной обработки пришло время обучить модель на наборе данных. Нам нужна модель, которая дает наилучшие результаты. Но мы не знаем, какая модель даст наилучшие результаты. В качестве решения будут проверены различные модели, которые работают лучше всего. Модели, принятые во внимание для экспериментов: -

  1. Линейная регрессия

2. СВР

3. XGBoost

4. Случайный лес

5. Модель стекирования

Подобный код используется для всех моделей и применяется к модели.

Сравнение моделей: -

Из всех моделей модель суммирования и линейная регрессия дали лучший показатель RMSE 1,68255 и 1,7319 соответственно. Результаты несколько похожи.

Будущая работа: -

Можно сделать больше EDA, чтобы изучить больше тенденций в наборе данных. Другой набор данных, доступный на Kaggle, можно объединить с текущим набором данных и использовать для прогнозирования цен. Этот набор данных содержит 25 самых популярных заголовков канала Reddit World News Channel. И эти заголовки ранжируются пользователями Reddit. При использовании этого набора данных данные станут сложными, но это может помочь более точно предсказать цену.

Набор данных Kaggle: -https://www.kaggle.com/datasets/aaron7sun/stocknews

Ссылки: -

1. https://github.com/akashsangar2653/Processing-of-Stock-dataset/blob/main/Stock%20dataset%20processing%20and%20predicting%20prices.ipynb

2. https://www.kaggle.com/datasets/mysarahmadbhat/stock-prices

3. https://www.appliedaicourse.com/course/11/Applied-Machine-learning-course

Вы можете найти меня на: -

GitHub- https://github.com/akashsangar2653

LinkedIn: — www.linkedin.com/in/akash-rajendra-sangar