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

Ptrade 平台如何利用 get_fundamentals 获取偿债能力指标筛选低风险安全标的?

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

问题描述

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

Title: PTrade 财务选股:基于偿债能力指标(流动比率与速动比率)筛选安全标的

Question: 如何在 ptrade 中通过 get_fundamentals 获取偿债能力表数据并剔除高负债股票?

解决方案

Ptrade 平台如何利用 get_fundamentals 获取偿债能力指标筛选低风险安全标的

在量化选股策略中,企业的财务健康状况是防范黑天鹅事件与极风险的重要屏障。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 通常被认为财务较为安全。

二、接口使用方法:get_fundamentals

1. 常用参数设置

  • security: 股票代码或代码列表(如 ['600570.SS', '000001.SZ'])。
  • table: 设置为 'debt_paying_ability'
  • fields: 查询字段,如 ['current_ratio', 'quick_ratio']
  • date: 查询指定日期,不传默认取系统/回测当前日期。

2. 代码示例

# 获取沪深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

四、注意事项与最佳实践

  1. 限流保护与频次get_fundamentals 为在线 HTTP 接口,单次最大调用量为 500 条数据(股票数 × 字段数建议不超 5 万)。如需大规模查询全市场多历史周期数据,请分批查询或适当加 time.sleep()
  2. 未来函数规避:在回测环境使用按日期查询模式时,不传 date 参数默认取回测当日之前最新公布的财报数据,能有效避免未来函数。此外推荐将 merge_type 保持默认(取首次发布数据)。
  3. 多维指标结合:单一的偿债能力指标可能排除部分特定高杠杆行业(如金融、房地产),建议结合 profit_ability(盈利能力)或 growth_ability(成长能力)指标综合评分构建复合选股因子。