Получение финансовых данных на Python

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

Библиотека, используемая в примерах на этом сайте, —yfinance。

Установка выполняется следующим образом:

pip install yfinance

yfinanceИспользование библиотекиyf.download()Функция для загрузки финансовых данных.

Ниже приведён его базовый синтаксис:

yf.download(tickers, start=None, end=None, actions=False, threads=True)

Описание параметров:

tickers:

  • Описание:Код финансового инструмента (акции, индекса, фонда и т. д.), для которого загружаются данные.
  • Тип:Строка (один код) или список (несколько кодов).
  • Пример: "AAPL"、["AAPL", "GOOGL"]。

start:

  • Описание:Дата начала загрузки данных.
  • Тип:String (формат даты: "YYYY-MM-DD").
  • Значение по умолчанию:None, что означает начать с самой ранней доступной даты.
  • Пример: "2020-01-01"。

end:

  • Описание:Дата окончания загрузки данных.
  • Тип:String (формат даты: "YYYY-MM-DD").
  • Значение по умолчанию:None, что означает окончание на самой поздней доступной дате.
  • Пример: "2022-01-01"。

actions:

  • Описание:Включать ли дивиденды по акциям, дробление и другую информацию.
  • Тип:Boolean.
  • Значение по умолчанию: False.
  • Пример: actions=True。

threads:

  • Описание:Использовать ли многопоточность для загрузки данных.
  • Тип:Boolean.
  • Значение по умолчанию: True.
  • Пример: threads=False。

В yfinance к кодам китайских A-акций необходимо добавлять суффикс биржи. Суффикс Шанхайской фондовой биржи (SSE) —.SS, а суффикс Шэньчжэньской фондовой биржи (SZSE) —.SZ。

Ниже приведён простой пример использованияyfinanceдля получения данных об акциях Kweichow Moutai (600519.SS):

Пример

import yfinance as yf

# Шанхайская фондовая биржа, код акций компании Moutai
symbol = "600519.SS"

# Или, Шэньчжэньская фондовая биржа, код акций компании Luzhou Laojiao
# luzhou_laojiao_szse = yf.Ticker('000568.SZ')

# Получить данные об акциях компании Moutai
maotai_data = yf.download(symbol, start="2022-01-01", end="2023-11-01")

# Вывести первые несколько строк данных
print(maotai_data.head())

В приведённом выше коде мы использовали функцию download библиотеки yfinance, чтобы получить данные об акциях Kweichow Moutai (600519.SS) за период с 1 января 2022 г. по 1 ноября 2023 г. Возвращаемые данные представляют собой Pandas DataFrame, содержащий такую информацию, как Date, Open, High, Low, Close, Volume и Adjusted Close (Adj Close).

Для содержимого Pandas DataFrame см.:Pandas Data Structures - DataFrame

Выполнение приведенного выше кода дает следующий вывод:

# python3 mt.py
[*********************100%%**********************]  1 of 1 completed
                  Open         High          Low        Close    Adj Close   Volume
Date                                                                               
2022-01-04  2055.00000  2068.949951  2014.000000  2051.229980  1973.508057  3384262
2022-01-05  2045.00000  2065.000000  2018.000000  2024.000000  1947.309937  2839551
2022-01-06  2022.01001  2036.000000  1938.510010  1982.219971  1907.112793  5179475
2022-01-07  1975.00000  1988.880005  1939.319946  1942.000000  1868.416870  2981669
2022-01-10  1928.01001  1977.000000  1917.550049  1966.000000  1891.507568  2962670

Класс Ticker

Класс Ticker библиотеки yfinance используется для получения информации и данных в реальном времени по конкретному финансовому инструменту.

TickerКонструктор класса:

  • Использование:yf.Ticker('AAPL')
  • Описание: СоздаётTickerобъект, представляющий конкретную акцию или финансовый актив. Передайте код акции в скобках (например, 'AAPL').

historyМетоды:

  • Использование:ticker.history(period='1d', interval='1m')
  • Описание: Получение исторических данных о ценах.periodПараметр задаёт временной интервал, который может быть'1d'(один день),'1mo'(один месяц),'1y'(один год), и т. д.;intervalПараметр задаёт временной интервал, который может быть'1m'(одна минута),'1d'(один день),'1wk'(одна неделя) и т. д.

infoАтрибуты:

  • Использование:ticker.info
  • Описание: Получение базовой информации об акции, такой как название компании, отрасль, рыночная капитализация и т. д.

dividendsАтрибуты:

  • Использование:ticker.dividends
  • Описание: Получение данных о дивидендах; возвращается DataFrame, содержащий даты и суммы дивидендов.

splitsАтрибуты:

  • Использование:ticker.splits
  • Описание: Получение данных о дроблении акций; возвращается DataFrame, содержащий даты и коэффициенты дробления.

recommendationsАтрибуты:

  • Использование:ticker.recommendations
  • Описание: Получение рекомендаций по акциям; возвращается DataFrame, содержащий даты и информацию о рекомендациях.

major_holdersАтрибуты:

  • Использование:ticker.major_holders
  • Описание: Получение информации о крупных держателях акции; возвращается DataFrame, содержащий основных акционеров и их доли владения.

sustainabilityАтрибуты:

  • Использование:ticker.sustainability
  • Описание: Получение информации об устойчивом развитии для акции; возвращается DataFrame, содержащий экологические, социальные и управленческие (ESG) показатели.

actionsАтрибуты:

  • Использование:ticker.actions
  • Описание: Получение данных о корпоративных действиях по акции, включая дробления, дивиденды и т. д.

calendarАтрибуты:

  • Использование:ticker.calendar
  • Описание: Получение информации о финансовом календаре компании, например дат публикации квартальной отчётности и т. д.

Следующий код использует класс Ticker из библиотеки yfinance для получения информации об акциях Microsoft Corporation (код акции: MSFT), включая базовую информацию, исторические рыночные данные, дивиденды, дробление акций, финансовую отчётность и т. д.:

Пример

import yfinance as yf

# Создать объект Ticker, представляющий операции с данными об акциях Microsoft
msft = yf.Ticker("MSFT")

# Получить всю информацию об акциях
msft.info

# Получить исторические рыночные данные, вот данные за прошлый месяц
hist = msft.history(period="1mo")

# Отобразить метаданные исторических данных (требуется сначала вызвать функцию history())
msft.history_metadata

# Отобразить информацию о корпоративных действиях (дивиденды, дробления акций, прирост капитала)
msft.actions
msft.dividends
msft.splits
msft.capital_gains  # Применимо только к взаимным фондам и биржевым инвестиционным фондам (ETF)

# Отобразить количество акций в обращении
msft.get_shares_full(start="2022-01-01", end=None)

# Отобразить финансовую отчётность:
# - Отчёт о прибылях и убытках
msft.income_stmt
msft.quarterly_income_stmt
# - Бухгалтерский баланс
msft.balance_sheet
msft.quarterly_balance_sheet
# - Отчёт о движении денежных средств
msft.cash
msft.quarterly_cashflow
# Для получения дополнительных параметров обратитесь к `Ticker.get_income_stmt()`

# Отобразить информацию об акционерах
msft.major_holders
msft.institutional_holders
msft.mutualfund_holders

# Показать будущие и исторические даты отчётности, возвращая по умолчанию данные не более чем за 4 будущих квартала и 8 прошедших кварталов.
# Примечание: если требуется больше информации, можно использовать msft.get_earnings_dates(limit=XX), где XX — увеличенное значение параметра limit.
msft.earnings_dates

# Отобразить международный идентификационный номер ценных бумаг (ISIN) — *экспериментальная функция*
# ISIN = международный идентификационный номер ценных бумаг
msft.isin

# Отобразить даты истечения опционов
msft.options

# Отобразить новости
msft.news

# Получить цепочку опционов для конкретной даты истечения
opt = msft.option_chain('YYYY-MM-DD')
# Доступ к данным можно получить через opt.calls, opt.puts

Получение данных по нескольким акциям

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

Пример

import yfinance as yf

# Инициализировать объект Tickers, содержащий несколько кодов акций
tickers = yf.Tickers('msft aapl goog')

# Пример использования: доступ к информации по каждой акции
tickers.tickers['MSFT'].info  # Получить базовую информацию о Microsoft (MSFT)
tickers.tickers['AAPL'].history(period="1mo")  # Получить исторические данные для Apple (AAPL) за прошлый месяц
tickers.tickers['GOOG'].actions  # Получить информацию о корпоративных действиях для Google (GOOG) (дивиденды, дробление акций и т. д.)

Скачать исторические данные

Следующий код использует библиотекуyfinanceдля скачивания исторических рыночных данных для ETF S&P 500 (SPY) и Apple (AAPL) за прошлый месяц:

Пример

import yfinance as yf

# Используйте yfinance для скачивания исторических рыночных данных для ETF S&P 500 (SPY) и Apple (AAPL)
data = yf.download("SPY AAPL", period="1mo")

period="1mo"Параметр указывает, что диапазон времени загрузки — прошлый месяц.


Больше финансовых библиотек

Вот некоторые библиотеки, в основном используемые для получения финансовых данных:

yfinance

  • Официальный сайт: yfinance
  • Введение:yfinance — это библиотека для получения данных Yahoo Finance. Она предоставляет простой API, который позволяет пользователям получать финансовые данные, такие как акции, индексы и т. д.
  • Установка: pip install yfinance

Tushare

  • Официальный сайт: Tushare
  • Введение:Tushare — это открытая платформа финансовых данных, которая предоставляет интерфейсы для получения разнообразных данных финансового рынка, таких как акции, фьючерсы, фонды и т. д. Она поддерживает Python и предоставляет простой в использовании API.
  • Установка: pip install tushare

pandas-datareader

  • Официальный сайт: pandas-datareader
  • Введение:pandas-datareader — это библиотека, которая получает финансовые данные из нескольких онлайн-источников данных (таких как Yahoo Finance, Google Finance и т. д.).
  • Установка: pip install pandas-datareader
  • Официальный сайт: baostock

baostock

  • Официальный сайт: baostock
  • Введение:baostock — это библиотека, которая бесплатно предоставляет финансовые данные, такие как акции A, гонконгские акции, опционы и т. д. Она предоставляет интерфейс Python, чтобы пользователи могли удобно получать данные.
  • Установка: pip install baostock

alpha_vantage

  • Официальный сайт: alpha_vantage
  • Введение:alpha_vantage предоставляет простой API, который можно использовать для получения финансовых данных, таких как акции, иностранная валюта и т. д. Он также поддерживает расчёт некоторых технических индикаторов.
  • Установка: pip install alpha_vantage

quandl

  • Официальный сайт: Quandl
  • Введение:Quandl предоставляет финансовые и экономические данные из различных источников. Он предоставляет библиотеку Python, чтобы пользователи могли удобно получать данные.
  • Установка: pip install quandl

ccxt

  • Официальный сайт: ccxt
  • Введение:ccxt — это библиотека с открытым исходным кодом для торговли и получения финансовых данных, поддерживающая получение данных с нескольких бирж.
  • Установка: pip install ccxt

AKShare

  • Официальный сайт: AKShare
  • Введение:AKShare — это библиотека интерфейсов финансовых данных на Python. Она нацелена на предоставление набора инструментов для таких финансовых продуктов, как акции, фьючерсы, опционы, фонды, иностранная валюта, облигации, индексы и криптовалюты, охватывая фундаментальные данные, рыночные данные в реальном времени и исторические данные, а также производные данные, от сбора данных, очистки данных до хранения данных. В основном используется для целей академических исследований.
  • Установка: pip install akshare
Другие расширения