问题描述
解决方案
在 PTrade 量化交易平台中,如果您希望更改默认的业绩比较基准(默认为沪深300指数 000300.SS),可以使用 set_benchmark 函数。
该函数必须在策略的初始化阶段,即 initialize 函数中调用。
1. 代码实现
以下是将业绩比较基准设置为 上证50指数(代码:000016.SS)的示例代码:
def initialize(context):
# 设置策略要操作的股票池(示例)
g.security = '600570.SS'
set_universe(g.security)
# ---------------------------------------------------
# 核心步骤:设置业绩比较基准
# 这里以上证50指数为例
set_benchmark('000016.SS')
# ---------------------------------------------------
2. 函数说明
- 函数名:
set_benchmark(security) - 参数:
security(字符串),可以是指数代码、股票代码或 ETF 代码。 - 位置:必须写在
initialize(context)函数内部。 - 作用:
- 在回测结果中,策略的收益曲线将与设定的基准曲线进行对比。
- 策略的风险指标(如 Alpha、Beta、信息比率等)将基于此基准进行计算。
3. 常用基准代码示例
您可以根据策略的风格选择合适的基准。以下是一些常用的指数代码(请注意 PTrade 中指数通常使用 .SS 或 .SZ 或 .XBHS 后缀,具体需参考客户端行情显示):
| 指数名称 | 代码示例 | 适用策略风格 |
|---|---|---|
| 沪深300 | '000300.SS' |
大盘蓝筹(默认基准) |
| 上证50 | '000016.SS' |
超大盘、银行地产等权重股 |
| 中证500 | '000905.XBHS' 或 '000905.SS' |
中盘股、成长股 |
| 中证1000 | '000852.XBHS' 或 '000852.SS' |
小盘股 |
| 创业板指 | '399006.SZ' |
创业板、科技成长 |
| 个股/ETF | '600519.SS' |
对标特定股票(如茅台)或特定行业ETF |
4. 注意事项
- 代码后缀:请确保传入的代码包含正确的后缀(如
.SS,.SZ,.XBHS)。如果不确定指数的具体代码,可以在 PTrade 客户端的行情界面查询,或使用get_index_stocks等函数辅助确认。 - 单一基准:
set_benchmark只能设置一个标的作为基准。 - 生效时间:设置后,回测报告中的“基准收益”将立即变更为您指定的标的收益。
Q&A
Q: 如果我不调用 set_benchmark 会怎样?
A: 如果不显式调用该函数,PTrade 系统会默认使用 沪深300指数 (000300.SS) 作为业绩比较基准。
Q: 我可以将基准设置为我的自选股票组合吗?
A: 不可以。set_benchmark 仅接受单个标的代码(字符串)。如果您希望对标特定组合,建议选择一个成分相似的 ETF(如半导体ETF、红利ETF)作为基准。
Q: set_benchmark 能在 handle_data 中调用吗?
A: 不能。该函数仅支持在 initialize 初始化函数中使用,用于在策略启动前确立评价标准。
Q: 设置基准会影响我的实盘交易逻辑吗?
A: 不会。set_benchmark 主要用于回测阶段的绩效评估和风险指标计算(如 Alpha 和 Beta)。在实盘交易中,它主要用于盘后分析展示,不会直接改变您的 order(下单)逻辑或资金撮合过程。