3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化选股策略中,企业的财务健康状况是防范黑天鹅事件与极风险的重要屏障。debt_paying_ability(偿债能力)财务表提供了评估企业短期和长期偿债风险的核心指标。本文将详细介绍如何在 Ptrade 量化平台中使用 get_fundamentals 获取流动比率与速动比率,并在盘前筛选逻辑中剔除高负债股票。
在 Ptrade 中查询 debt_paying_ability 表时,常用的核心偿债能力指标包括:
current_ratio(流动比率):$\text{流动资产} / \text{流动负债}$。通常流动比率高于 1.5 ~ 2.0 表明企业短期偿债能力较强。quick_ratio(速动比率):$(\text{流动资产} - \text{存货}) / \text{流动负债}$。剔除了变现能力较慢的存货,速动比率高于 1.0 通常被认为财务较为安全。security: 股票代码或代码列表(如 ['600570.SS', '000001.SZ'])。table: 设置为 'debt_paying_ability'。fields: 查询字段,如 ['current_ratio', 'quick_ratio']。date: 查询指定日期,不传默认取系统/回测当前日期。# 获取沪深300成分股在指定日期的偿债能力指标
stocks = get_index_stocks('000300.XBHS')
df_debt = get_fundamentals(
security=stocks,
table='debt_paying_ability',
fields=['current_ratio', 'quick_ratio'],
date='20230630'
)
以下策略在每日开盘前(before_trading_start)获取全 A 股的偿债能力数据,剔除流动比率 < 1.2 或 速动比率 < 0.8 的风险标的,建立安全交易股票池:
import pandas as pd
def initialize(context):
# 初始化全局变量
g.security_pool = []
# 设置每天 09:15 执行选股逻辑
run_daily(context, select_safe_stocks, time='09:15')
def select_safe_stocks(context):
# 1. 获取全 A 股标的
all_shares = get_Ashares()
# 2. 从 debt_paying_ability 表查询流动比率与速动比率
debt_df = get_fundamentals(
security=all_shares,
table='debt_paying_ability',
fields=['current_ratio', 'quick_ratio']
)
if debt_df is None or debt_df.empty:
log.warning("获取财务偿债能力数据失败或为空")
return
# 3. 设定安全阈值筛选(例如:流动比率 >= 1.2 且 速动比率 >= 0.8)
safe_condition = (debt_df['current_ratio'] >= 1.2) & (debt_df['quick_ratio'] >= 0.8)
safe_stocks = debt_df[safe_condition].index.tolist()
# 4. 剔除 ST、停牌与退市股票
final_pool = filter_stock_by_status(safe_stocks, filter_type=["ST", "HALT", "DELISTING"])
g.security_pool = final_pool
set_universe(g.security_pool)
log.info("偿债能力选股完成,筛选出安全股票共 %d 只" % len(g.security_pool))
def handle_data(context, data):
# 盘中根据筛选出的安全股票池执行具体买卖逻辑
pass
get_fundamentals 为在线 HTTP 接口,单次最大调用量为 500 条数据(股票数 × 字段数建议不超 5 万)。如需大规模查询全市场多历史周期数据,请分批查询或适当加 time.sleep()。date 参数默认取回测当日之前最新公布的财报数据,能有效避免未来函数。此外推荐将 merge_type 保持默认(取首次发布数据)。profit_ability(盈利能力)或 growth_ability(成长能力)指标综合评分构建复合选股因子。