You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:06:10