diff --git a/catalyst/examples/arbitrage_with_interface.py b/catalyst/examples/arbitrage_with_interface.py index 425f995b..56a1e889 100644 --- a/catalyst/examples/arbitrage_with_interface.py +++ b/catalyst/examples/arbitrage_with_interface.py @@ -1,6 +1,7 @@ from logbook import Logger from catalyst.api import ( + record, order, symbol, get_open_orders @@ -26,12 +27,12 @@ def initialize(context): symbol(context.trading_pair_symbol, context.selling_exchange.name) context.entry_points = [ - dict(gap=0.01, amount=0.05), - dict(gap=0.02, amount=0.1), + dict(gap=0.03, amount=0.05), + dict(gap=0.04, amount=0.1), + dict(gap=0.05, amount=0.5), ] context.exit_points = [ - dict(gap=0.01, amount=0.05), - dict(gap=-0.02, amount=0.01), + dict(gap=-0.02, amount=0.5), ] context.MAX_POSITIONS = 50 @@ -168,6 +169,7 @@ def handle_data(context, data): gap_percent=gap * 100 ) ) + record(buying_price=buying_price, selling_price=selling_price, gap=gap) for exchange in context.trading_pairs: asset = context.trading_pairs[exchange] diff --git a/catalyst/exchange/algorithm_exchange.py b/catalyst/exchange/algorithm_exchange.py index 86b836f2..88128091 100644 --- a/catalyst/exchange/algorithm_exchange.py +++ b/catalyst/exchange/algorithm_exchange.py @@ -409,6 +409,9 @@ class ExchangeTradingAlgorithm(TradingAlgorithm): self.add_pnl_stats(minute_stats) if self.recorded_vars: self.add_custom_signals_stats(minute_stats) + recorded_cols = self.recorded_vars.keys() + else: + recorded_cols = None self.add_exposure_stats(minute_stats) @@ -416,7 +419,11 @@ class ExchangeTradingAlgorithm(TradingAlgorithm): log.debug( 'statistics for the last {stats_minutes} minutes:\n{stats}'.format( stats_minutes=self.stats_minutes, - stats=get_pretty_stats(print_df, self.stats_minutes) + stats=get_pretty_stats( + stats_df=print_df, + recorded_cols=recorded_cols, + num_rows=self.stats_minutes + ) )) today = pd.to_datetime('today', utc=True) diff --git a/catalyst/exchange/stats_utils.py b/catalyst/exchange/stats_utils.py index eda1b2fd..2cf65b43 100644 --- a/catalyst/exchange/stats_utils.py +++ b/catalyst/exchange/stats_utils.py @@ -1,7 +1,7 @@ import pandas as pd -def get_pretty_stats(stats_df, num_rows=10): +def get_pretty_stats(stats_df, recorded_cols=None, num_rows=10): """ Format and print the last few rows of a statistics DataFrame. See the pyfolio project for the data structure. @@ -22,6 +22,10 @@ def get_pretty_stats(stats_df, num_rows=10): 'pnl', 'long_exposure', 'short_exposure', 'orders', 'transactions', 'positions'] + if recorded_cols is not None: + for column in recorded_cols: + columns.append(column) + def format_positions(positions): parts = [] for position in positions: