Короткий и приятный способ отметить последние экономические события

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

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

Поскольку я не очень люблю использовать инструменты внешних экономических календарей, а создавать вещи самостоятельно — моя сильная сторона, я всегда использую для этой задачи Python, а с помощью API-интерфейсов EOD Historical Data (EODhd) этот процесс упрощается. В этой статье мы будем создавать два разных типа экономических календарей, используя API EOD Historical Data для экономических календарей в Python. Без лишних слов, давайте погрузимся в статью!

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

Импорт пакетов

Давайте сначала начнем с импорта необходимых пакетов в нашу среду Python, поскольку это основной процесс в любом проекте программирования. В этой статье нам понадобятся только пакеты Requests для вызовов API и Pandas для работы с данными. Если вы еще не установили эти два пакета, введите следующие строки кода в командной строке:

pip install requests
pip install pandas

После установки пакетов мы теперь можем импортировать их в нашу среду Python, используя следующий код:

import requests
import pandas as pd
api_key = 'YOUR API KEY'

Теперь мы успешно импортировали необходимые пакеты в нашу среду вместе с сохранением ключа API в переменной api_key.

Экономический календарь доходов

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

В этой статье мы создадим два разных типа календарей доходов: календарь предстоящих доходов и календарь исторических доходов по конкретной акции. Начнем с первого типа календаря.

Календарь предстоящих доходов

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

def get_upcoming_earnings(start_report_date, end_report_date, currency, api_key, n_limit):
    
    url = f'https://eodhistoricaldata.com/api/calendar/earnings?api_token={api_key}&fmt=json&from={start_report_date}&to={end_report_date}'
    u_earnings = requests.get(url).json()
    
    u_earnings_df = pd.DataFrame(u_earnings['earnings']).drop('before_after_market', axis = 1).fillna(0)
    u_earnings_df = u_earnings_df[u_earnings_df.currency == f'{currency}']
    u_earnings_df = u_earnings_df[u_earnings_df.actual != 0]
    u_earnings_df = u_earnings_df.rename(columns = {'code':'stock'})
    u_earnings_df = u_earnings_df.iloc[-n_limit:]
    u_earnings_df.index = range(len(u_earnings_df))
    
    return u_earnings_df

us_stocks_u_earnings = get_upcoming_earnings('2021-11-23', '2021-11-26', 'USD', api_key, 10)
us_stocks_u_earnings

Давайте теперь разберем представленный выше код. Во-первых, мы определяем функцию с именем get_upcoming_earnings, которая принимает в качестве параметров следующее: начальную дату календаря доходов (start_report_date), валюту данных о доходах (currency), конечную дату календаря доходов (end_report_date), ключ API. (api_key) и, наконец, длина вывода (n_limit).

Внутри функции мы сначала сохраняем URL-адрес API в переменной url, а затем делаем вызов API, используя функцию get, предоставляемую пакетом Requests, для извлечения данных в формате JSON. Давайте теперь уделим минуту, чтобы взглянуть на структуру URL-адреса API. Это URL-адрес, используемый внутри определенной выше функции:

https://eodhistoricaldata.com/api/calendar/earnings?api_token={api_key}&fmt=json&from={start_report_date}&to={end_report_date}

Первый параметр в URL — это параметр api_token, где мы должны указать ключ API. Второй параметр — это параметр fmt, который является необязательным, где мы должны указать тип вывода, который мы хотим, либо JSON, либо CSV. Третий и четвертый параметры — это параметры from и to, в которых необходимо указать дату начала и окончания календаря доходов.

Возвращаясь к коду, после сохранения ответа API в переменной data мы преобразовываем его в кадр данных Pandas вместе с некоторыми манипуляциями с данными и сохраняем его в другой переменной u_earnings_df . Следующие строки кода представляют собой дальнейшие манипуляции с данными, выполняемые на основе заданных входных данных. Наконец, мы возвращаем окончательный фрейм данных и вызываем созданную функцию для построения календаря предстоящих доходов, который выглядит следующим образом:

Исторический календарь доходов

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

def get_historical_earnings(stock, start_date, api_key):
    
    url = f'https://eodhistoricaldata.com/api/calendar/earnings?api_token={api_key}&fmt=json&symbols={stock}&from={start_date}'
    h_earnings = requests.get(url).json()
    h_earnings_df = pd.DataFrame(h_earnings['earnings']).rename(columns = {'code':'stock'})
    
    return h_earnings_df

aapl_h_earnings = get_historical_earnings('AAPL.US', '2020-01-01', api_key)
aapl_h_earnings

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

Во-первых, это параметры функции. Определенная выше функция имеет три параметра: символ акции (stock), начальную дату данных о доходах (start_date) и, наконец, ключ API (api_key). Второй — URL-адрес API. Между URL-адресами этого раздела и предыдущих нет большой разницы, но мы просто добавляем еще один параметр, параметр stock, чтобы указать акции, по которым мы хотели бы получить доступ к историческим данным о доходах. Результатом функции является календарь, который выглядит следующим образом:

Календарь IPO

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

def get_upcoming_ipos(start_report_date, end_report_date, api_key):
    
    url = f'https://eodhistoricaldata.com/api/calendar/ipos?api_token={api_key}&fmt=json&from={start_report_date}&to={end_report_date}'
    u_ipos = requests.get(url).json()
    u_ipos_df = pd.DataFrame(u_ipos['ipos']).drop('name', axis = 1).rename(columns = {'code':'stock'}).fillna(0)
    u_ipos_df = u_ipos_df[u_ipos_df.amended_date != 0]
    u_ipos_df = u_ipos_df[u_ipos_df.stock != 'N/A']
    u_ipos_df.index = range(len(u_ipos_df))
    
    return u_ipos_df

upcoming_ipos = get_upcoming_ipos('2021-11-20', '2021-11-26', api_key)
upcoming_ipos

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

https://eodhistoricaldata.com/api/calendar/ipos?api_token={api_key}&fmt=json&from={start_report_date}&to={end_report_date}

URL-адрес API не так уж отличается от тех, что мы видели раньше. В предыдущих URL-адресах мы будем извлекать данные со страницы «Прибыль» (/calendar/earnings), но, поскольку мы хотим получить доступ к информации другого типа, в нашем случае с данными IPO мы извлекаем данные из «IPO». страница (/calendar/ipos). Говоря о параметрах, они почти такие же, и в этой области ничего особенного не происходит. Результатом будет календарь IPO, состоящий из всех основных деталей, который выглядит следующим образом:

Заключительные примечания

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

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

С учетом сказанного вы дошли до конца статьи. Надеюсь, вы узнали что-то новое и полезное. Кроме того, если вы хотите увидеть оригинальную документацию для получения дополнительной информации, просмотрите ее по этой ссылке: https://eodhistoricaldata.com/financial-apis/calendar-upcoming-earnings-ipos-and-splits/