Beispiel #1
0
 def setUp(self):
     home_currency = "GBP"
     position_type = "short"
     currency_pair = "GBPUSD"
     units = Decimal("2000")
     ticker = TickerMock()
     self.position = Position(home_currency, position_type, currency_pair,
                              units, ticker)
Beispiel #2
0
 def add_new_position(
     self, position_type, currency_pair, units, ticker
 ):
     ps = Position(
         self.home_currency, position_type, 
         currency_pair, units, ticker
     )
     self.positions[currency_pair] = ps
Beispiel #3
0
class TestLongEURUSDPosition(unittest.TestCase):
    """
    Unit tests that cover going short EUR/USD with an account
    denominated currency of GBP, using 2,000 units of EUR/USD.
    """
    def setUp(self):
        home_currency = "GBP"
        position_type = "short"
        currency_pair = "EURUSD"
        units = Decimal("2000")
        ticker = TickerMock()
        self.position = Position(home_currency, position_type, currency_pair,
                                 units, ticker)

    def test_calculate_init_pips(self):
        pos_pips = self.position.calculate_pips()
        self.assertEqual(pos_pips, Decimal("-0.00015"))

    def test_calculate_init_profit_base(self):
        profit_base = self.position.calculate_profit_base()
        self.assertEqual(profit_base, Decimal("-0.19954"))

    def test_calculate_init_profit_perc(self):
        profit_perc = self.position.calculate_profit_perc()
        self.assertEqual(profit_perc, Decimal("-0.00998"))

    def test_calculate_updated_values(self):
        """
        Check that after the bid/ask prices move, that the updated
        pips, profit and percentage profit calculations are correct.
        """
        prices = self.position.ticker.prices
        prices["GBPUSD"] = {
            "bid": Decimal("1.50486"),
            "ask": Decimal("1.50586")
        }
        prices["USDGBP"] = {
            "bid": Decimal("0.66451"),
            "ask": Decimal("0.66407")
        }
        prices["EURUSD"] = {
            "bid": Decimal("1.07811"),
            "ask": Decimal("1.07827")
        }
        self.position.update_position_price()

        # Check pips
        pos_pips = self.position.calculate_pips()
        self.assertEqual(pos_pips, Decimal("0.00005"))
        # Check profit base
        profit_base = self.position.calculate_profit_base()
        self.assertEqual(profit_base, Decimal("0.06641"))
        # Check profit percentage
        profit_perc = self.position.calculate_profit_perc()
        self.assertEqual(profit_perc, Decimal("0.00332"))
Beispiel #4
0
 def setUp(self):
     home_currency = "GBP"
     position_type = "short"
     currency_pair = "GBPUSD"
     units = Decimal("2000")
     ticker = TickerMock()
     self.position = Position(
         home_currency, position_type, 
         currency_pair, units, ticker
     )
Beispiel #5
0
class TestLongEURUSDPosition(unittest.TestCase):
    """
    Unit tests that cover going short EUR/USD with an account
    denominated currency of GBP, using 2,000 units of EUR/USD.
    """

    def setUp(self):
        home_currency = "GBP"
        position_type = "short"
        currency_pair = "EURUSD"
        units = Decimal("2000")
        ticker = TickerMock()
        self.position = Position(
            home_currency, position_type,
            currency_pair, units, ticker
        )

    def test_calculate_init_pips(self):
        pos_pips = self.position.calculate_pips()
        self.assertEqual(pos_pips, Decimal("-0.00015"))

    def test_calculate_init_profit_base(self):
        profit_base = self.position.calculate_profit_base()
        self.assertEqual(profit_base, Decimal("-0.19954"))

    def test_calculate_init_profit_perc(self):
        profit_perc = self.position.calculate_profit_perc()
        self.assertEqual(profit_perc, Decimal("-0.00998"))

    def test_calculate_updated_values(self):
        """
        Check that after the bid/ask prices move, that the updated
        pips, profit and percentage profit calculations are correct.
        """
        prices = self.position.ticker.prices
        prices["GBPUSD"] = {"bid": Decimal(
            "1.50486"), "ask": Decimal("1.50586")}
        prices["USDGBP"] = {"bid": Decimal(
            "0.66451"), "ask": Decimal("0.66407")}
        prices["EURUSD"] = {"bid": Decimal(
            "1.07811"), "ask": Decimal("1.07827")}
        self.position.update_position_price()

        # Check pips
        pos_pips = self.position.calculate_pips()
        self.assertEqual(pos_pips, Decimal("0.00005"))
        # Check profit base
        profit_base = self.position.calculate_profit_base()
        self.assertEqual(profit_base, Decimal("0.06641"))
        # Check profit percentage
        profit_perc = self.position.calculate_profit_perc()
        self.assertEqual(profit_perc, Decimal("0.00332"))
Beispiel #6
0
 def add_new_position(self, side, market, units, exposure, add_price,
                      remove_price):
     ps = Position(side, market, units, exposure, add_price, remove_price)
     self.positions[market] = ps
Beispiel #7
0
 def add_new_position(self, position_type, market, units, exposure, bid,
                      ask):
     ps = Position(position_type, market, units, exposure, bid, ask)
     self.positions[market] = ps