问题描述
/
解决方案
Ptrade 支持 REITs 回测和交易吗?
是的,Ptrade 量化平台支持基础设施公募 REITs 基金的回测与交易。
Ptrade 提供了专门的 API 接口 get_reits_list,用于获取指定日期沪深市场的所有公募 REITs 基金代码列表。该接口在研究、回测、交易模块中均可使用。获取到 REITs 代码后,您可以像交易普通股票或 ETF 一样,使用 order、order_target 等委托接口进行买卖操作。
如何获取 REITs 代码列表?
您可以使用 get_reits_list(date=None) 接口来获取公募 REITs 基金代码。
接口说明
- 使用场景:研究、回测、交易模块可用。
- 参数:
date:格式为YYYYmmdd的字符串。如果不传入此参数:- 在回测中,默认取回测当前日期(
context.current_dt)。 - 在研究和交易中,默认取当天日期。
- 在回测中,默认取回测当前日期(
- 返回值:返回一个包含公募 REITs 基金代码的列表(
list类型),例如['180101.SZ', '180102.SZ', '508099.SS']。
Python 源码示例
以下是一个在 Ptrade 中获取 REITs 列表并进行简单交易的策略示例:
def initialize(context):
# 获取当前所有的公募 REITs 基金代码
g.reits_list = get_reits_list()
log.info('当前公募 REITs 基金数量为: %s' % len(g.reits_list))
# 将获取到的 REITs 列表设置为股票池
if len(g.reits_list) > 0:
set_universe(g.reits_list)
# 选取第一只 REITs 作为交易标的
g.target_reit = g.reits_list[0]
else:
g.target_reit = None
def handle_data(context, data):
if g.target_reit is None:
return
# 获取目标 REITs 的当前价格
current_price = data[g.target_reit]['close']
log.info('标的 %s 当前价格为: %s' % (g.target_reit, current_price))
# 简单的买入逻辑:如果持仓为0,则买入 1000 股(份)
position = get_position(g.target_reit)
if position.amount == 0:
order(g.target_reit, 1000)
log.info('买入 1000 份 %s' % g.target_reit)
注意事项
- 流动性与滑点:REITs 市场的流动性可能与普通 A 股有所不同,在进行回测时,建议合理设置滑点(
set_slippage或set_fixed_slippage)和成交比例限制(set_volume_ratio),以使回测结果更贴近真实交易。 - 价格精度:REITs 的价格精度通常为小数点后三位,在使用限价单(如
limit_price参数)时,请注意价格的小数位数处理,避免因精度问题导致委托失败。