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]
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] })
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, ) ]
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"), ) ]
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]})
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")))
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", ), ]