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

JoinQuant 平台如何使用 get_valuation 查询股票 PE、PB 与 PS 估值指标?

joinquant | 发布时间: 2026/7/23
以下内容由 EasyQuant 生成。

问题描述

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

Title: joinquant 估值选股:get_valuation 接口获取市盈率与市净率

Question: joinquant 如何使用 get_valuation 查询多只股票的 PE、PB 和 PS 估值指标?

解决方案

JoinQuant 估值选股:使用 get_valuation 接口获取 PE、PB 与 PS 指标

在 JoinQuant(聚宽)量化交易平台中,get_valuation 是获取股票市值及估值数据(如 PE、PB、PS、PCF 等)最常用的 API 之一。通过分析估值指标,投资者可以快速筛选出低估值标的,构建价值投资或多因子选股策略。


一、get_valuation 接口基本语法

get_valuation 函数支持查询单个或多个标的在指定交易日范围内的市值表数据。

get_valuation(security, start_date=None, end_date=None, fields=None, count=None)

参数说明:

  • security: 股票代码或股票代码列表(例如 '000001.XSHE'['000001.XSHE', '000002.XSHE'])。
  • end_date: 查询结束时间(字符串或 datetime.date 对象)。
  • start_date: 查询开始时间(不能与 count 同时使用)。
  • count: 往前查询交易日的天数。
  • fields: 财务市值表字段,主要估值字段包括:
    • pe_ratio: 滚动市盈率(PE, TTM)
    • pe_ratio_lyr: 静态市盈率(PE, LYR)
    • pb_ratio: 市净率(PB)
    • ps_ratio: 市销率(PS, TTM)
    • pcf_ratio: 市现率(PCF, 现金净流量 TTM)
    • market_cap: 总市值(亿元)
    • circulating_market_cap: 流通市值(亿元)

二、查询多只股票估值指标示例

以下示例展示了如何在 JoinQuant 中查询多只股票(如平安银行、万科 A)在特定日期的 PE、PB 和 PS 指标:

from jqdata import *

# 1. 定义股票池与查询字段
securities = ['000001.XSHE', '000002.XSHE', '600000.XSHG']
fields_list = ['pe_ratio', 'pb_ratio', 'ps_ratio', 'market_cap']

# 2. 调用 get_valuation 接口查询指定日期数据
df_valuation = get_valuation(
    security=securities, 
    end_date='2023-11-01', 
    count=1, 
    fields=fields_list
)

# 3. 打印查询结果
print(df_valuation)

输出 DataFrame 结构说明:

返回结果包含 code(股票代码)、day(数据日期)以及请求的各字段值,便于后续进行数据筛选与排序。


三、结合 get_valuation 实现低估值筛选示例

在策略初始化或调仓逻辑中,可以通过获取指数成分股并结合 get_valuation 选出低 PE、低 PB 的标的:

from jqdata import *

def get_low_valuation_stocks(context):
    # 获取沪深 300 成分股
    stocks = get_index_stocks('000300.XSHG')
    
    # 获取成分股的 PE 和 PB
    val_df = get_valuation(
        security=stocks, 
        end_date=context.current_dt, 
        count=1, 
        fields=['pe_ratio', 'pb_ratio']
    )
    
    # 筛选 PE > 0 且 PE < 15,同时 PB < 1.5 的低估值股票
    filtered = val_df[(val_df['pe_ratio'] > 0) & (val_df['pe_ratio'] < 15) & (val_df['pb_ratio'] < 1.5)]
    
    # 按 PE 升序排列并取前 10 只股票
    target_stocks = filtered.sort_values(by='pe_ratio')['code'].tolist()[:10]
    return target_stocks

四、注意事项与最佳实践

  1. 数据限制与性能: 单次调用最多返回 5000 条数据。若查询股票数量过多或时间跨度较长,建议按批次或按时间分段获取。
  2. 未来函数防范: 在回测中,end_datecontext.current_dt 传入的时间不要超过当前逻辑时间,否则可能引入未来数据。
  3. 动态复权模式: 强烈建议在 initialize 中开启真实价格模式 set_option('use_real_price', True),保证回测成交与持仓价值计算的准确性。