def pnl_percentage(self): """ The PNL% of the position :return: float """ if self.qty == 0: return 0 exit_price = self.current_price if self.exit_price is None else self.exit_price return jh.estimate_PNL_percentage(self.qty, self.entry_price, exit_price, self.type)
def test_estimate_PNL_percentage(): # profit assert jh.estimate_PNL_percentage(1, 200, 220, 'long') == 10 assert jh.estimate_PNL_percentage(1, 200, 180, 'short') == 10 # loss assert jh.estimate_PNL_percentage(1, 200, 180, 'long') == -10 assert jh.estimate_PNL_percentage(1, 200, 220, 'short') == -10 with pytest.raises(TypeError): jh.estimate_PNL_percentage(1, 200, 220, 1) jh.estimate_PNL_percentage(1, 200, 'invalid_input', 'short') jh.estimate_PNL_percentage(1, 'invalid_input', 220, 'short') jh.estimate_PNL_percentage('invalid_input', 200, 220, 'short')