def add_pnl_stats(self, period_stats): """ Save p&l stats. Parameters ---------- period_stats Returns ------- """ starting = period_stats['starting_cash'] current = period_stats['portfolio_value'] appreciation = (current / starting) - 1 perc = (appreciation * 100) if current != 0 else 0 log.debug('adding pnl stats: {:6f}%'.format(perc)) df = pd.DataFrame(data=[dict(performance=perc)], index=[period_stats['period_close']]) self.pnl_stats = pd.concat([self.pnl_stats, df]) save_algo_df( self.algo_namespace, 'pnl_stats_{}'.format(self.mode_name), self.pnl_stats, )
def add_exposure_stats(self, period_stats): """ Save exposure stats. Parameters ---------- period_stats Returns ------- """ data = dict(long_exposure=period_stats['long_exposure'], quote_currency=period_stats['ending_cash']) log.debug('adding exposure stats: {}'.format(data)) df = pd.DataFrame( data=[data], index=[period_stats['period_close']], ) self.exposure_stats = pd.concat([self.exposure_stats, df]) save_algo_df(self.algo_namespace, 'exposure_stats_{}'.format(self.mode_name), self.exposure_stats)
def add_custom_signals_stats(self, period_stats): """ Save custom signals stats. Parameters ---------- period_stats Returns ------- """ log.debug('adding custom signals stats: {}'.format(self.recorded_vars)) df = pd.DataFrame( data=[self.recorded_vars], index=[period_stats['period_close']], ) self.custom_signals_stats = pd.concat([self.custom_signals_stats, df]) save_algo_df(self.algo_namespace, 'custom_signals_stats', self.custom_signals_stats)