def test_buyFutureOption(self) -> None: symbol = "GBUJ9 C1335" ts = self.tradesBySymbol[symbol] self.assertEqual(len(ts), 1) self.assertEqual(ts[0].date.date(), date(2019, 3, 4)) self.assertEqual( ts[0].instrument, FutureOption( symbol=symbol, currency=Currency.USD, underlying="BPM9", optionType=OptionType.CALL, expiration=date(2019, 4, 5), strike=Decimal("1.335"), multiplier=Decimal(62500), exchange="GLOBEX", ), ) self.assertEqual(ts[0].quantity, Decimal("1")) self.assertEqual(ts[0].amount, helpers.cashUSD(Decimal("-918.75"))) self.assertEqual(ts[0].fees, helpers.cashUSD(Decimal("2.47"))) self.assertEqual( ts[0].price, Cash(currency=Currency.USD, quantity=Decimal("0.0147"))) self.assertEqual(ts[0].flags, TradeFlags.OPEN)
def test_cashInterest(self) -> None: ts = self.activityByDate[date(2017, 8, 31)] self.assertEqual(len(ts), 1) self.assertEqual( ts[0], CashPayment( date=ts[0].date, instrument=None, proceeds=helpers.cashUSD(Decimal("0.02")), ), )
def test_dividendPayment(self) -> None: ts = self.activityByDate[date(2017, 11, 9)] self.assertEqual(len(ts), 5) self.assertEqual( ts[2], CashPayment( date=ts[2].date, instrument=Stock("ROBO", Currency.USD), proceeds=helpers.cashUSD(Decimal("6.78")), ), )
def test_stockLoanInterest(self) -> None: ts = self.activityByDate[date(2019, 1, 1)] self.assertEqual(len(ts), 1) self.assertEqual( ts[0], CashPayment( date=ts[0].date, instrument=Stock("TSLA", Currency.USD, exchange="NASDAQ"), proceeds=helpers.cashUSD(Decimal("0.01")), ), )
def test_cashDividend(self) -> None: ts = self.activityByDate[date(2018, 3, 6)] self.assertEqual(len(ts), 1) self.assertEqual( ts[0], CashPayment( date=ts[0].date, instrument=Stock("VGLT", Currency.USD), proceeds=helpers.cashUSD(Decimal("12.85")), ), )
def test_dividendReinvested(self) -> None: ts = self.activityByDate[date(2017, 3, 28)] self.assertEqual(len(ts), 1) self.assertEqual( ts[0], CashPayment( date=ts[0].date, instrument=Stock("VOO", Currency.USD), proceeds=helpers.cashUSD(Decimal("22.95")), ), )
def test_buyFuture(self) -> None: symbol = "ESH9" ts = self.tradesBySymbol[symbol] self.assertEqual(len(ts), 1) self.assertEqual(ts[0].date.date(), date(2019, 2, 26)) self.assertEqual( ts[0].instrument, Future( symbol=symbol, currency=Currency.USD, multiplier=Decimal(50), expiration=date(2019, 3, 15), exchange="GLOBEX", ), ) self.assertEqual(ts[0].quantity, Decimal("1")) self.assertEqual(ts[0].amount, helpers.cashUSD(Decimal("-139687.5"))) self.assertEqual(ts[0].fees, helpers.cashUSD(Decimal("2.05"))) self.assertEqual( ts[0].price, Cash(currency=Currency.USD, quantity=Decimal("2793.75"))) self.assertEqual(ts[0].flags, TradeFlags.OPEN)
def test_postedAndPaid(self) -> None: ts = self.activityByDate[date(2019, 2, 14)] self.assertEqual(len(ts), 1) self.assertEqual( ts[0], CashPayment( date=ts[0].date, instrument=Stock("AAPL", Currency.USD, exchange="NASDAQ"), proceeds=helpers.cashUSD(Decimal("23.36")), ), ) self.assertNotIn(date(2019, 2, 7), self.activityByDate) self.assertNotIn(date(2019, 2, 8), self.activityByDate)
def test_bondInterest(self) -> None: ts = self.activityByDate[date(2019, 1, 17)] self.assertEqual(len(ts), 1) self.assertEqual( ts[0], CashPayment( date=ts[0].date, instrument=Bond("BA 3 3/4 02/17/19", Currency.USD, validateSymbol=False), proceeds=helpers.cashUSD(Decimal("18.75")), ), ) self.assertNotIn(date(2019, 1, 15), self.activityByDate) self.assertNotIn(date(2019, 1, 14), self.activityByDate)
def test_reinvestShares(self) -> None: ts = self.activityByDate[date(2017, 2, 4)] self.assertEqual(len(ts), 4) self.assertEqual( ts[0], CashPayment( date=ts[0].date, instrument=Stock("VWO", Currency.USD), proceeds=helpers.cashUSD(Decimal("29.35")), ), ) self.assertEqual( ts[1], Trade( date=ts[1].date, instrument=Stock("VWO", Currency.USD), quantity=Decimal("0.123"), amount=Cash(currency=Currency.USD, quantity=Decimal("-20.15")), fees=Cash(currency=Currency.USD, quantity=Decimal("0.00")), flags=TradeFlags.OPEN | TradeFlags.DRIP, ), ) self.assertEqual( ts[3], Trade( date=ts[3].date, instrument=Stock("VOO", Currency.USD), quantity=Decimal("0.321"), amount=Cash(currency=Currency.USD, quantity=Decimal("-17.48")), fees=Cash(currency=Currency.USD, quantity=Decimal("0.00")), flags=TradeFlags.OPEN | TradeFlags.DRIP, ), )
def testUSDBalance(self) -> None: self.assertEqual(self.balance.cash, {Currency.USD: helpers.cashUSD(Decimal("15678.89"))})
def test_vti(self) -> None: self.assertEqual(self.positions[3].instrument, Stock("VTI", Currency.USD)) self.assertEqual(self.positions[3].quantity, Decimal("48.2304")) self.assertEqual(self.positions[3].costBasis, helpers.cashUSD(Decimal("3283.04")))
def test_uvxy(self) -> None: self.assertEqual(self.positions[2].instrument, Stock("UVXY", Currency.USD)) self.assertEqual(self.positions[2].quantity, Decimal("0")) self.assertEqual(self.positions[2].costBasis, helpers.cashUSD(Decimal("0")))
def test_bnd(self) -> None: self.assertEqual(self.positions[1].instrument, Stock("BND", Currency.USD)) self.assertEqual(self.positions[1].quantity, Decimal("36.8179")) self.assertEqual(self.positions[1].costBasis, helpers.cashUSD(Decimal("1801.19")))
def test_tBill(self) -> None: self.assertEqual(self.positions[0].instrument, Bond("193845XM2", Currency.USD)) self.assertEqual(self.positions[0].quantity, 10000) self.assertEqual(self.positions[0].costBasis, helpers.cashUSD(Decimal("9956.80")))