def test_empty_at_initialize(self): close = self.app_context.inst_data_mgr.get_series("bar") close.start(self.app_context) sma3 = SMA(inputs=close, input_keys='close', length=3) sma20 = SMA(inputs=close, input_keys='close', length=20) sma50 = SMA(inputs=close, input_keys='close', length=50) sma3.start(self.app_context) sma20.start(self.app_context) rank = Rank(inputs=[sma3, sma20, sma50], input_keys='close') rank.start(self.app_context) self.assertEquals(0, len(rank.get_data()))
def test_empty_at_initialize(self): close = self.app_context.inst_data_mgr.get_series("bar") close.start(self.app_context) sma3 = SMA(close, input_key='close', length=3) sma20 = SMA(close, input_key='close', length=20) sma50 = SMA(close, input_key='close', length=50) sma3.start(self.app_context) sma20.start(self.app_context) rank = Rank([sma3, sma20, sma50], input_key='close') rank.start(self.app_context) self.assertEquals(0, len(rank.get_data()))
def test_with_multiple_bar(self): bar0 = self.app_context.inst_data_mgr.get_series("bar0") bar1 = self.app_context.inst_data_mgr.get_series("bar1") bar2 = self.app_context.inst_data_mgr.get_series("bar2") bar3 = self.app_context.inst_data_mgr.get_series("bar3") bar0.start(self.app_context) bar1.start(self.app_context) bar2.start(self.app_context) bar3.start(self.app_context) barlist = [bar0, bar1, bar2, bar3] rank = Rank(inputs=barlist, input_keys='close') avg = Average(inputs=barlist, input_keys='close') gssum = GSSum(inputs=barlist, input_keys='close') absv = Abs(inputs=barlist, input_keys='close') tail = Tail(inputs=barlist, input_keys='close', lb=94, ub=103, newval=101) signvec = Sign(inputs=barlist, input_keys='close') decaylinear = DecayLinear(inputs=barlist, input_keys='close', length=3) scale = Scale(inputs=barlist, input_keys='close') rank.start(self.app_context) avg.start(self.app_context) gssum.start(self.app_context) absv.start(self.app_context) tail.start(self.app_context) signvec.start(self.app_context) decaylinear.start(self.app_context) scale.start(self.app_context) t1 = 1 bar_t1_array = np.array([80, 95, 102, 105]) bar0.add(data={"timestamp": t1, "close": bar_t1_array[0], "open": 0}) bar1.add(data={"timestamp": t1, "close": bar_t1_array[1], "open": 0}) bar2.add(data={"timestamp": t1, "close": bar_t1_array[2], "open": 0}) bar3.add(data={"timestamp": t1, "close": bar_t1_array[3], "open": 0}) # self.assertEquals([{"timestamp": t1, # "name": "'Rank('bar0','bar1','bar2','bar3',close)'", # "value": np.arange(4)/3.0}], # rank.get_data()) rank_target = np.arange(4) / 3.0 rank_target = rank_target.reshape((1, 4)) avg_target = np.array([[95.5]]) sum_target = np.array([[382.0]]) abs_target = np.array([[80.0, 95.0, 102.0, 105.0]]) tail_target = np.array([[80.0, 101.0, 101.0, 105.0]]) signvec_target = np.array([[1.0, 1.0, 1.0, 1.0]]) scale_target = bar_t1_array / np.sum(bar_t1_array) scale_target = scale_target.reshape(1, 4) self.__np_assert_almost_equal(abs_target, absv.now()["value"]) self.__np_assert_almost_equal(rank_target, rank.get_data()[0]["value"], 5) self.__np_assert_almost_equal(avg_target, avg.get_data()[0]["value"], 5) self.__np_assert_almost_equal(sum_target, gssum.get_data()[0]["value"], 5) self.__np_assert_almost_equal(tail_target, tail.get_data()[0]["value"], 5) self.__np_assert_almost_equal(signvec_target, signvec.get_data()[0]["value"], 5) self.__np_assert_almost_equal(scale_target, scale.get_data()[0]["value"], 5) t2 = t1 + 3 bar_t2_array = np.array([85, 98, 101.5, 103]) bar0.add(data={"timestamp": t2, "close": bar_t2_array[0], "open": 0}) bar1.add(data={"timestamp": t2, "close": bar_t2_array[1], "open": 0}) bar2.add(data={"timestamp": t2, "close": bar_t2_array[2], "open": 0}) bar3.add(data={"timestamp": t2, "close": bar_t2_array[3], "open": 0}) t3 = t2 + 3 bar_t3_array = np.array([87, 91, 107.0, 115]) bar0.add(data={"timestamp": t3, "close": bar_t3_array[0], "open": 0}) bar1.add(data={"timestamp": t3, "close": bar_t3_array[1], "open": 0}) bar2.add(data={"timestamp": t3, "close": bar_t3_array[2], "open": 0}) bar3.add(data={"timestamp": t3, "close": bar_t3_array[3], "open": 0}) stack = np.vstack([bar_t1_array, bar_t2_array, bar_t3_array]) decaylinear_target = np.dot(np.arange(3, 0, -1), stack) / np.sum( np.arange(3, 0, -1)) scale_target = bar_t3_array / np.sum(bar_t3_array) scale_target = scale_target.reshape(1, 4) self.__np_assert_almost_equal(decaylinear_target, decaylinear.now(keys=PipeLine.VALUE)) self.__np_assert_almost_equal(scale_target, scale.now(keys=PipeLine.VALUE))
def test_with_multiple_bar(self): bar0 = self.app_context.inst_data_mgr.get_series("bar0") bar1 = self.app_context.inst_data_mgr.get_series("bar1") bar2 = self.app_context.inst_data_mgr.get_series("bar2") bar3 = self.app_context.inst_data_mgr.get_series("bar3") bar0.start(self.app_context) bar1.start(self.app_context) bar2.start(self.app_context) bar3.start(self.app_context) barlist = [bar0, bar1, bar2, bar3] rank = Rank(barlist, input_key='close') avg = Average(barlist, input_key='close') gssum = GSSum(barlist, input_key='close') absv = Abs(barlist, input_key='close') tail = Tail(barlist, lb=94, ub=103, newval=101, input_key='close') signvec = Sign(barlist, input_key='close') decaylinear = DecayLinear(barlist, length=3, input_key='close') scale = Scale(barlist, input_key='close') rank.start(self.app_context) avg.start(self.app_context) gssum.start(self.app_context) absv.start(self.app_context) tail.start(self.app_context) signvec.start(self.app_context) decaylinear.start(self.app_context) scale.start(self.app_context) t1 = datetime.datetime.now() bar_t1_array = np.array([80, 95, 102, 105]) bar0.add({"timestamp": t1, "close": bar_t1_array[0], "open": 0}) bar1.add({"timestamp": t1, "close": bar_t1_array[1], "open": 0}) bar2.add({"timestamp": t1, "close": bar_t1_array[2], "open": 0}) bar3.add({"timestamp": t1, "close": bar_t1_array[3], "open": 0}) # self.assertEquals([{"timestamp": t1, # "name": "'Rank('bar0','bar1','bar2','bar3',close)'", # "value": np.arange(4)/3.0}], # rank.get_data()) rank_target = np.arange(4)/3.0 rank_target = rank_target.reshape((1,4)) avg_target = 95.5 # for those return scala, it is a scala sum_target = 382.0 abs_target = np.array([[80.0, 95.0, 102.0, 105.0]]) tail_target = np.array([[80.0, 101.0, 101.0, 105.0]]) signvec_target = np.array([[1.0, 1.0, 1.0, 1.0]]) scale_target = bar_t1_array / np.sum(bar_t1_array) scale_target = scale_target.reshape(1, 4) # self.__np_assert_almost_equal(abs_target, absv.now()["value"]) # self.__np_assert_almost_equal(rank_target, rank.get_data()[0]["value"], 5) # self.__np_assert_almost_equal(avg_target, avg.get_data()[0]["value"], 5) # self.__np_assert_almost_equal(sum_target, gssum.get_data()[0]["value"], 5) # self.__np_assert_almost_equal(tail_target, tail.get_data()[0]["value"], 5) # self.__np_assert_almost_equal(signvec_target, signvec.get_data()[0]["value"], 5) # self.__np_assert_almost_equal(scale_target, scale.get_data()[0]["value"], 5) self.assertAlmostEqual(abs_target.tolist(), absv.now()["value"]) self.assertAlmostEqual(abs_target.tolist(), absv.get_data()[0]["value"], 5) self.assertAlmostEqual(rank_target.tolist(), rank.get_data()[0]["value"], 5) self.assertAlmostEqual(avg_target, avg.get_data()[0]["value"], 5) self.assertAlmostEqual(sum_target, gssum.get_data()[0]["value"], 5) self.assertAlmostEqual(tail_target.tolist(), tail.get_data()[0]["value"], 5) self.assertAlmostEqual(signvec_target.tolist(), signvec.get_data()[0]["value"], 5) self.assertAlmostEqual(scale_target.tolist(), scale.get_data()[0]["value"], 5) t2 = t1 + datetime.timedelta(0, 3) bar_t2_array = np.array([85, 98, 101.5, 103]) bar0.add({"timestamp": t2, "close": bar_t2_array[0], "open": 0}) bar1.add({"timestamp": t2, "close": bar_t2_array[1], "open": 0}) bar2.add({"timestamp": t2, "close": bar_t2_array[2], "open": 0}) bar3.add({"timestamp": t2, "close": bar_t2_array[3], "open": 0}) t3 = t2 + datetime.timedelta(0, 3) bar_t3_array = np.array([87, 91, 107.0, 115]) bar0.add({"timestamp": t3, "close": bar_t3_array[0], "open": 0}) bar1.add({"timestamp": t3, "close": bar_t3_array[1], "open": 0}) bar2.add({"timestamp": t3, "close": bar_t3_array[2], "open": 0}) bar3.add({"timestamp": t3, "close": bar_t3_array[3], "open": 0}) stack = np.vstack([bar_t1_array, bar_t2_array, bar_t3_array]) decaylinear_target = np.dot(np.arange(3, 0, -1), stack)/np.sum(np.arange(3, 0, -1)) scale_target = bar_t3_array / np.sum(bar_t3_array) scale_target = scale_target.reshape(1, 4) self.assertAlmostEqual(decaylinear_target.tolist(), decaylinear.now(keys=PipeLine.VALUE)) self.assertAlmostEqual(scale_target.tolist(), scale.now(keys=PipeLine.VALUE))