证券、财务与衍生品数据
本章介绍 QMT 内置 Python 中证券基本信息、财务数据和衍生品数据的获取方法。
证券基本信息
获取股票信息
# 获取股票基本信息
info = ContextInfo.get_stock_info('000001.SZ')
# info 包含:名称、上市日期、所属行业等
获取证券类型
# 判断证券类型
sec_type = ContextInfo.get_security_type('000001.SZ')
# 返回值:stock(股票), fund(基金), bond(债券), index(指数) 等
获取上市状态
# 检查是否已上市
is_listed = ContextInfo.is_stock_listed('000001.SZ')
财务数据
获取财务指标
# 获取财务数据
financial = ContextInfo.get_financial_data(
['000001.SZ'],
['PE', 'PB', 'ROE', '净利润'],
'20231231', # 报告期
'20231231',
)
常用财务指标
| 指标 | 说明 | 数据类型 |
|---|---|---|
PE |
市盈率 | float |
PB |
市净率 | float |
ROE |
净资产收益率 | float |
EPS |
每股收益 | float |
净利润 |
净利润 | float |
营业收入 |
营业收入 | float |
总资产 |
总资产 | float |
负债合计 |
总负债 | float |
获取利润表
# 获取利润表数据
income = ContextInfo.get_income_data(
'000001.SZ',
'20231231',
)
获取资产负债表
# 获取资产负债表数据
balance = ContextInfo.get_balance_sheet_data(
'000001.SZ',
'20231231',
)
指数数据
获取指数成分股
# 获取沪深300成分股
stocks = ContextInfo.get_stock_list_in_sector('沪深300')
print(f'沪深300成分股数量: {len(stocks)}')
# 获取中证500成分股
stocks = ContextInfo.get_stock_list_in_sector('中证500')
获取指数权重
# 获取指数成分权重
weights = ContextInfo.get_index_weights('000300.SH', '20241201')
# weights: {stock_code: weight, ...}
常用指数代码
| 指数名称 | 代码 |
|---|---|
| 上证指数 | 000001.SH |
| 深证成指 | 399001.SZ |
| 沪深300 | 000300.SH |
| 中证500 | 000905.SH |
| 创业板指 | 399006.SZ |
板块数据
获取板块列表
# 获取所有板块
sectors = ContextInfo.get_sector_list()
for sector in sectors:
print(sector)
获取板块成分股
# 获取指定板块的成分股
stocks = ContextInfo.get_stock_list_in_sector('银行')
stocks = ContextInfo.get_stock_list_in_sector('半导体')
获取板块分类
| 分类 | 说明 |
|---|---|
| 申万行业 | 申万一级行业分类 |
| 证监会行业 | 证监会行业分类 |
| 概念板块 | 热门概念板块 |
行权与分红
获取除权除息信息
# 获取除权除息数据
dividend = ContextInfo.get_dividend_data('000001.SZ', '20200101', '20241201')
获取复权数据
# 前复权
close_fq = ContextInfo.get_history_data('close', 20, '', True, 1)
# 后复权
close_bq = ContextInfo.get_history_data('close', 20, '', True, 2)
提示
回测时建议使用前复权数据,避免除权除息造成的价格跳变。
衍生品数据
期货数据
# 获取期货合约信息
info = ContextInfo.get_instrument_detail('IF2412.CCFX')
# 包含:合约乘数、保证金率、交割日等
期权数据
# 获取期权合约信息
info = ContextInfo.get_instrument_detail('10004868.SH')
# 包含:行权价、到期日、标的等
期货连续合约
| 合约代码 | 说明 |
|---|---|
IF.CCFX |
沪深300主力连续 |
IC.CCFX |
中证500主力连续 |
IH.CCFX |
上证50主力连续 |
数据下载管理
批量下载
def init(ContextInfo):
# 批量下载多个品种的数据
stocks = ['000001.SZ', '600000.SH', '510050.SH']
for stock in stocks:
ContextInfo.do_download_history_data(
stock, '1d', '20200101', '20241201'
)
数据更新检查
技巧
定期检查数据更新,确保使用最新数据:
# 检查最后一条数据的日期
closes = ContextInfo.get_history_data('close', 1)
if closes:
last_date = ContextInfo.get_bar_timetag(ContextInfo.barpos)
print(f'数据最后日期: {last_date}')