Содержание

1. Введение

2. Просмотр данных

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

4. Исследование данных

5. Панель управления

6. Наш подход: создание моделей машинного обучения

7. Результаты

8. Будущая работа

1. Введение

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

Перспектива Саудовской Аравии до 2030 года и тадавул:

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

Saudi Tadawul Group, созданная в марте 2021 года, тесно сотрудничает со всеми заинтересованными сторонами и инвесторами для развития рынка за счет повышения рыночной ликвидности, доверия местных инвесторов, доступа к рынку, эффективности и уровня прозрачности, а также привлечения иностранных инвестиций для открытия. различным сегментам на местном, региональном и глобальном уровнях за то, что «Тадавул» представляет с точки зрения объема и ликвидности на международном финансовом рынке Саудовской Аравии.

Бизнес-проблема:

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

Цель проекта:

У нас есть две разные цели для анализа набора данных: во-первых, регрессионная модель предсказывает цену закрытия, а другая — модель классификации для предсказания класса изменения, если это хорошее изменение, плохое изменение или стабильное.

Цель регрессионной модели:

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

Цель модели классификации:

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

2. Обзор данных

Это данные саудовских компаний фондового рынка с 2001–12–31 по 2020–04–16. Он был взят с веб-сайта Саудовской фондовой биржи (Tadawul).

Ссылка на набор данных: https://www.kaggle.com/datasets/salwaalzahrani/saudi-stock-exchange-tadawul

Данные содержат 593819 строк и 14 столбцов.

Значение каждого столбца (каждая строка в базе данных представляет цену определенной акции на определенную дату):

Символ (int64): ссылочный номер компании

Название (объект): Название компании

Trading_name (объект): Торговое название компании

Сектор (объект): Сектор, в котором работает компания

Дата (объект): Дата цены акции

Open (float64): цена открытия

High (float64): самая высокая цена акции в этот день.

Low (float64): самая низкая цена акции в этот день.

Close (float64): цена закрытия

Изменение (float64): изменение цены за последний день.

Perc_Change (float64): процент изменения

Volume_traded (float64): объем сделок за день.

Value_traded (float64): стоимость сделок за день.

No_trades (float64): количество сделок за день

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

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

Мы добавили новый столбец из столбца per_change в наборе данных, который является Change_category (целевой классификацией).

Мы создаем классы из per_change, как показано ниже:

  • Хорошее изменение: если per_change › 0
  • Плохое изменение: если per_change ‹ 0
  • Стабильный: если per_change = 0

4. Исследование данных

График 1 (парный график). На этом графике показаны следующие несколько аналитических данных:

  • Распределение торговли увеличивается с каждым годом, но в 2020 году оно разбивается
  • Мы можем видеть один пик в цене открытия, высокой цене, низкой цене и цене закрытия, что означает, что данные не имеют различных областей, а данные объема искажены вправо.
  • Самая высокая цена в open_price, high_price, low_price, close_price больше 6000
  • Самая низкая цена в open_price, high_price, low_price, close_price равна 0
  • Мы можем видеть все отношения по ежедневной доходности между всеми функциями. Простой взгляд показывает интересную корреляцию между ценой закрытия и открытия, высокой и низкой дневной доходностью.
  • Самое высокое изменение (хорошее изменение) почти 600
  • Худшее изменение (Плохое изменение) -400
  • Мы замечаем, что хорошие и плохие изменения почти одинаковы.

График 2 (график матрицы Predictive Power Score): Predictive Power Score (PPS) – это асимметричная оценка, не зависящая от типа данных, которая может обнаруживать линейные или нелинейные отношения между двумя столбцами.

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

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

График 4 (линейный график). На этом графике показано количество сделок в каждом секторе за каждый год. Как видно, количество сделок в 2006 году увеличилось, особенно в секторах недвижимости и коммунальных услуг.

График 5 (коробочный график): эти два графика показывают цены закрытия и открытия в самом большом секторе (финансовый сектор):

close_price и open_price в Bupa Arabia для кооперативного страхования

  • более высокая медиана в 2020 г., затем в 2019 г., наконец, в 2018 г.
  • самый высокий разброс в 2019 году, затем в 2018 году, наконец, в 2020 году
  • нет выбросов

close_price и open_price в компании по кооперативному страхованию

  • самая высокая медиана в 2020 г., затем в 2019 г., наконец, в 2018 г.
  • самая высокая вариация в 2019 году, затем в 2018 году, наконец, в 2020 году
  • 2020 год имеет выбросы в ценах открытия и закрытия

close_price и open_price в alrajhi

  • самая высокая медиана в 2020 г., затем в 2018 г., наконец, в 2019 г.
  • самый высокий разброс в 2018 году, затем в 2019 году, наконец, в 2020 году
  • нет выбросов

close_price и open_price в национальном коммерческом банке

  • самая высокая медиана в 2019 г., затем в 2018 г., наконец, в 2020 г.
  • самый высокий разброс в 2019 году, затем в 2018 году, наконец, в 2020 году
  • есть выброс в цене открытия в 2020 году

График 5 (коробочный график), продолжение:Эти два графика показывают цены закрытия и открытия в крупнейшем секторе информационных технологий (ИТ):

close_price и open_price в информационных системах al Moammar за 2019 год

  • самая высокая медиана в 2019 г., затем в 2020 г.
  • самый высокий разброс в 2019 г., затем в 2020 г.
  • цена закрытия в 2020 году имеет выбросы
  • не существует в 2018 году

close_price и open_price в информационных системах арабского моря

  • самая высокая медиана в 2020 г., затем в 2019 г., наконец, в 2018 г.
  • самый высокий разброс в 2020 году, затем в 2019 году, наконец, в 2018 году
  • в 2019 году в ценах открытия и закрытия есть выбросы

График 6 (гистограмма):

  • этот график показывает, что цены на акции растут с 2001 по 2006 год.
  • цены на акции упали в 2007 году.
  • цены на акции стабильны с 2016–2020 гг.

График 7 (круговая диаграмма): этот график показывает, что класс Bad Changes имеет самую высокую долю общих изменений (45,41%), а класс Stable — самую низкую долю (11,34%). Тем не менее, класс хороших изменений очень близок к классу плохих изменений с долей (43,26%).

График 8 (график подсчета): этот график показывает, что все сектора близки с точки зрения хороших или плохих изменений, а класс "Стабильный" является самым низким во всех секторах.

График 9 (график KDE): эти два графика показывают нам плотность цен закрытия для крупнейших компаний сектора (только 2 лучшие компании с точки зрения цены закрытия) и компаний самого низкого сектора.

  • ИТ: MIS имеет самую высокую плотность, когда цена закрытия составляет почти 13, а ARAB SEA имеет самую высокую плотность, когда цена закрытия составляет почти 46.
  • Финансы: RIBL имеет самую высокую плотность, когда цена закрытия почти равна 12, тогда как SAMBA имеет самую высокую плотность, когда цена закрытия составляет почти 23.

График 10 (гистограмма). На этом графике показано количество сделок в будние дни. Мы замечаем, что количество сделок увеличивается на старте инвестиционного рынка в субботу и уменьшается в конце недели в четверг.

График 10 (гистограмма), продолжение:на этом графике показано количество сделок за месяцы. Мы замечаем, что количество сделок близко в первый и последний месяцы года, тогда как в остальное время года оно меняется.

5. Панель инструментов

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

6. Наш подход: создание моделей машинного обучения

Первое: построение регрессионных моделей (предсказание цены закрытия)

Мы выбираем регрессионные модели для прогнозирования цены закрытия, потому что это непрерывное значение (плавающее значение). Сначала мы создаем базовую модель с использованием модели DummyRegressor, затем мы обучили множество моделей регрессии на основе open_price, low_price и изменения, а затем сравнили результаты, используя функции стоимости для моделей регрессии, чтобы выбрать лучшую из них с наивысшая оценка R2 и наименьшая возможная ошибка. Наконец, мы настроили лучшую модель с помощью метода Random_Search, и это окончательный результат, как показано в таблице ниже:

Мы обнаружили, что лучшей моделью является модель линейной регрессии, поскольку она дает наивысший показатель R2 со значением 0,9996 и наименьшую ошибку среднеквадратичной ошибки (RMSE) со значением 1,6.

Второе: построение моделей классификации (предсказание категории изменений)

Мы выбираем модели классификации для прогнозирования категории изменения, потому что это категориальное значение (объект). Сначала мы создаем базовую модель с использованием модели DummyClassifier, затем мы обучили множество моделей классификации на основе low_price, high_price, open_price и close_price, а затем сравнили результаты, используя отчеты о классификации, чтобы выбрать лучшую. Наконец, мы настроили лучшую модель с помощью метода Random_Search, и это окончательный результат, как показано в таблице ниже:

Мы обнаружили, что наилучшей моделью является модель случайного леса, поскольку она дает самую высокую метрику F1 в отчетах о классификации со значением 76%. Причина, по которой мы смотрим на метрику F1-score, заключается в том, что у нас были несбалансированные классы.

7. Результаты

В этом проекте мы начали с обычной очистки и предварительной обработки, а затем создали новый столбец, который поможет нам предсказать класс изменений с помощью модели классификации. Наконец, мы попытались предсказать цену закрытия, используя множество моделей регрессии, и мы выбрали только лучшую из них и попытались оптимизировать ее результаты, и мы обнаружили, что лучший результат, который мы получили, был получен из линейной регрессии с показателем R2 0,9996 и СКО 1,6. Мы также попытались предсказать категорию изменений, протестировав несколько моделей классификации и оптимизировав лучшую из них; лучший результат, который мы получили, был от модели случайного леса с оценкой F1 76%.

8. Будущая работа

  • Соберите более свежие и актуальные данные.
  • Попробуйте другие модели машинного обучения.
  • Обработка несбалансированных классов в категории изменений и оценка модели.
  • Попробуйте другую цель.
  • Используйте модель временных рядов; Так как у нас есть данные временного ряда.