def test_PositionConcentration_3(self): """多头权重""" min_weights = pd.Series() max_weights = pd.Series() cons_obj = PositionConcentration(min_weights, max_weights, 0.1, 0.5) desired_value = 0.20 desired_weights = pd.Series([0.1] * 5 + [0.5] * 2, index=self.stocks) self.check(cons_obj, desired_value, desired_weights, self.init_weights)
def test_PositionConcentration_5(self): """最小最大分别位于0值二端""" min_weights = pd.Series() max_weights = pd.Series() cons_obj = PositionConcentration(min_weights, max_weights, -0.5, 0.2) desired_value = 0.40 desired_weights = pd.Series([-0.5, -0.2853, 0, 0, 0, 0.2146, 0.5], index=self.stocks) self.check(cons_obj, desired_value, desired_weights, self.init_weights)
def test_PositionConcentration_4(self): """空头权重""" min_weights = pd.Series() max_weights = pd.Series() cons_obj = PositionConcentration(min_weights, max_weights, -0.5, -0.1) desired_value = 0.37 desired_weights = pd.Series( [-0.5, -0.2107, -0.1, -0.1, 0, 0.089275, 0.5], index=self.stocks) self.check(cons_obj, desired_value, desired_weights, self.init_weights)
def test_PositionConcentration_2(self): """部分指定权重""" min_weights = pd.Series([-0.4, -0.3, 0.1], index=['000001', '000003', '000004']) max_weights = pd.Series([0.1, 0.3], index=['000002', '000004']) cons_obj = PositionConcentration(min_weights, max_weights) desired_value = 0.37 desired_weights = pd.Series([-0.4, 0, 0, 0.1, 0.0] + [0.5] * 2, index=self.stocks) self.check(cons_obj, desired_value, desired_weights)
def test_PositionConcentration_1(self): """指定所有股票权重""" min_weights = pd.Series([0.1, -0.1, 0.1, 0.2, -0.1, 0.2, 0.3], index=self.stocks) max_weights = pd.Series([0.3, 0.4, 0.25, 0.25, 0.3, 0.25, 0.4], index=self.stocks) cons_obj = PositionConcentration(min_weights, max_weights) desired_value = 0.18 desired_weights = pd.Series([0.1, -0.1, 0.1, 0.2073, 0.3, 0.25, 0.4], index=self.stocks) self.check(cons_obj, desired_value, desired_weights)
def test_PositionConcentration_0(self): """验证输入及配置""" min_weights = pd.Series([-0.2, 0.1, 0.4], index=['000001', '000003', '000004']) max_weights = pd.Series([-0.1, 0.4, 0.3], index=['000001', '000007', '000004']) with self.assertRaises(ValueError): cons_obj = PositionConcentration(min_weights, max_weights) desired_value = 0.19 desired_weights = pd.Series([-0.2, 0, -0.1] + [0.0] * 3 + [0.4], index=self.stocks) self.check(cons_obj, desired_value, desired_weights)