def test_up_progress_solution(self): """ Tests that UP prints progress bar. """ # Initialize UP. up2 = UP(2) # Allocates asset prices to UP. up2.allocate(self.data, verbose=True)
def test_up_wrong_method(self): """ Tests ValueError if the method is not 'hist_performance', 'uniform', or 'top-k'. """ # Initialize UP. up5 = UP(5, weighted='random', k=2) with self.assertRaises(ValueError): # Running allocate will raise ValueError. up5.allocate(self.data)
def test_up_top_k_solution(self): """ Tests UP with top-k experts capital allocation. """ # Initialize UP. up4 = UP(5, weighted='top-k', k=2) # Allocates asset prices to UP. up4.allocate(self.data) # Create np.array of all_weights. all_weights = np.array(up4.all_weights) # Check if all weights sum to 1. for i in range(all_weights.shape[0]): weights = all_weights[i] assert (weights >= 0).all() assert len(weights) == self.data.shape[1] np.testing.assert_almost_equal(np.sum(weights), 1)
def test_up_solution(self): """ Test the calculation of UP weights. """ # Initialize UP. up1 = UP(2) # Allocates asset prices to UP. up1.allocate(self.data) # Create np.array of all_weights. all_weights = np.array(up1.all_weights) # Check if all weights sum to 1. for i in range(all_weights.shape[0]): weights = all_weights[i] assert (weights >= 0).all() assert len(weights) == self.data.shape[1] np.testing.assert_almost_equal(np.sum(weights), 1)
def test_up_recalculate2_error(self): """ Tests ValueError if k is not greater than or equal to 1. """ # Initialize UP. up9 = UP(3, weighted='top-k', k=2) # Allocates asset prices to UP. up9.allocate(self.data) with self.assertRaises(ValueError): # Recalculate will raise ValueError. up9.recalculate_k(0)
def test_up_recalculate1_error(self): """ Tests ValueError if k is not an integer for recalculate. """ # Initialize UP. up8 = UP(3, weighted='top-k', k=2) # Allocates asset prices to UP. up8.allocate(self.data) with self.assertRaises(ValueError): # Recalculate will raise ValueError. up8.recalculate_k(1.5)
def test_up_recalculate_error(self): """ Tests ValueError if k is greater number of experts for recalculate. """ # Initialize UP. up7 = UP(3, weighted='top-k', k=2) # Allocates asset prices to UP. up7.allocate(self.data) with self.assertRaises(ValueError): # Recalculate will raise ValueError. up7.recalculate_k(4)
def test_up_recalculate_solution(self): """ Tests recalculate method in UP. """ # Initialize UP. up6 = UP(3, weighted='top-k', k=2) # Allocates asset prices to UP. up6.allocate(self.data) # Recalculate with k=1. up6.recalculate_k(1) # Create np.array of all_weights. all_weights = np.array(up6.all_weights) # Check if all weights sum to 1. for i in range(all_weights.shape[0]): weights = all_weights[i] assert (weights >= 0).all() assert len(weights) == self.data.shape[1] np.testing.assert_almost_equal(np.sum(weights), 1)