问题描述
解决方案
在 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. 注意事项
- 数据补充:多因子数据(包括分析师评级)通常不会自动随行情数据下载。在使用前,请务必在 QMT 客户端界面点击菜单栏的 【操作】 -> 【数据管理】 -> 【补充数据】 -> 勾选【多因子数据】 进行下载,否则获取到的数据可能为空。
- 数据精度:因子数据通常精确到小数点后四位。
- 返回类型:
- 如果查询单只股票、多个时间点,返回
pandas.DataFrame(Index=时间, Columns=字段)。 - 如果查询多只股票、多个时间点,返回
dict(Key=代码, Value=DataFrame)。
- 如果查询单只股票、多个时间点,返回
Q&A
Q: QMT 中分析师评级 REC 字段的数值代表什么含义?
A: REC 字段通常是一个量化的数值,用于代表综合评级(如买入、增持、中性等)。具体的数值对应关系取决于数据提供商的标准,建议结合 DAREC(评级变化)来判断分析师情绪是上调还是下调。
Q: 为什么调用 get_factor_data 返回的数据是空的?
A: 最常见的原因是本地没有该时间段的多因子数据。请在 QMT 客户端的“数据管理”中手动补充“多因子数据”。另外,请检查 startDate 和 endDate 是否在有效交易日范围内。
Q: 除了评级,还能获取分析师对净利润的预测吗?
A: 可以。使用 Analyst_Estimation.FY12P(分析师盈利预测)或 Analyst_Estimation.DAREV(分析师盈利预测变化)等字段可以获取相关数据。