diff --git a/catalyst/exchange/exchange_algorithm.py b/catalyst/exchange/exchange_algorithm.py index bb965b58..7ec8efd2 100644 --- a/catalyst/exchange/exchange_algorithm.py +++ b/catalyst/exchange/exchange_algorithm.py @@ -288,7 +288,7 @@ class ExchangeTradingAlgorithmLive(ExchangeTradingAlgorithmBase): self.live_graph = kwargs.pop('live_graph', None) self._clock = None - self.minute_stats = deque(maxlen=60) + self.frame_stats = deque(maxlen=60) self.pnl_stats = get_algo_df(self.algo_namespace, 'pnl_stats') @@ -557,8 +557,9 @@ class ExchangeTradingAlgorithmLive(ExchangeTradingAlgorithmBase): ) self.exposure_stats = pd.concat([self.exposure_stats, df]) - save_algo_df(self.algo_namespace, 'exposure_stats', - self.exposure_stats) + save_algo_df( + self.algo_namespace, 'exposure_stats', self.exposure_stats + ) def handle_data(self, data): """ @@ -575,8 +576,11 @@ class ExchangeTradingAlgorithmLive(ExchangeTradingAlgorithmBase): self._synchronize_portfolio() transactions = self._check_open_orders() - for transaction in transactions: - self.perf_tracker.process_transaction(transaction) + if len(transactions) > 0: + for transaction in transactions: + self.perf_tracker.process_transaction(transaction) + + self.perf_tracker.update_performance() if self._handle_data: self._handle_data(self, data) @@ -591,22 +595,22 @@ class ExchangeTradingAlgorithmLive(ExchangeTradingAlgorithmBase): # Performance tracker and keep only minute and cumulative self.perf_tracker.update_performance() - minute_stats = self.prepare_period_stats( + frame_stats = self.prepare_period_stats( data.current_dt, data.current_dt + timedelta(minutes=1)) # Saving the last hour in memory - self.minute_stats.append(minute_stats) + self.frame_stats.append(frame_stats) - self.add_pnl_stats(minute_stats) + self.add_pnl_stats(frame_stats) if self.recorded_vars: - self.add_custom_signals_stats(minute_stats) + self.add_custom_signals_stats(frame_stats) recorded_cols = list(self.recorded_vars.keys()) else: recorded_cols = None - self.add_exposure_stats(minute_stats) + self.add_exposure_stats(frame_stats) - print_df = pd.DataFrame(list(self.minute_stats)) + print_df = pd.DataFrame(list(self.frame_stats)) log.info( 'statistics for the last {stats_minutes} minutes:\n{stats}'.format( stats_minutes=self.stats_minutes,