Может ли ИИ прогнозировать инвестиции в акции

Алгоритмический обмен расстроил биржу ценных бумаг и окружающую ее отрасль. Более 70% всех обменов, происходящих в США в настоящее время, совершаются ботами. Прошли времена загруженной торговли акциями, когда здоровые люди размахивали листками бумаги и кричали в телефоны. ИИ имеет множество приложений, одним из которых является оценка распределения времени. Вполне возможно, что наиболее интригующим (или, возможно, в целом продуктивным) механизмом планирования времени является стоимость запасов.

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

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



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

Оглавление:

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

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

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

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

Функции

Этот набор данных содержит анонимный набор признаков feature_{0…129}, представляющих реальные данные фондового рынка. Каждая строка в наборе данных представляет торговую возможность, для которой вы будете предсказывать значение действия: 1 для совершения сделки и 0 для ее передачи.

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

Вес

Сделки с весом = 0 были намеренно включены в набор данных для полноты, хотя такие сделки не будут способствовать подсчету баллов.

Из характеристики распределения веса мы заметили, что он сильно смещен в сторону 0, так как в наборе данных у нас есть сделки с весом = 0, которые были намеренно включены в набор данных для полноты, хотя такие сделки не будут способствовать оценке оценки, и что процент нулевых весов составляет 17%, и, поскольку эти веса не будут способствовать оценке оценки, мы можем их отбросить.

Ответ

Функция resp со значениями resp_{1,2,3,4} возвращает адреса на различных временных шкалах. В качестве разброса соотв. основные моменты характеризуются как возвраты на протяжении различных периодов времени. Упоминается с: https://www.investopedia.com/terms/t/timehorizon.asp, Time Horizon — это временной интервал, в течение которого каждый надеется удерживать предприятие до тех пор, пока ему не понадобится прибыль. Чем длиннее время, тем больше должна работать сила сложных процентов, и, кроме того, тем более мощная финансовая отдача может быть получена в их портфеле и наоборот.
Каждая биржа имеет соответствующий вес и соответственно, что вместе определяет прибыль от биржи.

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

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

ts_id

Функция ts_id представляет собой упорядочение по времени, трейдов в день.

Глядя на нет. сделок по графику дней, мы наблюдаем, что колебания находятся в диапазоне 0–100 и, наконец, примерно после 450–500, и почти все дни с большим объемом сделок приходятся на дни до и до 85-го дня.

Источник: https://www.investopedia.com/terms/v/volatility.asp. Извлечено из того, что волатильность является мерой колебаний. Волатильные активы часто считаются более рискованными, чем менее волатильные активы, поскольку ожидается, что цена чтобы быть менее предсказуемым, волатильность является важной переменной для расчета цен опционов.

Как указано в упомянутой ссылке, большее количество сделок за данный день просто указывает на более высокую волатильность рынка. обсуждение/201930#1125847», более 9 тысяч сделок в день и почти все они происходят до 85-го дня

129 функций

Глядя на заголовок или несколько элементов функций, было замечено, что feature_0 имеет только 1 и -1 в качестве своих значений, которые можно изучить, в то время как feature_7,8,120,121 — это NaN, что дает интуитивное представление о том, что может быть несколько пропущенных значений.

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

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

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

Наблюдения с участков

  • Все функции нормально распределены со средним значением около нуля
  • Большинство функций, по-видимому, коррелируют

Чтобы лучше понять, мы можем построить матрицу корреляции.

Разработка функций

Наблюдая за тепловой картой, мы видим, что набор признаков 16–40, по-видимому, сильно коррелирован, мы можем исследовать его глубже, и если мы обнаружим высокую корреляцию, мы можем удалить признаки.

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

Дисперсия Инжиниринг

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

Выход менее коррелированных данных

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

Отсутствующие значения

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

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

https://www.geeksforgeeks.org/python-visualize-missing-values-nan-values-using-missingno-library/

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

msno.matrix(train_data[feature_columns[:26]])

При полном осмотре отсутствующего сюжета мы видим, что у нас есть особенности -

  • 7,8,17,18,11,12,21,22,27,28,78,84,90,96,102,80,86,92,98,108,114,104,110,116,120,121

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

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

Уменьшение размерности

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

  • Создать объекты
  • извлечь лучшие черты

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

СВД

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

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

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

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

Другой вариант, который можно попробовать, — найти метод автоэнкодера для уменьшения размера.

Автоэнкодер

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

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

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

Таким образом, генерируя вывод как:

XGBoost

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

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

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

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

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

Выполнение прогноза

Чтобы выполнить прогноз, мы создали генератор отчетов и одну функцию поиска лучших параметров, например:

Генератор отчетов

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

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

Модели машинного обучения

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

Логистическая регрессия

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

parameters = {'alpha':[0.01, 0.1, 1, 10, 20, 30], 'penalty':['l2','l1','elasticnet']}
lgr = SGDClassifier(loss='log')
lgr_params = RandomizedSearchCV(lgr,param_distributions=parameters,cv=4, verbose=1, n_jobs=-1,scoring='accuracy')
lgr_params.fit(scl.fit_transform(X_train),y_train)

Со случайным поиском CV мы рассчитали, настроили модель для лучших параметров, а затем обучили модель этим параметрам, параметры включают:

  • альфа как [0,01, 0,1, 1, 10, 20, 30]
  • штраф как ['l2','l1','elasticnet']

SVM

SVM могут делать ошибки классификации в обучающих данных, чтобы свести к минимуму общие ошибки в тестовых данных. Основным преимуществом SVM является то, что он находит глобальный оптимум.
Машины опорных векторов выделяются среди других бинарных классификаторов. Они устанавливают предел выбора с конечной целью, заключающейся в том, что большинство фокусов в одной классификации приходится на одну сторону ограничения, в то время как большинство фокусов в другой классификации попадает на противоположную сторону границы. Идеальная гиперплоскость до такой степени, что мы расширяем отделение от плоскости до любой точки. Это известно как край. Гиперплоскость с максимальным запасом (MMH) лучше всего разделяет информацию.
Поскольку это может быть не идеальное разграничение, Vector Machine (SVM) — это относительно новый алгоритм обучения, обладающий желательными характеристиками
контроля над решающая функция.

params = {'alpha':np.random.uniform(0.01, 100,10),
'penalty':['l2','l1','elasticnet'],
'eta0':np.random.uniform(1,100,10)}
svm = SGDClassifier(loss='hinge',n_jobs=-1,shuffle=False)
svm_params = RandomizedSearchCV(svm,param_distributions=params,cv=4, verbose=1, n_jobs=-1,scoring='accuracy')
svm_params.fit(scl.fit_transform(X_train),y_train)

Со случайным поиском CV мы рассчитали, настроили модель для лучших параметров, а затем обучили модель этим параметрам, параметры включают:

  • альфа как np.random.uniform (0,01, 100,10)
  • штраф как ['l2','l1','elasticnet']
  • eta0 как np.random.uniform(1,100,10)

Древо решений

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

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

parameters = {'max_depth':np.arange(3,10,2),'criterion' : ["gini", "entropy"]}
dtree = DecisionTreeClassifier()
dtree_search = RandomizedSearchCV(dtree,param_distributions=parameters,cv=3, n_jobs=-1,verbose=1,scoring="accuracy")
dtree_search.fit(scl.fit_transform(X_train),y_train)

Со случайным поиском CV мы рассчитали, настроили модель для лучших параметров, а затем обучили модель этим параметрам, параметры включают:

  • max_depth как np.arange(3,10,2)
  • критерий как ["Джини", "энтропия"]

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

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

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

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

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

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

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

xgboost

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

Таким образом, создается метрика результата как:

Адабуст

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

params = {'algorithm' : ['SAMME', 'SAMME.R']}
adb = AdaBoostClassifier()
adb_search = RandomizedSearchCV(adb,param_distributions=params,cv=3, n_jobs=-1,verbose=1,scoring="accuracy")
adb_search.fit(scl.fit_transform(X_train),y_train)

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

Сравнение моделей машинного обучения

Затем, после того, как все модели были выполнены, мы построили сравнение всех моделей с мерами точности, которые мы приняли во внимание.

Метрика путаницы: объяснение точности и полноты предсказания.

F1_score: это сочетание точности и полноты модели, и оно определяется как гармоническое среднее точности и полноты модели, что дает числовое значение для счет.

Оценка AUC: показывает, насколько модель способна различать классы. Чем выше AUC, тем лучше модель предсказывает 0 как 0 и 1 как 1.

Точность: определяет процент правильного прогноза для тестовых данных.

Таким образом, было замечено, что логистическая регрессия работает лучше.

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

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

Ссылки

  1. appliedaicourse.com
  2. Прогноз цен на акции на основе глубоких нейронных сетей от — Pengfei
    Yu1,2·Xuesong Yan1,2
    (https://www.researchgate.net/publication/332488706_Stock_price_pr
    ediction_based_on_deep_neural_networks)< br /> Согласно документу, фондовый рынок представляет собой нелинейную финансовую информацию и проблему,
    зависящую от времени, поэтому Deep Neural Network наряду с преимуществами Deep
    обучения будет работать более удовлетворительно по сравнению с
    > традиционный подход к машинному обучению, наблюдатели использовали
    модель прогнозирования DNN, основанную на методе реконструкции фазового пространства
    , и долгосрочную краткосрочную модель для прогнозирования цен на акции, он
    также сравнил результаты для различных моделей, включая ARIMA, и
    пришел к выводу, что DNN работает лучше, чем SVR или любые другие методы машинного обучения
    .
  3. https://www.analyticsvidhya.com/blog/2018/10/predicting-stock-pricemachine-
    learning-deep-learning-techniques-python/
    Поскольку данные представляют собой данные временного ряда или данные скользящего окна, они
    использовали 4 различных метода для анализа и прогнозирования фондовых рынков,
    однако их вывод больше зависит от того, насколько точен прогноз, наше
    требование состоит в том, чтобы торговать или пройти, но мы также будем классифицировать
    на основе прибыли, которую дает возможность, возвращаясь к
    предложенному ими решению, использующему 6 методов, и сравниваем их,
    что работает лучше, Эти 6 методов:
    Скользящее среднее, Линейная регрессия, k-ближайших соседей, Авто
    ARIMA, Прогноз, Долгосрочная кратковременная память (LSTM).
    Все эти методы отлично подходят для последовательных данных. , но LSTM
    , являющийся рекуррентной нейронной сетью и оценивающий весь диапазон длины
    на основе весов, работает лучше.
  4. Глубокое обучение для прогнозирования движения цены с использованием сверточной
    нейронной сети и долговременной кратковременной памяти
    (https://www.hindawi.com/journals/mpe/2020/2746845/)
    Этот документ отличается от других документов по фондовому маркетингу тем, что в нем
    участвует CNN, CNN извлекает полезные функции из
    финансовых переменных, а затем использует LSTM.
  5. [Решение] 1DCNN для извлечения признаков
    https://www.kaggle.com/code1110/janestreet-1dcnn-for-feature-extracti
    on-infer
    В решении они использовали кодировщик узких мест для устранения шума
    данных и использовали узкие места, потому что он также сохраняет взаимосвязь внутри функции
    , затем они выполнили очищенное разбиение данных по времени
    и предоставили его второй этап, который представляет собой многоуровневый персептрон,
    предсказывает вероятность классификации.

Моя работа



Пожалуйста, найдите меня на: