Exemple #1
0
 def persisted_txs(self):
     # First trade is FX (skipped)
     # Last trade cancels the 2nd trade
     # Leaving 3rd & 4th XML transactions parsed as trades
     return [
         Trade(
             uniqueid="DEADBEEF",
             datetime=datetime(2015, 9, 10, 15, 51, 34),
             memo="SATURNS SEARS ROEBUCK ACCEPTANCE CO",
             currency=models.Currency.USD,
             cash=Decimal("16195.8803475"),
             fiaccount=self.account,
             security=self.securities[1],
             units=Decimal("-1000"),
         ),
         Trade(
             uniqueid="DEADBEEF",
             datetime=datetime(2015, 9, 10, 15, 52, 20),
             memo="SATURNS SEARS ROEBUCK ACCEPTANCE CO",
             currency=models.Currency.USD,
             cash=Decimal("14576.29231275"),
             fiaccount=self.account,
             security=self.securities[1],
             units=Decimal("-900"),
         ),
     ]
    def setUp(self):
        tx1 = Trade(
            datetime=datetime(2016, 1, 1),
            uniqueid="",
            fiaccount="",
            security=None,
            units=Decimal("100"),
            cash=Decimal("1000"),
            currency="USD",
        )
        self.lot1 = Lot(
            opentransaction=tx1,
            createtransaction=tx1,
            units=tx1.units,
            price=abs(tx1.cash / tx1.units),
            currency=tx1.currency,
        )

        tx2 = Trade(
            datetime=datetime(2016, 1, 2),
            uniqueid="",
            fiaccount="",
            security=None,
            units=Decimal("200"),
            cash=Decimal("2200"),
            currency="USD",
        )
        self.lot2 = Lot(
            opentransaction=tx2,
            createtransaction=tx2,
            units=tx2.units,
            price=abs(tx2.cash / tx2.units),
            currency=tx2.currency,
        )

        tx3 = Trade(
            datetime=datetime(2016, 1, 3),
            uniqueid="",
            fiaccount="",
            security=None,
            units=Decimal("300"),
            cash=Decimal("3600"),
            currency="USD",
        )
        self.lot3 = Lot(
            opentransaction=tx3,
            createtransaction=tx3,
            units=tx3.units,
            price=abs(tx3.cash / tx3.units),
            currency=tx3.currency,
        )

        self.lots = [self.lot1, self.lot2, self.lot3]
Exemple #3
0
    def setUp(self):
        tx1 = Trade(
            uniqueid="",
            datetime=datetime(2016, 1, 1),
            fiaccount=None,
            security=1,
            units=Decimal("100"),
            cash=Decimal("-1000"),
            currency="USD",
        )
        self.lot1 = Lot(
            opentransaction=tx1,
            createtransaction=tx1,
            units=tx1.units,
            price=abs(tx1.cash / tx1.units),
            currency=tx1.currency,
        )

        tx2 = Trade(
            uniqueid="",
            datetime=datetime(2016, 1, 1),
            fiaccount=None,
            security=2,
            units=Decimal("-300"),
            cash=Decimal("3600"),
            currency="USD",
        )
        self.lot2 = Lot(
            opentransaction=tx2,
            createtransaction=tx2,
            units=tx2.units,
            price=abs(tx2.cash / tx2.units),
            currency=tx2.currency,
        )

        self.portfolio = Portfolio({
            (None, 1): [self.lot1],
            (None, 2): [self.lot2]
        })
Exemple #4
0
 def persisted_txs(self):
     return [
         Trade(
             uniqueid="DEADBEEF",
             datetime=datetime(2010, 10, 29, 14, 38, 9),
             memo="PILGRIMS PRIDE CORP-NEW",
             currency=models.Currency.USD,
             cash=Decimal("1223"),
             fiaccount=self.account,
             security=self.securities[0],
             units=Decimal("-200"),
             sort=models.TransactionSort.MINGAIN,
         )
     ]
Exemple #5
0
 def persisted_txs(self):
     # 2nd trade cancels the 1st; 4th trade cancels the 3rd
     # Leaving the last trade as the only one
     return [
         Trade(
             uniqueid="DEADBEEF",
             datetime=datetime(2011, 5, 9),
             memo="CONVERA CORPORATION - SPINOFF",
             currency=models.Currency.USD,
             cash=Decimal("1477.3194048"),
             fiaccount=self.account,
             security=self.securities[0],
             units=Decimal("-0.276942"),
         )
     ]
Exemple #6
0
    def setUp(self):
        tx0 = Trade(
            datetime=datetime(2016, 1, 1),
            uniqueid="",
            fiaccount=None,
            security=None,
            units=Decimal("100"),
            cash=Decimal("-1000"),
            currency="USD",
        )
        self.lot0 = Lot(
            opentransaction=tx0,
            createtransaction=tx0,
            units=tx0.units,
            price=abs(tx0.cash / tx0.units),
            currency=tx0.currency,
        )

        tx1 = Trade(
            datetime=datetime(2016, 1, 3),
            uniqueid="",
            fiaccount=None,
            security=None,
            units=Decimal("300"),
            cash=Decimal("-3600"),
            currency="USD",
        )
        self.lot1 = Lot(
            opentransaction=tx1,
            createtransaction=tx1,
            units=tx1.units,
            price=abs(tx1.cash / tx1.units),
            currency=tx1.currency,
        )

        self.portfolio = Portfolio({(None, None): [self.lot0, self.lot1]})
Exemple #7
0
    def testRetOfCapMultiplePositions(self):
        """
        Test Portfolio route ReturnOfCapital to correct (account, security)
        """
        tx4 = Trade(
            uniqueid="",
            datetime=datetime(2016, 1, 1),
            fiaccount="",
            security="",
            units=Decimal("100"),
            cash=Decimal("1000"),
            currency="USD",
        )
        lot4 = Lot(
            opentransaction=tx4,
            createtransaction=tx4,
            units=tx4.units,
            price=abs(tx4.cash / tx4.units),
            currency=tx4.currency,
        )

        tx5 = Trade(
            uniqueid="",
            datetime=datetime(2016, 1, 2),
            fiaccount="",
            security="",
            units=Decimal("200"),
            cash=Decimal("2200"),
            currency="USD",
        )
        lot5 = Lot(
            opentransaction=tx5,
            createtransaction=tx5,
            units=tx5.units,
            price=abs(tx5.cash / tx5.units),
            currency=tx5.currency,
        )

        tx6 = Trade(
            uniqueid="",
            datetime=datetime(2016, 1, 2),
            fiaccount="",
            security="",
            units=Decimal("300"),
            cash=Decimal("3600"),
            currency="USD",
        )
        lot6 = Lot(
            opentransaction=tx6,
            createtransaction=tx6,
            units=tx6.units,
            price=abs(tx6.cash / tx6.units),
            currency=tx6.currency,
        )

        self.portfolio[(None, "sec4")].append(lot4)
        self.portfolio[("acct5", "sec5")].append(lot5)
        self.portfolio[("acct6", None)].append(lot6)

        # This routes to (None, None) - [self.lot1, self.lot2, self.lot3]; 600sh
        retofcap1 = ReturnOfCapital(
            uniqueid="",
            fiaccount=None,
            security=None,
            datetime=datetime(2016, 6, 1),
            cash=Decimal("1200"),
            currency="USD",
        )
        # This routes to ('acct6', None) - lot6; 300sh
        retofcap2 = ReturnOfCapital(
            uniqueid="",
            fiaccount="acct6",
            security=None,
            datetime=datetime(2016, 6, 1),
            cash=Decimal("600"),
            currency="USD",
        )
        # This routes to (None, 'sec4') - lot4; 100sh
        retofcap3 = ReturnOfCapital(
            uniqueid="",
            fiaccount=None,
            security="sec4",
            datetime=datetime(2016, 6, 1),
            cash=Decimal("300"),
            currency="USD",
        )
        # This routes to ('acct5', 'sec5') - lot5; 200sh
        retofcap4 = ReturnOfCapital(
            uniqueid="",
            fiaccount="acct5",
            security="sec5",
            datetime=datetime(2016, 6, 1),
            cash=Decimal("800"),
            currency="USD",
        )
        for retofcap in (retofcap1, retofcap2, retofcap3, retofcap4):
            self.portfolio.book(retofcap)

        position = self.portfolio[(None, None)]
        self.assertEqual(len(position), 3)
        self.assertEqual(position[0], self.lot1._replace(price=Decimal("8")))
        self.assertEqual(position[1], self.lot2._replace(price=Decimal("9")))
        self.assertEqual(position[2], self.lot3._replace(price=Decimal("10")))

        position = self.portfolio[(None, "sec4")]
        self.assertEqual(len(position), 1)
        self.assertEqual(position[0], lot4._replace(price=Decimal("7")))

        position = self.portfolio[("acct5", "sec5")]
        self.assertEqual(len(position), 1)
        self.assertEqual(position[0], lot5._replace(price=Decimal("7")))

        position = self.portfolio[("acct6", None)]
        self.assertEqual(len(position), 1)
        self.assertEqual(position[0], lot6._replace(price=Decimal("10")))
Exemple #8
0
 def setUp(self):
     self.trades = [
         Trade(
             uniqueid="20160104.U99.e.USD.1468544894",
             datetime=datetime(2016, 1, 4, 14, 57, 40),
             fiaccount=None,
             security=None,
             units=Decimal("-200.00"),
             # price=Decimal('15.808'),
             cash=Decimal("3161.5975047"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160104.U99.e.USD.1468552856",
             datetime=datetime(2016, 1, 4, 14, 59, 51),
             fiaccount=None,
             security=None,
             units=Decimal("-300.00"),
             # price=Decimal('15.7979'),
             cash=Decimal("4739.36631225"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160104.U99.e.USD.1468552920",
             datetime=datetime(2016, 1, 4, 14, 59, 53),
             fiaccount=None,
             security=None,
             units=Decimal("-300.00"),
             # price=Decimal('15.7973'),
             cash=Decimal("4739.18631225"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160104.U99.e.USD.1468942125",
             datetime=datetime(2016, 1, 4, 17, 33, 15),
             fiaccount=None,
             security=None,
             units=Decimal("-200.00"),
             # price=Decimal('15.7973'),
             cash=Decimal("3159.4575415"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469598029",
             datetime=datetime(2016, 1, 5, 14, 49, 36),
             fiaccount=None,
             security=None,
             units=Decimal("-100.00"),
             # price=Decimal('16.9129'),
             cash=Decimal("1691.28670995"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469598030",
             datetime=datetime(2016, 1, 5, 14, 49, 36),
             fiaccount=None,
             security=None,
             units=Decimal("-100.00"),
             # price=Decimal('16.908'),
             cash=Decimal("1690.79672835"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469598191",
             datetime=datetime(2016, 1, 5, 14, 49, 36),
             fiaccount=None,
             security=None,
             units=Decimal("-100.00"),
             # price=Decimal('16.9429'),
             cash=Decimal("1694.28665475"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469598198",
             datetime=datetime(2016, 1, 5, 14, 49, 36),
             fiaccount=None,
             security=None,
             units=Decimal("-100.00"),
             # price=Decimal('16.908'),
             cash=Decimal("1690.79672835"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469598231",
             datetime=datetime(2016, 1, 5, 14, 49, 39),
             fiaccount=None,
             security=None,
             units=Decimal("-100.00"),
             # price=Decimal('16.908'),
             cash=Decimal("1690.79672835"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469598296",
             datetime=datetime(2016, 1, 5, 14, 49, 39),
             fiaccount=None,
             security=None,
             units=Decimal("-300.00"),
             # price=Decimal('16.90796666666666666666666667'),
             cash=Decimal("5072.39018505"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469598410",
             datetime=datetime(2016, 1, 5, 14, 49, 42),
             fiaccount=None,
             security=None,
             units=Decimal("-100.00"),
             # price=Decimal('16.908'),
             cash=Decimal("1690.79672835"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469598426",
             datetime=datetime(2016, 1, 5, 14, 49, 43),
             fiaccount=None,
             security=None,
             units=Decimal("-100.00"),
             # price=Decimal('16.908'),
             cash=Decimal("1690.79672835"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469770926",
             datetime=datetime(2016, 1, 5, 15, 58, 28),
             fiaccount=None,
             security=None,
             units=Decimal("-125.00"),
             # price=Decimal('17.50792'),
             cash=Decimal("2188.494530438"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469801076",
             datetime=datetime(2016, 1, 5, 16, 14, 53),
             fiaccount=None,
             security=None,
             units=Decimal("-61.00"),
             # price=Decimal('17.49721311475409836065573770'),
             cash=Decimal("1067.332642078"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160105.U99.e.USD.1469807788",
             datetime=datetime(2016, 1, 5, 16, 18, 29),
             fiaccount=None,
             security=None,
             units=Decimal("-814.00"),
             # price=Decimal('17.49726044226044226044226044'),
             cash=Decimal("14242.766731985"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160113.U99.e.USD.1476575799",
             datetime=datetime(2016, 1, 13, 14, 41, 14),
             fiaccount=None,
             security=None,
             units=Decimal("-1.00"),
             # price=Decimal('14.66'),
             cash=Decimal("14.661247566"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160113.U99.e.USD.1476579053",
             datetime=datetime(2016, 1, 13, 14, 42, 15),
             fiaccount=None,
             security=None,
             units=Decimal("-493.00"),
             # price=Decimal('14.67791075050709939148073022'),
             cash=Decimal("7236.208799542"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160113.U99.e.USD.1476579068",
             datetime=datetime(2016, 1, 13, 14, 42, 15),
             fiaccount=None,
             security=None,
             units=Decimal("-100.00"),
             # price=Decimal('14.7329'),
             cash=Decimal("1473.29072115"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160113.U99.e.USD.1476579070",
             datetime=datetime(2016, 1, 13, 14, 42, 15),
             fiaccount=None,
             security=None,
             units=Decimal("-200.00"),
             # price=Decimal('14.6779'),
             cash=Decimal("2935.5816631"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160113.U99.e.USD.1476581751",
             datetime=datetime(2016, 1, 13, 14, 42, 58),
             fiaccount=None,
             security=None,
             units=Decimal("-200.00"),
             # price=Decimal('14.8529'),
             cash=Decimal("2970.5810007"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160113.U99.e.USD.1476581755",
             datetime=datetime(2016, 1, 13, 14, 42, 58),
             fiaccount=None,
             security=None,
             units=Decimal("-6.00"),
             # price=Decimal('14.8080059235'),
             cash=Decimal("88.848035541"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160113.U99.e.USD.1476581819",
             datetime=datetime(2016, 1, 13, 14, 42, 58),
             fiaccount=None,
             security=None,
             units=Decimal("-1000.00"),
             # price=Decimal('14.8080059235'),
             cash=Decimal("14808.0059235"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160126.U99.e.USD.1487338567",
             datetime=datetime(2016, 1, 26, 17, 52, 17),
             fiaccount=None,
             security=None,
             units=Decimal("258.00"),
             # price=Decimal('10.74170542635658914728682171'),
             cash=Decimal("-2771.359263705"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160126.U99.e.USD.1487338568",
             datetime=datetime(2016, 1, 26, 17, 52, 17),
             fiaccount=None,
             security=None,
             units=Decimal("200.00"),
             # price=Decimal('10.7417'),
             cash=Decimal("-2148.3405145"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160126.U99.e.USD.1487338788",
             datetime=datetime(2016, 1, 26, 17, 52, 25),
             fiaccount=None,
             security=None,
             units=Decimal("200.00"),
             # price=Decimal('10.7417'),
             cash=Decimal("-2148.3405145"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160126.U99.e.USD.1487346935",
             datetime=datetime(2016, 1, 26, 17, 58, 18),
             fiaccount=None,
             security=None,
             units=Decimal("100.00"),
             # price=Decimal('10.7417'),
             cash=Decimal("-1074.17025725"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160126.U99.e.USD.1487346940",
             datetime=datetime(2016, 1, 26, 17, 58, 18),
             fiaccount=None,
             security=None,
             units=Decimal("242.00"),
             # price=Decimal('10.74169421487603305785123967'),
             cash=Decimal("-2599.492022545"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160126.U99.e.USD.1487504352",
             datetime=datetime(2016, 1, 26, 19, 45, 40),
             fiaccount=None,
             security=None,
             units=Decimal("70.00"),
             # price=Decimal('10.74314285714285714285714286'),
             cash=Decimal("-752.02425725"),
             currency="USD",
         ),
         Trade(
             uniqueid="20160126.U99.e.USD.1487510413",
             datetime=datetime(2016, 1, 26, 19, 50, 19),
             fiaccount=None,
             security=None,
             units=Decimal("100.00"),
             # price=Decimal('10.7413'),
             cash=Decimal("-1074.125180075"),
             currency="USD",
         ),
     ]