使用backtesting.py回测时Sharpe、Sortino、Calmar比率均为0的问题排查
回测中Sharpe/Sortino/Calmar比率为0的排查问题
- 使用backtesting.py实现简单均线交叉策略回测时,Sharpe比率、Sortino比率和Calmar比率均显示为0
- 对比测试:使用库自带的日频GOOG测试数据集、yfinance获取的AAPL数据集(自动加载索引)时,这三个比率能正常显示数值
已做的时间戳处理操作
推测问题与自定义CSV数据集的时间戳列有关,当前时间戳处理代码:
btc['timestamp'] = pd.to_datetime(btc['timestamp'], format="%d/%m/%Y %H:%M") btc.set_index('timestamp', inplace=True)
回测策略代码
def SMA(values, n): return pd.Series(values).rolling(n).mean() class SmaCross(Strategy): n1 = 5 n2 = 10 def init(self): self.sma1 = self.I(SMA, self.data.Close, self.n1) self.sma2 = self.I(SMA, self.data.Close, self.n2) def next(self): if crossover(self.sma1, self.sma2): self.position.close() self.buy(size=1) elif crossover(self.sma2, self.sma1): self.position.close() self.sell(size=1) bt = Backtest(btc, SmaCross, cash = 1000000) stats = bt.run() print(stats)
已提供的辅助排查材料
- 数据集子集
- 回测结果截图
- 数据头部信息截图
- 数据信息截图
内容的提问来源于stack exchange,提问作者jkerror404
相关产品推荐
相关产品推荐

