def test_get_returns_cash_only(self): portfolio = Portfolio({CASH: Decimal(1000)}) act_dates, act_returns = portfolio.get_returns() self.assertEqual(len(act_dates), 365) self.assertEqual(len(act_returns), len(act_dates)) self.assertEqual(act_returns[0][0], 1000) self.assertEqual(act_returns[-1][0], 1000)
def test_get_returns(self): portfolio = Portfolio({CASH: Decimal(1000), VFV: Decimal(1000)}) act_dates, act_returns = portfolio.get_returns() self.assertEqual(len(act_dates), 365) self.assertEqual(len(act_returns), len(act_dates)) shares = Decimal(1000) / Decimal('28.89') self.assertEqual(act_returns[0][0], 2000) # starting CASH + VFV self.assertEqual(act_returns[-1][0], shares * Decimal('30.69') + 1000)
def test_get_returns_mismatched_dates(self): aaa_dates = np.array([[date(2016, 1, 1)], [date(2016, 1, 2)], [date(2016, 1, 3)]]) aaa_prices = np.array([[42], [43], [44]]) bbb_dates = np.array([[date(2016, 1, 2)], [date(2016, 1, 3)]]) bbb_prices = np.array([[57], [58]]) AAA = FixedPricesInstrument('AAA', aaa_dates, aaa_prices) BBB = FixedPricesInstrument('BBB', bbb_dates, bbb_prices) portfolio = Portfolio({AAA: Decimal(1000), BBB: Decimal(1000)}) act_dates, act_returns = portfolio.get_returns()