Анализ фондового рынка финтеха

  • Прогнозирование с использованием ARIMA
  • ARIMA + GARCH: гибридная модель для прогнозирования высоковолатильных данных.

Прогнозирование с использованием ARIMA

Знакомство

Финтех-индустрия стала свидетелем значительного роста, включая такие сегменты, как paytech, открытый банкинг, встроенные финансы, wealthtech и challenger banking. Наша цель — провести всесторонний анализ пяти известных финтех-компаний — Coinbase (блокчейн), PayPal (paytech), Robinhood (wealthtech), Sofi (challenger banking) и Fiserv (Open Banking) — выбранных из 50 лучших публично торгуемых финтех-компаний на Nasdaq. Используя yfinance, мы собрали важные данные о запасах и использовали Seaborn и Matplotlib для визуализации. Наш анализ охватывает динамику цен на акции, объемы торгов, ежедневную доходность, скользящие средние, корреляцию цен на акции и прогнозы цен закрытия на основе ARIMA. Благодаря этому исследованию мы предоставляем ценную информацию для инвесторов и заинтересованных сторон, помогая им понять эффективность и перспективы этих финтех-компаний в этой динамичной отрасли.

Изменения цен на акции закрытия с течением времени

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

После загрузки данных из yfinance мы добавили две новые колонки «Ежедневная доходность» и «company_name».

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

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

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

Наши результаты показали, что некоторые компании, такие как Coinbase (COIN) и SoFi (SOFI), демонстрировали схожие тенденции цен закрытия, в то время как Fiserv (FI) демонстрировала четкую восходящую ценовую траекторию.

Изменения объема торгов с течением времени

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

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

Ежедневная доходность для каждой акции Fintech

Ежедневная доходность была рассчитана для оценки волатильности каждой акции.

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

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

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

Долгосрочные и краткосрочные скользящие средние

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

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

Корреляции между ценами закрытия различных акций

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

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

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

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

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

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

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

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

И наоборот, Coinbase и Sofi являются лидерами с точки зрения положительной корреляции, имея замечательный коэффициент корреляции 0,95. Необходимо уточнить, что корреляция по своей сути не подразумевает причинно-следственную связь; скорее, это означает высокую степень связи между двумя рассматриваемыми переменными.

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

Использование моделирования ARIMA для прогнозирования цены закрытия

ARIMA расшифровывается как авторегрессионная интегрированная скользящая средняя. Это широко используемый статистический инструмент, используемый для прогнозирования данных временных рядов. Модель ARIMA характеризуется тремя ключевыми компонентами (p, d, q):

1. Термин AutoRegressive (AR) (p): Компонент AR фиксирует автоматическую корреляцию между прошлым значением и текущим значением данных временного ряда. Буква «p» в ARIMA обозначает количество запаздывающих наблюдений, включаемых в модель. Например, модель ARIMA (2,1,0) включает текущее значение и два предыдущих значения (лаги 1 и 2) для прогнозирования.

2. Интегрированный (I) Термин (d): Компонент I представляет собой количество разностных операций, необходимых для того, чтобы сделать временной ряд неподвижным. Стационарность подразумевает, что статистические свойства временных рядов, такие как среднее значение и дисперсия, не изменяются с течением времени. Буква «d» в ARIMA указывает на количество различий, примененных к данным для достижения стационарности.

3. Скользящая средняя (MA) Термин (q): Компонент MA учитывает корреляцию между текущим значением и прошлыми ошибками прогноза. Он измеряет, как текущее значение зависит от прошлых ошибок прогноза. «q» в ARIMA означает количество прошлых ошибок прогноза, которые следует учитывать в модели.

Значения p, d, q обычно выбираются с помощью статистического анализа, такого как изучение автокорреляционных (ACF) и частичных автокорреляционных графиков (PACF), а также путем экспериментов.

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

Следующий шаг включает в себя тестирование стационарности в наших данных временных рядов, что является необходимым условием для построения модели ARIMA. Мы используем функцию ‘adfuller’ (Augmented Dickey-Fuller) из пакета ‘statsmodels’ для разработки функции для этой цели. Если результирующее p-значение меньше 0,05, это указывает на то, что данные демонстрируют стационарность. И наоборот, если p-значение превышает 0,05, это говорит о нестационарности данных.

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

Результаты расширенного теста Дики-Фуллера (ADF) показывают, что для COIN, SOFI и FI была необходима одна дифференциальная операция, чтобы сделать их соответствующие данные временных рядов стационарными, что облегчило их пригодность для дальнейшего моделирования. Этот дифференциальный шаг помогает стабилизировать статистические свойства данных, делая их пригодными для таких методов, как ARIMA.

Теперь, когда наши данные находятся в стационарном состоянии, мы можем приступить к определению соответствующих значений параметров p и q в модели ARIMA. Это определение достигается путем изучения графиков AutoCorrelation Function (ACF) и Partial AutoCorrelation Function (PACF), которые дают ценную информацию о запаздывающих порядках, необходимых для построения модели ARIMA.

Процесс выбора подходящих значений для параметров p и q в модели ARIMA включает в себя тщательный анализ графика частичной автокорреляционной функции (PACF) для определения p-значения и графика автокорреляционной функции (ACF) для определения q-значения. Это тщательное исследование позволяет нам точно определить оптимальный порядок для нашей модели ARIMA, что в конечном итоге дает наиболее благоприятные результаты.

После тщательного рассмотрения и разработки модели мы пришли к следующим комбинациям параметров для нашего набора данных:

— Для COIN: (6, 1, 6)
— Для PYPL: (2, 0, 1)
— Для HOOD: (2, 0, 1)
— Для SOFI: (4, 1, 6)
— Для FI: (1, 1, 1)

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

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

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

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

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

Представленный график дает всесторонний обзор тенденций цен на акции. Примечательно, что Coinbase (COIN) демонстрирует небольшую нисходящую траекторию, в то время как Robinhood (HOOD) демонстрирует восходящую тенденцию.

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

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

Заключение

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

Найдите прикрепленную ссылку github на полный код python; Анализ акций Fintech

ARIMA + GARCH: гибридная модель для прогнозирования высоковолатильных данных.

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

Прогноз цен на нефть марки Brent с помощью гибридной модели.

Начнем с важной терминологии в статистике «гомоскедастический». Почти все статистические модели предполагают, что данные являются гомоскедастическими, что означает, что среднее значение и дисперсия невязок ряда не изменяются со временем.

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

Декомпозиция временных рядов.

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

Vt = Tt + St + et

MULTIPLICATIVE DECOMPOSITION

Vt = Tt * St * et

where Tt is the trend St is the seasonality and et is residual at a particular time t

Аддитивное разложение цены на нефть марки Brent.

Мы видим, что остатки разбросаны и нет правильного тренда (восходящий или нисходящий).

Проверьте стационарность.

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

Данные, используемые здесь, не являются стационарными в соответствии с тестом ADF. После дифференцирования 1-го порядка на данных видно, что он стал стационарным. Таким образом, поскольку я использую ARIMA в качестве базовой модели, а дифференцирование 1-го порядка делает ее стационарной, гиперпараметр ‘d’ между ‘p’, ‘d’ и ‘q‘ может быть выбран равным 1. p — компонент авторегрессии, q — скользящее среднее. p и q могут быть выбраны путем наблюдения за графиками ACF и PACF. Но в нашем случае модель не имеет постоянного тренда или сезонности. Таким образом, мы ничего не можем извлечь из этих графиков, и ARIMA, SARIMA или любая другая модель сами по себе будут работать ужасно, поскольку остатки являются гетероскедастными, как мы наблюдали при разложении.

Как работает гибридная модель.

Прогноз с использованием выбранной модели, в нашем случае модели ARIMA (Auto Regressive Integral Moving Average). Затем спрогнозируйте его волатильность (остатки) с помощью модели прогнозирования волатильности, такой как GARCH (Generalized auto regressive conditional heteroscedasticity). В качестве последнего шага объедините оба прогноза, добавив оба.

Начиная с модели ARIMA, разработанной следующим образом,from statsmodels.tsa.arima.model import ARIMA
modelARIMA = ARIMA(df,order=(1,1,9)).fit()

plt.figure(figsize=(12,3.5))
plt.grid()
plt.plot(df[-200:],label=’train data’)
plt.plot(forecastARIMA,label=’ARIMA’,c=’orange’)
plt.legend()

Прогноз ARIMA

Постройте график и проверьте остатки ARIMA.

Остатки модели ARIMA.

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

Прогноз волатильности с помощью GARCH

Как следует из названия Generalized Autoregressive Conditional heteroscedasticity, модели GARCH могут позволить себе гетероскедастические данные. Остатки ARIMA очень гетероскедастны, как мы уже видели на графике выше, который используется для прогнозирования волатильности.import arch
modelGARCH = arch.arch_model(residArima,mean=’Zero’, vol=’Garch’, p=50, q=30)

resultGarch = modelGARCH.fit()
»’GARCH forecast for desired horizon»’
forecastGARCH = resultGarch.forecast(horizon=30)

Комбинированный прогноз

Добавление обоих прогнозов в качестве окончательного прогноза, который вы можете увидеть в блоке кода ниже.»’combined forecast»’
forecastBrent = forecastARIMA.mean() + forecastGARCH.variance.values[-1, :]

»’set up forecast dataframe»’
forecastIndex = pd.date_range(start=’2023-11-20′, periods=30, freq=’D’)
forecastDf = pd.DataFrame(forecastBrent, index=forecastIndex, columns=[‘Forecast’])
horizon=30
plt.figure(figsize=(12,3.5))
plt.grid()
plt.plot(df[‘price’][-200:].values,label=’train data’)
plt.plot(range(199,199+horizon),forecastBrent,label=’forecast’,c=’magenta’,ls=’-.’)
plt.legend()

Прогнозирование с помощью гибридной модели и сравнение с данными в реальном времени

Модель обучена на данных до 2023–11–20 года. Прогноз на 30 дней и просто сравнение нескольких цен после вышеупомянутой даты, как показано ниже.

Прогнозирование цены на нефть марки Brent с помощью гибридной модели.

Заключение

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

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

Источник