eFusion 24 апреля 2020

📈 Как пандемия влияет на финансовые рынки: анализ данных

Какое влияние оказывает COVID-19 на финансовые рынки: анализируем текущую ситуацию и сравниваем с тем, как реагировал глобальный рынок на минувшие пандемии.
📈 Как пандемия влияет на финансовые рынки: анализ данных

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

Влияние на финансовые рынки

Начнём с оценки текущего влияния распространения коронавируса на финансовые рынки. Для создания диаграмм использовался Python (код целиком доступен в репозитории на GitHub). Например, для построения ежедневного процентного изменения для S&P500 использовался следующий скрипт:

        # Читаем данные
import pandas_datareader as pdr

# Для построения графиков
import matplotlib.pyplot as plt
plt.style.use('seaborn-darkgrid')

# Для операций над данными
import pandas as pd
import numpy as np

# get_data_yahoo(inst_ticker, start_date, end_date)
data_sp = pdr.get_data_yahoo('^GSPC', '17-Nov-19')

# Рассчитываем процентное изменение
data_pc = data_sp.Close.pct_change()

# Строим
data_pc.plot(figsize=(10, 7), grid=True)
plt.axvline('30-Jan-20')
plt.show()
    
 Ежедневного процентное изменение для индекса S&P500
Ежедневного процентное изменение для индекса S&P500

Для получения индекса S&P500 использовал метод pandas_datareaders get_data_yahoo. Он принимает два аргумента: первый – тикер “^GPSC" для S&P500 в Yahoo Finance, а второй – дата, начиная с которой мы хотим получить данные. При запуске мы получаем набор данных с шестью столбцами. Ежедневное процентное изменение рассчитывается с помощью метода pct_change().

Ежедневное процентное изменение

Помимо S&P500, построим графики для остальных индексов.

        # Читаем таймлайны из файла CSV
timelines = pd.read_csv('pandemics_timelines.csv').dropna()
for col in timelines.columns[1:]:
    timelines[col] = pd.to_datetime(timelines[col])
    
# Читаем данные из yahoo fianance
def get_data(tl):    
    inst_list = ['^GSPC', 'CL=F','GC=F', 'TLT']
    data = pd.DataFrame()
    for inst in inst_list:
        try:
            data[inst] = pdr.get_data_yahoo(inst, tl.first_case.iloc[0]-timedelta(days=30), 
                                        tl.last_date.iloc[0]+timedelta(days=365))['Adj Close']    
        except Exception as e:
            print('No data available for ',inst, e)

    return data
    
# Получаем данные во время covid19
covid_timelines = timelines.loc[timelines.pandemic_name=='covid19']
data= get_data(covid_timelines)

# Строим график ежедневного процентного изменения
def plot_daily_pc(data, tl):
    data_pc = data.pct_change().dropna()
    fig = plt.figure(figsize=(12, 8))
    i = 0
    for col in data_pc.columns:
        # Добавляем доп.график
        sub = fig.add_subplot(2, 2, i+1)
        i = i+1
        # Заголовок
        sub.set_title(col, fontsize=20)
        # График
        r = random.random()
        b = random.random()
        g = random.random()
        data_pc[col].plot(color=(r, g, b))
        sub.set_ylabel('Returns')
        sub.grid(which="major", color='k', linestyle='-.', linewidth=0.2)
        sub.axvline(x=tl.first_case.iloc[0], color='RoyalBlue',
                    linestyle='dashdot', linewidth=3)
        sub.axvline(x=tl.who_emergency.iloc[0], color='Red',
                    linestyle='dashdot', linewidth=3)

    plt.tight_layout()
    plt.show()
    
plot_daily_pc(data, covid_timelines)
    
Процентное изменения четырёх рассматриваемых показателей с ноября 2019 г. по апрель 2020 г.
Процентное изменения четырёх рассматриваемых показателей с ноября 2019 г. по апрель 2020 г.

Синяя штрихпунктирная вертикаль – дата, когда был выявлен первый случай заболевания. Колебания индексов были незначительны до тех пор, пока Всемирная организация здравоохранения (ВОЗ) не объявила чрезвычайное положение, приведшее к резкой потере стабильности – вспышка COVID-19 оказала сильное влияние на финансовые рынки.

Совокупная доходность

Построим кривые совокупной доходности акций для перечисленных индексов. Дата начала – за несколько дней до первого случая, последний рассматриваемый день – 30 марта.

        def plot_cumulative_returns(data,tl):
    data_cum_ret = (data.pct_change()+1).cumprod()
    data_cum_ret.plot(figsize=(10,7),grid=True)
    plt.legend(loc='best')
    plt.ylabel('Cumulative Returns')
    plt.axvline(x=tl.first_case.iloc[0],color='RoyalBlue',linestyle='dashdot',linewidth=3)
    plt.axvline(x=tl.who_emergency.iloc[0],color='Red',linestyle='dashdot',linewidth=3)
    plt.axvline(x=tl.pandemic_declaration.iloc[0],color='LightSeaGreen',linestyle='dashdot',linewidth=3)
    plt.axvspan(tl.last_date.iloc[0], tl.last_date.iloc[0]+timedelta(days=365),color='dodgerblue', alpha=0.2)
    plt.show()
    
plot_cumulative_returns(data, covid_timelines)
    
Кривые совокупной доходности с ноября 2019 г. по конец марта 2020 г.
Кривые совокупной доходности с ноября 2019 г. по конец марта 2020 г.

Доходность от нефти после объявления упала сильнее всего – в течение указанного периода почти на 60%. Резкое снижение показала и рентабельность индекса S&P500.

Секторальные показатели

До сих пор мы говорили о S&P500 в целом, но что происходит с секторами экономики, входящими в индекс? Построим график, который учитывает основные секторы рынка.

        def plot_sector(tl):
    sector_list = ['IHE', 'IYW', 'IYF', 'IYK', 'IYZ','ITM', 'IYE']

    columns = ['Pharma', 'Technology', 'Financials', 'Consumer Goods',
               'Telecom', 'Basic Materials', 'Energy']

    sector_data = pd.DataFrame()
    for inst in sector_list:
        try:
            sector_data[inst] = pdr.get_data_yahoo(inst, tl.first_case.iloc[0]-timedelta(days=30), 
                                        tl.last_date.iloc[0]+timedelta(days=365))['Adj Close']    
        except:
            pass

    sector_data.columns = columns
    plot_cumulative_returns(sector_data, tl)
plot_sector(covid_timelines)
    
Кривые совокупной доходности для отдельных секторов глобальной экономики
Кривые совокупной доходности для отдельных секторов глобальной экономики

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

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

Сценарий применения строгих мер

Атипичная пневмония

В 2002 г. вспышка пандемии захватила юг Китая, были инфицированы 8500 человек. Распространение болезни взяли под контроль теми же способами, что сегодня: изоляцией, карантином и отслеживанием контактов. Социальное дистанцирование позволило сдержать распространение, однако идентифицировать пневмонию было намного проще, чем COVID-19.

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

Временные зависимости распространения атипичной пневмонии (SARS) в 2003 г.
Временные зависимости распространения атипичной пневмонии (SARS) в 2003 г.

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

Ежедневное процентное изменение четырёх индексов в случае вспышки атипичной пневмонии 2002-2003 г.
Ежедневное процентное изменение четырёх индексов в случае вспышки атипичной пневмонии 2002-2003 г.

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

Кривые совокупной доходности с ноября 2002 г. по июль 2003 г. во время распространения SARS
Кривые совокупной доходности с ноября 2002 г. по июль 2003 г. во время распространения SARS

Посмотрим, как пошли дела после того, как кризис закончился. Голубая область соответствует времени, когда ВОЗ объявила, что кризис болезни преодолён.

Кривые совокупной доходности с ноября 2002 г. по июль 2004 г. (более широкий интервал)
Кривые совокупной доходности с ноября 2002 г. по июль 2004 г. (более широкий интервал)

После объявления ВОЗ наблюдалось быстрое восстановление показателей.

Сценарий широкого распространения заражения

В случае второго сценария речь пойдёт об Испанском гриппе («испанке»), который во время Первой мировой войны затронул почти 30% населения планеты, а также о так называемых Азиатском (H2N2) и Гонконгском (H3N2) гриппах, от которых пострадало около полумиллиона человек.

«Испанка»

Испанский грипп развивался тремя волнами: июнь-июль 1918 года, октябрь-декабрь 1918 года, январь-март 1919 года. На нижеприведённом графике использовался индекс Доу-Джонса (индекс S&P500 был предложен лишь в 1927 году):

Изменение индекса Доу-Джонса в 1918-1919 г. (<a href="https://www.macrotrends.net/1319/dow-jones-100-year-historical-chart" target="_blank" rel="noopener noreferrer nofollow">источник данных</a>)
Изменение индекса Доу-Джонса в 1918-1919 г. (источник данных)

С удивлением можно обнаружить, что рынок во время распространения «испанки» шёл вверх. Причина заключается в крупном предшествовавшем событии – Первой мировой войне. На рынке наблюдался восходящий тренд, связанный с восстановлением после войны.

Штаммы гриппа H2N2 и H3N2

Ниже приведены показатели совокупной доходности для S&P500 во время распространения соответственно Азиатского гриппа (1957-1959 гг.) и Гонконгского гриппа (1968-1971 гг.).

Совокупная доходность для S&amp;P500 во время распространения азиатского гриппа (H2N2)
Совокупная доходность для S&P500 во время распространения азиатского гриппа (H2N2)
Совокупная доходность для S&amp;P500 во время распространения гонконгского гриппа (H3N2)
Совокупная доходность для S&P500 во время распространения гонконгского гриппа (H3N2)

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

Заключение

Рынок не любит неопределённости. Когда объявляется чрезвычайное положение, он резко падает. Но как только предпринимаются необходимые шаги для сдерживания ситуации и ВОЗ объявляет её безопасной, рынок реагирует подъёмом на докризисный уровень, а в некоторых случаях даже превосходит его.

Расскажите в нашем обсуждении, как на работу вашей компании и лично на вас повлияло распространение коронавируса.

Источники

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ