证券、财务与衍生品数据

本章介绍 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}')