Esempio n. 1
0
 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")),
         ),
     )
Esempio n. 4
0
 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")),
         ),
     )
Esempio n. 5
0
 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")),
         ),
     )
Esempio n. 6
0
 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")),
         ),
     )
Esempio n. 7
0
 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)
Esempio n. 8
0
    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)
Esempio n. 9
0
    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)
Esempio n. 10
0
    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"))})
Esempio n. 12
0
 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")))
Esempio n. 13
0
 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")))
Esempio n. 14
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")))
Esempio n. 15
0
 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")))