🚀 AI 一键生成 qmt 策略代码

QMT 因子库:如何调用分析师评级 (Analyst Estimation) 数据?

qmt | 发布时间: 2025/12/24
以下内容由 EasyQuant 生成。

问题描述

怎么获取股票的分析师评级数据?

解决方案

在 QMT 量化交易平台中,获取股票的分析师评级数据是通过多因子数据接口 (ContextInfo.get_factor_data) 来实现的。分析师评级相关的数据存储在 Analyst_Estimation(股票因子_分析师预期)表中。

以下是具体的获取方法、字段说明及代码示例。

1. 核心接口说明

使用 ContextInfo.get_factor_data 函数获取数据。

  • 函数原型ContextInfo.get_factor_data(fieldList, stockList, startDate, endDate)
  • 数据表名Analyst_Estimation
  • 常用字段
    • Analyst_Estimation.REC:分析师推荐评级
    • Analyst_Estimation.DAREC:分析师推荐评级变化
    • Analyst_Estimation.GREC:分析师推荐评级变化趋势

2. 代码示例

以下代码展示了如何在策略中获取“浦发银行”在指定时间段内的分析师评级数据。

# -*- coding: gbk -*-

def init(ContextInfo):
    # 策略初始化
    pass

def handlebar(ContextInfo):
    # 1. 设定要获取的字段列表
    # REC: 推荐评级, DAREC: 评级变化
    fieldList = ['Analyst_Estimation.REC', 'Analyst_Estimation.DAREC']
    
    # 2. 设定股票代码
    stockCode = '600000.SH'
    
    # 3. 设定起止时间 (格式:YYYYMMDD)
    startDate = '20220101'
    endDate = '20220110'
    
    # 4. 调用多因子接口获取数据
    # 注意:如果是回测模式,ContextInfo.barpos 对应的日期需要包含在 startDate 和 endDate 范围内才能看到动态效果
    # 这里演示直接获取一段历史数据
    factor_data = ContextInfo.get_factor_data(fieldList, stockCode, startDate, endDate)
    
    # 5. 打印结果
    # 返回结果通常为 pandas DataFrame
    print("分析师评级数据:")
    print(factor_data)

    # 如果只在最后一根K线运行一次,避免重复打印
    if ContextInfo.is_last_bar():
        pass

3. 字段详细对照表

Analyst_Estimation 表中,您可以获取以下与评级和预期相关的因子:

字段名 (Field Name) 中文名称 说明
Analyst_Estimation.REC 分析师推荐评级 反映分析师对该股票的综合评级数值
Analyst_Estimation.DAREC 分析师推荐评级变化 反映评级较上期的变化情况
Analyst_Estimation.GREC 分析师推荐评级变化趋势 反映评级变化的长期趋势
Analyst_Estimation.FY12P 分析师盈利预测 预测的每股收益等盈利指标
Analyst_Estimation.SFY12P 分析师营收预测 预测的营业收入指标

4. 注意事项

  1. 数据补充:多因子数据(包括分析师评级)通常不会自动随行情数据下载。在使用前,请务必在 QMT 客户端界面点击菜单栏的 【操作】 -> 【数据管理】 -> 【补充数据】 -> 勾选【多因子数据】 进行下载,否则获取到的数据可能为空。
  2. 数据精度:因子数据通常精确到小数点后四位。
  3. 返回类型
    • 如果查询单只股票、多个时间点,返回 pandas.DataFrame (Index=时间, Columns=字段)。
    • 如果查询多只股票、多个时间点,返回 dict (Key=代码, Value=DataFrame)。

Q&A

Q: QMT 中分析师评级 REC 字段的数值代表什么含义?
A: REC 字段通常是一个量化的数值,用于代表综合评级(如买入、增持、中性等)。具体的数值对应关系取决于数据提供商的标准,建议结合 DAREC(评级变化)来判断分析师情绪是上调还是下调。

Q: 为什么调用 get_factor_data 返回的数据是空的?
A: 最常见的原因是本地没有该时间段的多因子数据。请在 QMT 客户端的“数据管理”中手动补充“多因子数据”。另外,请检查 startDateendDate 是否在有效交易日范围内。

Q: 除了评级,还能获取分析师对净利润的预测吗?
A: 可以。使用 Analyst_Estimation.FY12P(分析师盈利预测)或 Analyst_Estimation.DAREV(分析师盈利预测变化)等字段可以获取相关数据。