def __get_performance_manager(self): # TODO 加入回测是否运行的判断 if False: raise ValueError('please run the backtest first') return StrategyPerformanceManagerOnline( self.__strategy_engine.profit_records, self.__strategy_engine.deals, self.__strategy_engine.positions)
def get_sharpe(self, start_time, end_time, simple=True): si, ei = self.get_index(start_time, end_time) if si >= len(self.__pnl): return 0 records = self.__pnl[si:ei] manager = StrategyPerformanceManagerOnline(records, {}, {}) performance = manager.get_performance() if simple: return performance.sharpe_ratio.total else: return performance.sharpe_ratio_compound.total
def performance(self): if self._performance is None: self._performance_manager = StrategyPerformanceManagerOnline(self.profit_records, self.deals, self.positions) self._performance = self._performance_manager.get_performance() return self._performance
def get_performance(self, start_time, end_time): si, ei = self.get_index(start_time, end_time) if si >= len(self.__pnl): return None records = self.__pnl[si:ei] return StrategyPerformanceManagerOnline(records, {}, {})