Qlib 获取股票数据

Qlib 是由微软开发的一个开源量化投资研究框架,适合处理金融数据并进行量化分析。本教程将指导您如何使用 Qlib 获取股票数据。

环境准备

1. 安装 Python

确保您的电脑已安装 Python 3.7 或更高版本。您可以从 Python 官方网站 下载并安装。

2. 安装 Qlib

使用 pip 安装 Qlib。打开终端或命令行,运行以下命令:

pip install pyqlib

3. 验证安装

安装完成后,检查 Qlib 是否正确安装:

import qlib
print(qlib.__version__)

如果输出版本号,说明安装成功。

初始化 Qlib 和数据

1. 下载股票数据

Qlib 提供了一个默认的股票数据集(以中国 A 股为例)。您需要先初始化数据:

import qlib
from qlib.config import REG_CN
qlib.init(provider_uri="~/.qlib/qlib_data/cn_data", region=REG_CN)
  • provider_uri:指定数据存储路径,~/.qlib/qlib_data/cn_data 是默认路径。
  • region=REG_CN:表示使用中国市场数据。

运行后,Qlib 会自动下载中国 A 股的日频数据(若尚未下载)。数据将存储在 ~/.qlib/qlib_data/cn_data

2. 自定义数据源(可选)

如果您想使用其他数据源(如 Yahoo Finance 或其他市场数据),需要手动准备数据并转换为 Qlib 格式。Qlib 支持 CSV 格式的数据,具体格式要求请参考 Qlib 文档

获取股票数据

以下是一个简单的代码示例,用于获取指定股票的历史价格数据:

import qlib
from qlib.data import D

# 初始化 Qlib
qlib.init(provider_uri="~/.qlib/qlib_data/cn_data", region=REG_CN)

# 获取某只股票的数据(如中国平安,股票代码:SH600519)
stock_code = "SH600519"
start_date = "2020-01-01"
end_date = "2023-12-31"
fields = ["$open", "$high", "$low", "$close", "$volume"]

# 使用 D.features 获取数据
data = D.features([stock_code], fields, start_time=start_date, end_time=end_date)

# 打印前几行数据
print(data.head())

参数说明

  • stock_code:股票代码,格式为 市场代码 + 股票编号,如 SH600519(上海证券交易所的中国平安)。
  • fields:需要获取的字段,如开盘价($open)、收盘价($close)等。
  • start_timeend_time:数据的时间范围。

输出示例

运行上述代码后,您将得到一个 Pandas DataFrame,包含指定股票在指定时间段内的价格和成交量数据,类似以下格式:

                     $open   $high    $low  $close      $volume
instrument  datetime                                          
SH600519    2020-01-02  90.50  92.30  89.80  91.20  12345678.0
            2020-01-03  91.30  93.10  90.50  92.00  13456789.0
...

数据处理

1. 数据清洗

您可以使用 Pandas 处理获取的数据,例如:

# 去除缺失值
data = data.dropna()

# 计算日收益率
data["$return"] = data["$close"].pct_change()

2. 可视化

使用 Matplotlib 绘制收盘价曲线:

import matplotlib.pyplot as plt

# 提取收盘价
close_prices = data["$close"].unstack(level=0)

# 绘制
plt.figure(figsize=(10, 6))
plt.plot(close_prices, label="SH600519 Close Price")
plt.title("Stock Price Trend")
plt.xlabel("Date")
plt.ylabel("Price")
plt.legend()
plt.show()
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐