Пакет Python для простого извлечения финансовых данных

Часть 1. Простое решение для доступа к фундаментальным данным с меньшим количеством кода

Знакомство

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

Теперь финансовые данные могут быть извлечены с помощью python двумя разными способами. Первый способ заключается в использовании финансовых API, предлагаемых различными поставщиками, и выполнении вызовов API для получения желаемых данных. Второй способ — использовать пакеты/библиотеки Python с открытым исходным кодом для получения данных.

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

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

EOD

Прежде чем перейти к программированию, важно знать о пакете, который мы собираемся использовать в этой статье. eod — это библиотека Python с открытым исходным кодом, которая поддерживает огромное количество рыночных данных, что делает ее доступной для каждого трейдера. Этот пакет разработан компанией EOD Historical Data API (EODHD APIs), которая является крупным игроком на арене поставщиков финансовых API. Они создали этот проект с открытым исходным кодом с целью дать возможность начинающим программистам гораздо проще взаимодействовать со своими API.

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

Реализация Python

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

1. Importing Packages
2.
API Key Activation
3.
Fundamental Data
4. Historical Data
5. Intraday Data
6. Real-time Data

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

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

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

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

Первым и главным шагом настройки среды кодирования является импорт необходимых пакетов. В этой статье мы собираемся использовать семь различных пакетов: eod для извлечения финансовых данных, pandas для манипулирования данными, matplotlib для визуализации данных, datetime для работы с датой и временем, time для определенных функций, связанных со временем, termcolor для настройки печатного вывода и, наконец, mplfinance для финансовых визуализаций. Следующий код импортирует все упомянутые пакеты в нашу среду python:

from eod import EodHistoricalData
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
import time
from termcolor import colored as cl
import mplfinance as mf
plt.style.use('fivethirtyeight')
plt.rcParams['figure.figsize'] = [20, 10]

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

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

Активация API-ключа

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

api_key = '<YOUR API KEY>'
client = EodHistoricalData(api_key)

Код довольно прост. В первой строке мы храним секретный ключ API EODHD в api_key, а затем во второй строке мы используем класс EodHistoricalData, предоставляемый пакетом eod, для активации ключа API и сохранения ответа в client переменной.

Обратите внимание, что вам необходимо заменить <YOUR API KEY>> секретным ключом API EODHD. Помимо непосредственного хранения ключа API с текстом, существуют и другие способы повышения безопасности, такие как использование переменных среды и так далее.

Извлечение фундаментальных данных

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

ticker = 'AAPL.US'
aapl_f_info = client.get_fundamental_equity(ticker)
aapl_f_info_keys = list(aapl_f_info.keys())
for i in range(len(aapl_f_info_keys)):
print(cl(f'{i+1}. {aapl_f_info_keys[i]}', attrs = ['bold']))

В первой строке кода мы создаем переменную для хранения символа интересующего нас капитала, которым в нашем случае является Apple. Затем, используя get_fundamental_equity, предоставляемую пакетом eod, мы извлекаем фундаментальные данные Apple.

Эта функция состоит из двух параметров: ticker и filter_. В приведенном выше коде используется только ticker, которое принимает символ акции в качестве входных данных, что в нашем случае является Apple (AAPL. США). Поле filter_ будет использоваться далее в этой части статьи.

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

1. General
2. Highlights
3. Valuation
4. SharesStats
5. Technicals
6. SplitsDividends
7. AnalystRatings
8. Holders
9. InsiderTransactions
10. ESGScores
11. outstandingShares
12. Earnings
13. Financials

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

Но некоторые могут чувствовать себя немного ошеломленными огромными данными, поскольку они будут искать только конкретные детали компании. Здесь в игру вступает filter_, который мы обсуждали ранее.

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

earnings = client.get_fundamental_equity(ticker, filter_ = 'Earnings::History')
earnings_dates = list(earnings.keys())
cols = list(earnings[earnings_dates[0]].keys())
earnings_df = pd.DataFrame(columns = cols)
for i in range(len(earnings_dates)):
data = earnings[earnings_dates[i]]
earnings_df.loc[i] = data
earnings_df = earnings_df.drop('reportDate', axis = 1).set_index('date').dropna()
earnings_df = earnings_df.iloc[::-1]

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

<MainCategory>::<SubCategory 1>::<SubCategory 2>....

Здесь <MainCategory> относится к любой из тринадцати категорий, которые ранее были представлены в выходных данных, а <MainCategory> относится к подразделениям, присутствующим внутри каждой из основных категорий.<SubCategory> В приведенном выше коде мы указали до <SubCategory 1> но она может быть дополнительно сужена на основе остальных подразделений.

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

Изображение автора

Анализ данных

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

Во-первых, EPS относится к прибыли на акцию. Как следует из названия, он показывает, сколько денег компания зарабатывает на одной акции. В кадре данных у нас есть три столбца, связанных с EPS, а именно: epsActual , epsEstimate , epsDifference . epsActual epsEstimate Названия столбцов говорят сами за себя. Во-вторых

Процент неожиданности (surprisePercent) относится к прибыли, полученной сверх фактических оценок аналитиков за конкретный квартал. Например, в третьем ряду мы видим, что surprisePercent равен 10, что означает, что прибыль Apple за этот квартал превзошла оценки аналитиков на 10%.

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

earnings_df[['epsActual', 'epsEstimate', 'epsDifference']].plot()
plt.title('AAPL EARNINGS HISTORY')
earnings_df[['epsActual', 'epsEstimate', 'epsDifference']].cumsum().plot()
plt.title('AAPL EARNINGS HISTORY (CUMULATIVE)')

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

Изображения автора

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

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

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

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

Часть 2. Извлекайте исторические данные без особых усилий

Знакомство

Это вторая часть серии «Пакет Python для простого извлечения финансовых данных». В первой части мы увидели процесс извлечения фундаментальных данных о любых торгуемых активах с помощью пакета eod python, предоставляемого EOD Historical Data (EODHD). В дополнение к этому, мы также провели некоторый анализ данных, чтобы извлечь выводы из извлеченной информации.

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

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

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

from eod import EodHistoricalData
import pandas as pd
import matplotlib.pyplot as plt

plt.style.use('fivethirtyeight')
plt.rcParams['figure.figsize'] = [20, 10]

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

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

Активация API-ключа

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

api_key = '<YOUR API KEY>'
client = EodHistoricalData(api_key)

Код довольно прост. В первой строке мы храним секретный ключ API EODHD в api_key, а затем во второй строке мы используем класс EodHistoricalData, предоставляемый пакетом eod, для активации ключа API и сохранения ответа в client переменной.

Обратите внимание, что вам необходимо заменить <YOUR API KEY>> секретным ключом API EODHD. Помимо непосредственного хранения ключа API с текстом, существуют и другие способы повышения безопасности, такие как использование переменных среды и так далее.

Извлечение исторических данных

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

ticker = 'MSFT.US'
start_date = '2010-01-01'
end_date = '2022-10-01'

json_resp = client.get_prices_eod(ticker, period = 'd', from_ = start_date, to = end_date, order = 'a')
msft_data = pd.DataFrame(json_resp)
msft_data = msft_data.set_index('date')

msft_data.tail()

В приведенном выше коде мы используем get_prices_eod для извлечения исторических данных об акциях Microsoft за последнее десятилетие. Функция состоит из следующих параметров:

  • ticker, в котором должен быть указан символ интересующей нас акции, для извлечения данных
  • Параметр period относится к временному интервалу между каждой точкой данных. В нашем случае мы указали d, что указывает на день, но есть такие варианты, как w для недели и m для месяца.
  • from_ и to, которые указывают дату начала и окончания данных соответственно. Формат ввода должен быть «ГГГГ-ММ-ДД»
  • Параметр order, который является необязательным параметром, который можно использовать для упорядочивания кадра данных по возрастанию (a) или по убыванию (d). Он заказывается исходя из дат.

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

Изображение автора

Теперь, когда у нас есть чистые исторические данные Microsoft за 10 лет, давайте проанализируем их, чтобы сделать некоторые интересные выводы.

Анализ исторических данных

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

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

Давайте начнем с расчета и визуализации ежедневной и совокупной доходности Microsoft, чтобы получить представление об истории доходности акций.

returns = msft_data.close.pct_change().dropna()
c_returns = returns.cumsum()

returns.plot()
plt.title('MSFT DAILY RETURNS')
plt.show()

c_returns.plot(kind = 'area', stacked = False)
plt.title('MSFT CUMULATIVE RETURNS')
plt.show()

В приведенном выше коде первые две строки связаны с вычислением как ежедневных, так и совокупных доходов Microsoft. Их можно легко рассчитать с помощью функций Pandas pct_change()() (для ежедневной доходности) и cumsum()для кумулятивной доходности). Остальная часть кода сосредоточена на построении данных возврата. На выходе будут два графика, которые выглядят следующим образом:

Изображения автора

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

Теперь, когда у нас есть некоторые базовые знания о доходности акций и их эффективности, пришло время провести сравнительный анализ. Наиболее важным аспектом проведения сравнительного анализа является выбор правильных запасов. Поскольку Microsoft можно отнести к категории технологических компаний, для исследования можно с уверенностью рассматривать акции компаний MAANG (Meta, Apple, Amazon, Netflix и Google). Давайте сначала извлечем исторические данные этих пяти акций.

meta_data = pd.DataFrame(client.get_prices_eod('META.US', period = 'd', from_ = start_date, to = end_date, order = 'a'))
aapl_data = pd.DataFrame(client.get_prices_eod('AAPL.US', period = 'd', from_ = start_date, to = end_date, order = 'a'))
amzn_data = pd.DataFrame(client.get_prices_eod('AMZN.US', period = 'd', from_ = start_date, to = end_date, order = 'a'))
nflx_data = pd.DataFrame(client.get_prices_eod('NFLX.US', period = 'd', from_ = start_date, to = end_date, order = 'a'))
googl_data = pd.DataFrame(client.get_prices_eod('GOOGL.US', period = 'd', from_ = start_date, to = end_date, order = 'a'))

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

meta_rets = meta_data.adjusted_close.pct_change().dropna()
aapl_rets = aapl_data.adjusted_close.pct_change().dropna()
amzn_rets = amzn_data.adjusted_close.pct_change().dropna()
nflx_rets = nflx_data.adjusted_close.pct_change().dropna()
googl_rets = googl_data.adjusted_close.pct_change().dropna()

meta_rets.plot(color = 'blue', alpha = 0.2)
amzn_rets.plot(color = 'blue', alpha = 0.2)
aapl_rets.plot(color = 'blue', alpha = 0.2)
nflx_rets.plot(color = 'blue', alpha = 0.2)
googl_rets.plot(color = 'blue', alpha = 0.2)
returns.plot(linewidth = 1, color = 'red')
plt.title('MSFT DAILY RETURNS COMPARISON')

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

Изображение автора

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

meta_c_rets = meta_rets.cumsum()
aapl_c_rets = aapl_rets.cumsum()
amzn_c_rets = amzn_rets.cumsum()
nflx_c_rets = nflx_rets.cumsum()
googl_c_rets = googl_rets.cumsum()

meta_c_rets.plot(alpha = 0.2, label = 'META', color = 'darkviolet')
amzn_c_rets.plot(alpha = 0.2, label = 'AMZN', color = 'orange')
aapl_c_rets.plot(alpha = 0.2, label = 'AAPL', color = 'black')
nflx_c_rets.plot(alpha = 0.2, label = 'NFLX', color = 'red')
googl_c_rets.plot(alpha = 0.2, label = 'GOOGL', color = 'green')
c_returns.plot(label = 'MSFT', linewidth = 5, color = 'blue')
plt.title('MSFT RETURNS COMPARISON (CUMULATIVE)')
plt.legend()

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

Изображение автора

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

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

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

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

Часть 3. Научитесь извлекать внутридневные данные за считанные секунды

Знакомство

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

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

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

Первым и главным шагом настройки среды кодирования является импорт необходимых пакетов. В этой статье мы собираемся использовать пять различных пакетов: eod для извлечения финансовых данных, pandas для манипулирования данными и datetimetime для работы с датой и временем и, наконец, для финансовой визуализации mplfinance. Следующий код импортирует все упомянутые пакеты в нашу среду Python:

from eod import EodHistoricalData # data extraction
import pandas as pd # data manipulation
import datetime as dt # working with dates
import time # time-related functions
import mplfinance as mf # financial visualization

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

Активация API-ключа

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

api_key = '<YOUR API KEY>'
client = EodHistoricalData(api_key)

Код довольно прост. В первой строке мы храним секретный ключ API EODHD в api_key, а затем во второй строке мы используем класс EodHistoricalData, предоставляемый пакетом eod, для активации ключа API и сохранения ответа в client переменной.

Обратите внимание, что вам необходимо заменить <YOUR API KEY>> секретным ключом API EODHD. Помимо непосредственного хранения ключа API с текстом, существуют и другие способы повышения безопасности, такие как использование переменных среды и так далее.

Извлечение внутридневных данных

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

start_date = dt.datetime.utcnow() - dt.timedelta(10)
end_date = dt.datetime.utcnow()
unix_start = time.mktime(start_date.timetuple())
unix_end = time.mktime(end_date.timetuple())

tsla_resp = client.get_prices_intraday('TSLA.US', interval = '5m', from_ = unix_start, to = unix_end)
tsla_intraday = pd.DataFrame(tsla_resp)

tsla_intraday = tsla_intraday.dropna()
tsla_intraday.tail()

Приведенный выше код можно разделить на три раздела. В первом разделе мы выполняем некоторые действия, связанные со временем. Во-первых, мы используем пакет datetime для получения начальной и конечной дат внутридневных данных, затем мы используем функцию mktime, предоставляемую пакетом time, для преобразования начальной и конечной дат в формат даты Unix, и они хранятся в unix_start и unix_end соответственно. Цель этого состоит в том, чтобы функция eod для извлечения внутридневных данных ожидала, что входные данные начальной и конечной дат будут в формате даты Unix.

Второй раздел посвящен составлению внутридневных данных TSLA. Код, приведенный в этом разделе, говорит сам за себя. Сначала мы используем функцию get_prices_intraday для извлечения внутридневных цен акций TSLA за последние десять дней и сохраняем ответ JSON в переменной tsla_resp. Эта функция принимает символ акции, временной интервал между точками данных, а также начальную и конечную даты в качестве параметров. После этого мы преобразуем ответ JSON в кадр данных Pandas.

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

Изображение автора

Визуализация данных

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

tsla_ohlcv = tsla_intraday.iloc[:,3:]
tsla_ohlcv.index = pd.to_datetime(tsla_intraday.datetime)
tsla_ohlcv.tail()

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

Изображение автора

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

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

mf.plot(tsla_ohlcv.iloc[-50:, :4], type = ‘ohlc’)

Всего одной строкой кода вы можете создать красивую диаграмму OHLC, подобную этой:

Изображение автора

Теперь для создания свечного графика все, что требуется, это изменить type с ohlc на candle, и все то же самое.

mf.plot(tsla_ohlcv.iloc[:50, :4], type = 'candle')

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

Изображение автора

Теперь пришло время улучшить игру. Хотя предыдущие визуализации выглядят чистыми и хорошими, их можно улучшить в различных аспектах. К счастью, mplfinance предоставляет множество полезных функций для настройки графиков и вывода их на новый уровень. Функции включают в себя изменение темы графика, добавление технических индикаторов и других показателей, таких как объем и так далее. Следующий код сгенерирует очень профессионально выглядящую диаграмму:

mf.plot(tsla_ohlcv[80:150], mav = (8,15), 
type = 'candle', volume = True,
style = 'yahoo', title = 'TSLA Intraday Prices')

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

Изображение автора

Существует еще множество способов улучшить внешний вид графика с помощью функций, предоставляемых mplfinance . Вы можете добавить несколько подграфиков, чтобы вставить множество других технических индикаторов, таких как MACD, RSI и так далее. Есть также различные другие темы, с которыми можно поиграть, такие как binanceibd и множество других интересных. Кроме того, mplfinance прокладывает путь к созданию различных сложных визуализаций, таких как диаграмма Ренко и диаграмма Point & Figure, но это темы для другой статьи.

Заключительные мысли!

Пакет EOD от EOD Historical Data является идеальным решением для извлечения внутридневных данных о ценных бумагах с простым подходом со стороны кодирования.eod Как начинающие, так и продвинутые программисты могут использовать пакет eod для легкого доступа к финансовым данным.

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

Источник