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

Теперь давайте вкратце представим себе набор проблем, с которыми мы собираемся иметь дело.

Внутридневная торговля - это такая торговая норма на фондовом рынке, период перехода которой составляет ,, говоря неспециалистом, 1 день. Покупатели покупают акции во время открытия рынка в определенном временном окне, а затем продают те же акции в закрывающем окне того же дня. Здесь мы имеем дело с набором данных одной из публичных компаний Токио с ежедневными данными за два года с 2014 по 2016 год. Мы собираемся использовать простую модель машинного обучения, чтобы:

  1. Разберитесь в наших данных
  2. Делайте прогнозы на основе алгоритма

Для справки вот ссылка на мой репозиторий Github, который содержит:

  1. Скрипт Python для выполнения анализа
  2. Тестовые данные в формате csv
  3. Данные обучения в формате csv


Теперь, когда вы можете найти все коды Python в моем репозитории, я не собираюсь утомлять вас, снова проводя вас через базу кода или объясняя вам то же самое. Скрипт простой, автономный и довольно понятный, поэтому его довольно просто понять. Я также документировал сценарий везде, где это необходимо, и все же, если вы застряли, вы всегда можете отправить письмо на [email protected] и ожидать ответа в течение дня.

Однажды мой профессор из NIT Rourkela, Индия, сказал: «Понимание данных и поставленных задач так же важно, как и статистические знания, необходимые для их анализа». Нам нужно понимать, что такое внутридневная торговля и какие аспекты определяют поведение нашего целевого значения.

Итак, наш набор данных состоит из 7 столбцов, из которых 6 - функции, а 1 - целевой.

Возможности

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

Цель

  • Торговля акциями - цена всех акций на рынке в этот день.

Теперь, поскольку наши данные содержат компонент Время, весьма вероятно, что наши данные представляют собой данные временного ряда. Но для того, чтобы данные были квалифицированы как данные временного ряда, они должны иметь коэффициент Тенденция или Сезонность. Чтобы проверить, является ли наш набор данных сезонным или модным, мы можем выполнить Анализ Дики-Фуллера ». Если наш набор данных носит сезонный характер, мы можем проанализировать его как данные временного ряда.

При реализации полного анализа Дики в Python требуется переменная «Частота». Частота математически определяется как

Frequency = (Total time units expected till which data will show repetative patter, in minutes) / (time gap between each observations, in minutes)

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

Вот отчет об анализе Диккера-Фуллера моего набора данных.

Из приведенного выше графика видно, что наши данные не являются сезонными по поведению, что означает, что наш набор данных не является набором данных «временного ряда», поскольку сезонность равна 0.

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

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

Из вышесказанного мы можем видеть индивидуальное поведение функций во времени. Мы также можем иметь график корреляции между всеми функциями друг с другом и понимать взаимозависимые отношения между каждой функцией.

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

Общее замечание по пониманию графика корреляционной матрицы

  1. Если общий график кажется кривой (линейной или нелинейной), то они хорошо коррелированы.
  2. Если сюжет кажется разрозненным, значит, они не коррелированы, как ожидалось.

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

Теперь проблему можно описать простыми словами, как показано ниже:

  1. В наборе данных есть все числовые значения
  2. Количество функций = Размер = 5
  3. Одна цель
  4. Цель - «прогнозируемая» (числовая)
  5. Размер поезда ‹1000

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

  1. Это проблема прогнозирования, поэтому необходимо использовать регрессор.
  2. Поскольку размерность довольно мала и, следовательно, размер поезда, любая сложная и изощренная модель, например регрессор SVM, может превосходить модель (Вы можете попробовать!)

После реализации линейной регрессии из модуля Python scikit-learn мы получаем RMSE = 4253929991,85, после тестирования нашей модели на тестовых данных.

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

Порядок значений в «торговля акциями» (10¹¹) ›› порядок значений в характеристиках (10⁵ ~ 10⁶)

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

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

Если можно, в конце статьи поставлю вывод: «Не мечом, чтобы подстричь ногти».

Если у вас возникнут вопросы, свяжитесь со мной по адресу [email protected].

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