Beispiel #1
0
    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)
Beispiel #2
0
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')