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

В этой статье мы собираемся построить модель GARCH с использованием Python для прогнозирования волатильности курса акций.

Отказ от ответственности

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

Необходимые библиотеки Python

  1. yFinance - https://pypi.org/project/yfinance/
  2. арка - https://pypi.org/project/arch/
  3. Matplotlib - https://matplotlib.org/
  4. Numpy - https://numpy.org/
  5. Панды - https://pandas.pydata.org/

Github

Оригинальные полные исходные коды, представленные в этой статье, доступны на моем Github Repo. Не стесняйтесь загружать его, если хотите использовать его, чтобы следить за моей статьей.

Прогнозирование волатильности акций с использованием модели GARCH

1. Сбор данных о запасах

Мы используем yFinance для получения данных об акциях от Yahoo Finance. yFinance - это библиотека Python с открытым исходным кодом, которая позволяет нам получать любые данные об акциях США в заранее определенный период времени.

Строка 1–8: Импортируйте необходимые библиотеки.

Строки 10–11: установите символ тикера (например, aapl). Используйте метод yf download для получения данных о запасах, начиная с 4 января 2016 г. по 30 апреля 2021 г. (данные примерно за 5 лет).

2. Расчет ежедневной доходности

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

Метод pct_change автоматически рассчитает процентные изменения цены закрытия текущего дня по сравнению с предыдущим днем. Обратите внимание, что процентные изменения могут быть как положительными, так и отрицательными, в зависимости от направления изменения цены. Результирующие процентные изменения сохраняются в новом столбце фрейма данных «Return».

3. График ежедневной доходности

Мы строим линейный график, чтобы визуализировать дневную доходность с течением времени.

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

Строка 3–8: Создайте и настройте линейный график и установите столбец stock_data [‘Return’] в качестве значений оси Y.

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

4. Расчет дневной, месячной и годовой волатильности.

Здесь мы собираемся рассчитать волатильность акции на трех уровнях: дневном, месячном и годовом.

Строка 1–2: Используйте метод std для вычисления стандартного отклонения дневных цен доходности, и полученные значения присваиваются переменной daily_volatility и отобразить вывод с помощью оператора печати.

Строка 4–5: Мы предполагаем, что в месяц 21 торговый день, и поэтому месячная волатильность вычисляется путем умножения квадратного корня из 21 на дневную волатильность.

Строка 7–8: Мы предполагаем, что в месяц 252 торговых дня, поэтому годовая волатильность вычисляется путем умножения квадратного корня из 252 на дневную волатильность.

Мы видим, что годовая волатильность этой акции (AAPL) довольно высока. Это причина того, что вложения в акции всегда сопряжены с высокими рисками, и никогда не следует торговать наугад.

5. Построение модели GARCH

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

В этом разделе мы собираемся построить модель GARCH ( обобщенная авторегрессивная условная гетероскедастичность ) для прогнозирования волатильности акций на основе исторических цен закрытия и волатильности. . Математическая логика модели GARCH может показаться сложной, но мы можем использовать библиотеку Python arch, чтобы инкапсулировать математическую сложность всего в несколько строк скриптов.

Строка 1–2. Получение данных о ежедневной доходности акций в функцию arch_model. Мы устанавливаем для p и q значение 1, а затем оставляем настройки для mean, vol, и dist по умолчанию. , которые являются 'постоянным', 'GARCH' и 'нормальным'.

Строка 4–5. Подгоните модель GARCH и распечатайте результаты.

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

Строка 9–10: Используйте метод прогноз, чтобы сделать прогноз на 5 периодов вперед (горизонт = 5) и распечатать результат в виде дисперсии. .

Приведенный выше результат прогноза включает прогноз на 1 шаг вперед с использованием данных до 29 апреля 2021 года включительно.

6. Скользящий прогноз с использованием модели GARCH.

На этом этапе мы построили модель GARCH, которая может прогнозировать волатильность акций. Теперь мы можем протестировать нашу модель с помощью процесса скользящего прогнозирования, используя исторические данные за n-период времени.

Строка 1–2: создайте пустой список для хранения значений скользящего прогноза. Установите размер теста на 365 дней.

Строка 4–9: В этой части мы многократно в цикле создаем обучающий набор, используя значения ежедневной доходности акций, начиная с первого дня до - (test_size-i) день. Это означает, что в первом цикле данные с первой даты с 5 января 2016 года по 14 ноября 2019 года будут соответствовать модели GARCH. Во втором цикле данные получены с 5 января 2016 года по 15 ноября 2019 года и так далее.

В каждом цикле модель GARCH обучается текущим обучающим набором с параметрами p и q, установленными на 1. Текущая модель используется для прогнозирования волатильности с 1- шаг по времени (горизонт = 1), а затем рассчитанная дисперсия волатильности возводится в квадрат. Окончательное значение (стандартное отклонение) добавляется к Rolling_predictions.

Строка 11: постройте серию Pandas для Rolling_predictions.

Строка 13–16. Создайте линейный график для отображения скользящего прогноза волатильности за последние 365 дней.

Мы почти на месте. На приведенном выше графике показан скользящий прогноз волатильности за последние 365 дней. Мы видим, что в период с марта по апрель 2020 года прогнозируется очень высокая волатильность.

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

Строка 2: создайте линейный график, чтобы показать ежедневную доходность только за последние 365 дней (stock_data [‘Return’] [- 365:]).

Строка 3. Создайте еще один линейный график для скользящей прогнозируемой волатильности.

Из приведенных выше подзаголовков мы можем заметить, что наша прогнозируемая волатильность в целом соответствует дневной доходности (истинным значениям). Это означает, что наша модель GARCH работает здесь хорошо. В области, где прогнозируемая волатильность высока (например, март-апрель 2020 года), дневная доходность также высока. Мы видим, что прогнозируемая волатильность в начале 2021 года в целом менее подвержена колебаниям и, следовательно, имеет относительно меньший риск в этот период.

Заключение

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

Надеюсь, вам понравилась эта статья.

использованная литература

  1. Https://www.investopedia.com/terms/g/generalalizedautogregressiveconditionalheteroskedasticity.asp
  2. Https://www.investopedia.com/articles/financial-theory/08/volatility.asp

Больше контента на plainenglish.io