问题描述
在PTrade中有两个ETF相关函数get_etf_info和get_etf_stock_info,它们分别获取什么信息?
解决方案
在 PTrade 量化交易平台中,get_etf_info 和 get_etf_stock_info 都是用于获取 ETF 相关数据的 API,但它们的侧重点完全不同。简单来说,get_etf_info 获取的是 ETF 基金本身的基础申赎信息,而 get_etf_stock_info 获取的是 ETF 篮子中具体某只成分股(成分券)的替代信息。
以下是两者的详细区别与用法解析:
1. get_etf_info:获取 ETF 基础信息
功能说明:用于获取单支或者多支 ETF 的宏观申赎信息。
入参:
etf_code:单支 ETF 代码或者一个 ETF 代码的 list(如'510050.SS')。
返回核心字段:
etf_redemption_code:申赎代码report_unit:最小申购、赎回单位cash_balance:现金差额max_cash_ratio:现金替代比例上限nav_percu:T-1日申购基准单位净值nav_pre:T-1日基金单位净值allot_max/redeem_max:申购/赎回上限
代码示例:
def handle_data(context, data):
# 获取 50ETF 的基础信息
etf_info = get_etf_info('510050.SS')
log.info(etf_info)
2. get_etf_stock_info:获取 ETF 成分券信息
功能说明:用于获取特定 ETF 篮子中,某一只或多只具体成分股的详细信息(主要用于申赎时的股票替代计算)。
入参:
etf_code:单支 ETF 代码(如'510050.SS')。security:单只股票代码或者一个由多只股票代码组成的列表(如'600000.SS')。
返回核心字段:
code_num:成分券数量(申赎一个单位需要的该股票数量)cash_replace_flag:现金替代标志(0-禁止替代,1-允许替代,2-必须替代等)replace_ratio:保证金率(溢价比率),允许现金替代标的此字段有效replace_balance:替代金额,必须现金替代标的此字段有效is_open:停牌标志(0-停牌,1-非停牌)
代码示例:
def handle_data(context, data):
# 获取 50ETF 中浦发银行(600000.SS)的成分券信息
stock_info = get_etf_stock_info('510050.SS', '600000.SS')
log.info(stock_info)
总结对比
| 特性 | get_etf_info |
get_etf_stock_info |
|---|---|---|
| 查询对象 | ETF 基金本身 | ETF 内部的具体成分股 |
| 主要用途 | 了解 ETF 的净值、最小申赎单位、现金差额等宏观数据 | 了解申赎时某只股票需要多少股、是否允许现金替代、溢价率等微观数据 |
| 入参要求 | 仅需 ETF 代码 | 需要 ETF 代码 + 成分股代码 |
在进行 ETF 申赎套利策略时,通常需要先用 get_etf_info 获取最小申赎单位,再结合 get_etf_stock_list 获取所有成分股,最后遍历使用 get_etf_stock_info 计算篮子中每只股票的替代成本。