🚀 AI 一键生成 qmt 策略代码
立即体验

QMT 平台如何基于资产负债表 (ASHAREBALANCESHEET) 进行资产负债率财务选股?(附 Python 源码)

qmt | 发布时间: 2026/8/2
以下内容由 EasyQuant 生成。

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: QMT 财务选股:基于资产负债表 (ASHAREBALANCESHEET) 的资产负债率筛选

Question: 如何使用 get_financial_data 提取资产负债表数据并计算资产负债率?

解决方案

QMT 财务选股:基于资产负债表 (ASHAREBALANCESHEET) 的资产负债率筛选

在量化投资中,财务基本面选股是构建中长期选股策略的重要手段。资产负债率(负债合计 / 资产总计)是衡量企业财务风险与偿债能力的关键指标。

本文将介绍如何在 QMT (迅投 Quant) 平台中使用 ContextInfo.get_financial_data() 接口提取资产负债表数据并计算资产负债率。


1. 核心接口与字段说明

QMT 提供了读取本地财务数据的 Python API 接口 ContextInfo.get_financial_data。要计算资产负债率,需要获取以下两个资产负债表 (ASHAREBALANCESHEET) 字段:

  • 负债合计: tot_liab (中文字段:负债合计ASHAREBALANCESHEET.tot_liab)
  • 资产总计: tot_assets (中文字段:资产总计ASHAREBALANCESHEET.tot_assets)

接口参数说明

ContextInfo.get_financial_data(fieldList, stockList, startDate, endDate, report_type='announce_time')
  • fieldList: 财报字段列表,如 ['ASHAREBALANCESHEET.tot_liab', 'ASHAREBALANCESHEET.tot_assets']
  • stockList: 目标股票列表
  • startDate / endDate: 查询日期范围(格式:YYYYMMDD
  • report_type: 时间类型,默认 'announce_time'(按公告日),或 'report_time'(按报告期)

2. 核心提取与计算逻辑

计算公式:
$$\text{资产负债率} = \frac{\text{负债合计 (tot_liab)}}{\text{资产总计 (tot_assets)}} \times 100%$$

示例代码

#coding:gbk
import pandas as pd

def init(ContextInfo):
    # 设定股票池(以沪深300为例)
    stocks = ContextInfo.get_stock_list_in_sector('沪深300')
    ContextInfo.set_universe(stocks)

def handlebar(ContextInfo):
    # 仅在最后一根 Bar 上执行选股
    if not ContextInfo.is_last_bar():
        return

    stocks = ContextInfo.get_universe()
    fields = ['ASHAREBALANCESHEET.tot_liab', 'ASHAREBALANCESHEET.tot_assets']
    
    # 获取财务数据
    df_financial = ContextInfo.get_financial_data(fields, stocks, '20230101', '20231231', report_type='announce_time')
    
    # 筛选资产负债率小于 50% 的股票
    selected_stocks = []
    for stock in stocks:
        try:
            if isinstance(df_financial, dict) and stock in df_financial:
                df_stock = df_financial[stock]
                tot_liab = df_stock['ASHAREBALANCESHEET.tot_liab'].iloc[-1]
                tot_assets = df_stock['ASHAREBALANCESHEET.tot_assets'].iloc[-1]
                
                if tot_assets > 0:
                    debt_asset_ratio = (tot_liab / tot_assets) * 100
                    if debt_asset_ratio < 50:
                        selected_stocks.append((stock, debt_asset_ratio))
        except Exception as e:
            continue
            
    print("筛选出的低资产负债率股票列表:", selected_stocks)

3. 注意事项

  1. 数据下载:运行策略前,请确保已在 QMT 客户端通过【操作】-【数据管理】-【补充数据】补充了本地财务数据。
  2. 依赖库get_financial_data 返回 Pandas 数据结构,因此策略运行环境中需安装 pandas