Получение финансовых данных на 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):
Пример
# Шанхайская фондовая биржа, код акций компании 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), включая базовую информацию, исторические рыночные данные, дивиденды, дробление акций, финансовую отчётность и т. д.:
Пример
# Создать объект 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, содержащего несколько кодов акций, и использует этот объект для доступа к информации, историческим данным и корпоративным действиям для разных акций:
Пример
# Инициализировать объект 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) за прошлый месяц:
Пример
# Используйте 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