如何在vectorBT回测结果中添加Sharpe Ratio(夏普比率)
解决方案
在vectorBT中,你可以通过两种方式在回测结果中加入夏普比率:
方法1:调用stats()时指定包含夏普比率
vectorBT的Portfolio.stats()方法允许你通过metrics参数自定义输出指标,只需把'sharpe_ratio'加入指标列表,同时保留默认的所有统计项:
import vectorbt as vbt import yfinance as yf symbol = 'AAPL' ohlcv = yf.download(symbol, start='2022-01-01', end='2023-01-01') entries = ohlcv['Close'] > ohlcv['Close'].rolling(50).mean() exits = ohlcv['Close'] < ohlcv['Close'].rolling(50).mean() pf = vbt.Portfolio.from_signals( close=ohlcv['Close'], entries=entries, exits=exits, init_cash=10000 ) # 获取默认指标列表并追加夏普比率 default_metrics = vbt.Portfolio.metrics custom_metrics = default_metrics + ['sharpe_ratio'] stats = pf.stats(metrics=custom_metrics) print(stats)
方法2:单独计算夏普比率并追加到结果
如果只想在原有统计结果基础上添加夏普比率,可以直接调用pf.sharpe_ratio()计算后,把结果加入到stats序列中:
# 原有代码保持不变... stats = pf.stats() # 计算夏普比率(默认按年化处理,无风险利率为0) sharpe_ratio = pf.sharpe_ratio() # 将指标追加到统计结果 stats['Sharpe Ratio'] = sharpe_ratio print(stats)
补充说明
sharpe_ratio()方法默认基于每日收益率年化计算,你可以通过参数调整:risk_free_rate:设置无风险利率(默认值为0)period:调整计算周期,比如period='monthly'
示例:pf.sharpe_ratio(risk_free_rate=0.02, period='daily')
内容的提问来源于stack exchange,提问作者Rex
相关产品推荐
相关产品推荐

