3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 平台中,计算夏普比率时所需的每日无风险利率可以通过内置的 API 函数 ContextInfo.get_risk_free_rate() 动态获取。
该函数默认使用 十年期国债收益率 (CGB10Y) 作为无风险利率基准。
ContextInfo.get_risk_free_rate(index)index (int),即当前 K 线的索引号,通常使用 ContextInfo.barpos。number,返回对应时间点的无风险利率数值。以下代码展示了如何在策略运行过程中(handlebar 函数内)动态获取每一根 K 线对应的无风险利率。
# -*- coding: gbk -*-
def init(ContextInfo):
# 设置股票池,这里仅作示例
ContextInfo.set_universe(['600000.SH'])
# 设置基准
ContextInfo.benchmark = '000300.SH'
def handlebar(ContextInfo):
# 1. 获取当前 K 线的索引位置
index = ContextInfo.barpos
# 2. 获取当前时间点的无风险利率 (十年期国债收益率)
# 注意:返回的数值通常是小数形式或百分比形式,具体取决于数据源,建议打印确认
rf_rate = ContextInfo.get_risk_free_rate(index)
# --- 以下为辅助打印代码,用于验证数据 ---
# 获取当前 K 线的时间戳
timetag = ContextInfo.get_bar_timetag(index)
# 将时间戳转换为可读日期格式
date_str = timetag_to_datetime(timetag, '%Y-%m-%d')
# 打印结果
print(f"日期: {date_str}, 当日无风险利率: {rf_rate}")
# 在计算夏普比率时,通常需要将年化无风险利率转换为日度无风险利率
# 假设 rf_rate 为年化利率(例如 0.03 代表 3%),转换公式如下:
# daily_rf = rf_rate / 252
get_market_data 获取对应利率品种的行情,或者自行导入外部数据。Q: QMT 的无风险利率数据来源是什么?
A: QMT 底层使用的是十年期国债收益率(CGB10Y)作为无风险利率的标准数据。
Q: get_risk_free_rate 返回的值是百分数还是小数?
A: 通常返回的是小数形式(例如 0.035 代表 3.5%),但在不同版本或数据源更新下可能有所变动,建议在策略编写初期使用 print 打印出来确认量级。
Q: 如果我想用固定的无风险利率(比如 3%)计算夏普比率怎么办?
A: 您可以直接在代码中定义一个全局变量(如 ContextInfo.rf = 0.03),而不调用 get_risk_free_rate 函数。但在专业的量化回测中,使用动态的历史无风险利率会更加严谨。