3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化交易平台中,get_valuation 是获取股票市值及估值数据(如 PE、PB、PS、PCF 等)最常用的 API 之一。通过分析估值指标,投资者可以快速筛选出低估值标的,构建价值投资或多因子选股策略。
get_valuation 函数支持查询单个或多个标的在指定交易日范围内的市值表数据。
get_valuation(security, start_date=None, end_date=None, fields=None, count=None)
'000001.XSHE' 或 ['000001.XSHE', '000002.XSHE'])。datetime.date 对象)。count 同时使用)。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)
返回结果包含 code(股票代码)、day(数据日期)以及请求的各字段值,便于后续进行数据筛选与排序。
在策略初始化或调仓逻辑中,可以通过获取指数成分股并结合 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
end_date 或 context.current_dt 传入的时间不要超过当前逻辑时间,否则可能引入未来数据。initialize 中开启真实价格模式 set_option('use_real_price', True),保证回测成交与持仓价值计算的准确性。