def test_calc_account_nan_case(self): acc = Account(buffer_len=6, kw=True) asset1 = mock.MagicMock(Asset) asset2 = mock.MagicMock(Asset) asset1.get_margin_requirements.return_value = np.nan asset2.get_margin_requirements.return_value = 200 acc._position = { asset1: (1, 2, 3, None), asset2: (2, 2, 3, None) } self.assertRaises(ValueError, acc._calc_account_margin, pd.Timestamp('2018-01-02'))
def test_calc_account_margin(self): acc = Account(buffer_len=6, kw=True) asset1 = mock.MagicMock(Asset) asset2 = mock.MagicMock(Asset) asset1.get_margin_requirements.return_value = 100 asset2.get_margin_requirements.return_value = 200 acc._position = { asset1: (1, 2, 3, None), asset2: (2, 2, 3, None) } margin = acc._calc_account_margin(pd.Timestamp('2018-01-02')) self.assertEqual(margin, 300) self.assertEqual((pd.Timestamp('2018-01-02'), 1), asset1.get_margin_requirements.call_args[0]) self.assertEqual((pd.Timestamp('2018-01-02'), 2), asset2.get_margin_requirements.call_args[0])
def test_position(self): acc = Account(buffer_len=6, kw=True) asset1 = mock.MagicMock(Asset) asset2 = mock.MagicMock(Asset) acc._position = { asset1: (1, 2, 3, None), asset2: (2, 2, 3, None) } p = acc.position() self.assertEqual(True, isinstance(p, dict)) self.assertEqual(True, asset1 in p) self.assertEqual(True, asset2 in p) self.assertTrue(isinstance(p[asset1], PositionInfo)) self.assertTrue(isinstance(p[asset2], PositionInfo)) self.assertEqual(asset1, p[asset1].asset) self.assertEqual(asset2, p[asset2].asset) self.assertEqual(1, p[asset1].qty) self.assertEqual(2, p[asset2].qty)