Skip to content

Commit

Permalink
Extend TestMetrics.
Browse files Browse the repository at this point in the history
  • Loading branch information
cryptocoinserver committed Mar 24, 2021
1 parent 00c24c0 commit 2acfb70
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 35 deletions.
57 changes: 32 additions & 25 deletions jesse/strategies/TestMetrics1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,20 @@


class TestMetrics1(Strategy):

def should_long(self) -> bool:
return self.price == 10

def should_short(self) -> bool:
return False

def go_long(self):
self.buy = 10, 10
self.buy = 20, 10
# sell it for $50 profit
self.take_profit = 10, 15
self.take_profit = [
(10, 15),
(10, 20),
]

def go_short(self):
pass
Expand All @@ -22,26 +26,29 @@ def should_cancel(self):
return False

def on_take_profit(self, order):
assert self.metrics['total'] == 1
assert self.metrics['starting_balance'] == 10000
assert self.metrics['finishing_balance'] == 10050
assert self.metrics['win_rate'] == 1
assert self.metrics['ratio_avg_win_loss'] is np.nan
assert self.metrics['longs_count'] == 1
assert self.metrics['shorts_count'] == 0
assert self.metrics['longs_percentage'] == 100
assert self.metrics['short_percentage'] == 0
assert self.metrics['fee'] == 0
assert self.metrics['net_profit'] == 50
assert self.metrics['net_profit_percentage'] == 0.5
assert self.metrics['average_win'] == 50
assert self.metrics['average_loss'] is np.nan
assert self.metrics['expectancy'] == 50
assert self.metrics['expectancy_percentage'] == 0.5
assert self.metrics['expected_net_profit_every_100_trades'] == 50
assert self.metrics['average_holding_period'] == 300
assert self.metrics['average_losing_holding_period'] is np.nan
assert self.metrics['average_winning_holding_period'] == 300
assert self.metrics['gross_loss'] == 0
assert self.metrics['gross_profit'] == 50
assert self.metrics['open_pl'] == 0
if self.price == 15:
assert self.metrics['total'] == 1
assert self.metrics['starting_balance'] == 10000
assert self.metrics['finishing_balance'] == 10050
assert self.metrics['win_rate'] == 1
assert self.metrics['ratio_avg_win_loss'] is np.nan
assert self.metrics['longs_count'] == 1
assert self.metrics['shorts_count'] == 0
assert self.metrics['longs_percentage'] == 100
assert self.metrics['short_percentage'] == 0
assert self.metrics['fee'] == 0
assert self.metrics['net_profit'] == 50
assert self.metrics['net_profit_percentage'] == 0.5
assert self.metrics['average_win'] == 50
assert self.metrics['average_loss'] is np.nan
assert self.metrics['expectancy'] == 50
assert self.metrics['expectancy_percentage'] == 0.5
assert self.metrics['expected_net_profit_every_100_trades'] == 50
assert self.metrics['average_holding_period'] == 300
assert self.metrics['average_losing_holding_period'] is np.nan
assert self.metrics['average_winning_holding_period'] == 300
assert self.metrics['gross_loss'] == 0
assert self.metrics['gross_profit'] == 50
assert self.metrics['open_pl'] == 0


21 changes: 11 additions & 10 deletions tests/test_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,28 +21,29 @@ def test_metrics_for_trades_without_fee():

assert stats['total'] == 1
assert stats['starting_balance'] == 10000
assert stats['finishing_balance'] == 10050
assert stats['finishing_balance'] == 10150
assert stats['win_rate'] == 1
assert stats['ratio_avg_win_loss'] is np.nan
assert stats['longs_count'] == 1
assert stats['shorts_count'] == 0
assert stats['longs_percentage'] == 100
assert stats['short_percentage'] == 0
assert stats['fee'] == 0
assert stats['net_profit'] == 50
assert stats['net_profit_percentage'] == 0.5
assert stats['average_win'] == 50
assert stats['net_profit'] == 150
assert stats['net_profit_percentage'] == 1.5
assert stats['average_win'] == 150
assert stats['average_loss'] is np.nan
assert stats['expectancy'] == 50
assert stats['expectancy_percentage'] == 0.5
assert stats['expected_net_profit_every_100_trades'] == 50
assert stats['average_holding_period'] == 300
assert stats['expectancy'] == 150
assert stats['expectancy_percentage'] == 1.5
assert stats['expected_net_profit_every_100_trades'] == 150
assert stats['average_holding_period'] == 600
assert stats['average_losing_holding_period'] is np.nan
assert stats['average_winning_holding_period'] == 300
assert stats['average_winning_holding_period'] == 600
assert stats['gross_loss'] == 0
assert stats['gross_profit'] == 50
assert stats['gross_profit'] == 150
assert stats['open_pl'] == 0


# ignore metrics that are dependant on daily_returns because the testing candle set is not for multiple dais

# def test_stats_for_a_strategy_without_losing_trades():
Expand Down

0 comments on commit 2acfb70

Please sign in to comment.