def test_lead(self):
        market = get_test_market_a()
        lead = shf.LeadFeature(schema.open, 1)

        expected_data = pd.Series([2.3, 3.4, 3.4, 2.0, np.nan], index=dates)
        transformed_data = lead.fit_transform(market.data)[lead.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_hl_range(self):
        market = get_test_market_a()
        feature = ibf.HighLowRange()

        expected_data = pd.Series([0.8, 1.4, 2.0, 1.4, 1.3], index=dates)
        transformed_data = feature.fit_transform(market.data)[feature.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_oc_change(self):
        market = get_test_market_a()
        feature = ibf.OpenCloseChange()

        expected_data = pd.Series([0.8, 1.0, 1.3, -1.0, -1.2], index=dates)
        transformed_data = feature.fit_transform(market.data)[feature.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_oh_range(self):
        market = get_test_market_a()
        feature = ibf.OpenHighRange()

        expected_data = pd.Series([0.8, 1.2, 1.6, 0.2, 0], index=dates)
        transformed_data = feature.fit_transform(market.data)[feature.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_median(self):
        market = get_test_market_a()
        median = wf.Median(schema.close, 3)

        expected_data = pd.Series([np.nan, np.nan, 3.3, 3.3, 2.4], index=dates)
        transformed_data = median.fit_transform(market.data)[median.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_range(self):
        market = get_test_market_a()
        range = wf.Range(schema.high, 3)

        expected_data = pd.Series([np.nan, np.nan, 3.1, 1.5, 3.0], index=dates)
        transformed_data = range.fit_transform(market.data)[range.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_is_down_body(self):
        market = get_test_market_b()
        feature = ibf.IsDownBody()

        expected_data = pd.Series([1, 0, 1, 0, 1], index=dates)
        transformed_data = feature.fit_transform(market.data)[feature.name]

        assert_elements_equal(self, expected_data, transformed_data)
示例#8
0
    def test_less_or_equal(self):
        market = get_test_market_a()
        feature = cf.LessOrEqualFeature(schema.low, 2.2)

        expected_data = pd.Series([True, True, False, True, True], index=dates)
        transformed_data = feature.fit_transform(market.data)[feature.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_change(self):
        market = get_test_market_a()
        change = wf.Change(schema.close, 3)

        expected_data = pd.Series([np.nan, np.nan, 2.8, -0.9, -3.9],
                                  index=dates)
        transformed_data = change.fit_transform(market.data)[change.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_rolling_min(self):
        market = get_test_market_b()
        min = wf.Min(schema.low, 3)

        expected_data = pd.Series([np.nan, np.nan, 19.50, 19.50, 17.65],
                                  index=dates)
        transformed_data = min.fit_transform(market.data)[min.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_rolling_max(self):
        market = get_test_market_b()
        max = wf.Max(schema.high, 3)

        expected_data = pd.Series([np.nan, np.nan, 21.30, 23.65, 23.65],
                                  index=dates)
        transformed_data = max.fit_transform(market.data)[max.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_moving_average(self):
        market = get_test_market_a()
        average = wf.Average(schema.close, 3)

        expected_data = pd.Series([np.nan, np.nan, 3.3, 3.467, 2.633],
                                  index=dates)
        transformed_data = average.fit_transform(market.data)[average.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_body_proportion(self):
        market = get_test_market_a()
        feature = ibf.BodyProportion()

        expected_data = pd.Series(
            [1.0, 1.0 / 1.4, 1.3 / 2.0, 1.0 / 1.4, 1.2 / 1.3], index=dates)
        transformed_data = feature.fit_transform(market.data)[feature.name]

        assert_elements_equal(self, expected_data, transformed_data)
示例#14
0
    def test_ratio(self):
        market = get_test_market_a()
        feature = nf.RatioFeature(schema.high, schema.low)

        expected_data = pd.Series([1.727, 1.667, 1.667, 1.636, 2.857],
                                  index=dates)
        transformed_data = feature.fit_transform(market.data)[feature.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_oc_direction(self):
        market = get_test_market_b()
        feature = ibf.OpenCloseDirection()

        expected_data = pd.Series([md.down, md.up, md.down, md.flat, md.down],
                                  index=dates)
        transformed_data = feature.fit_transform(market.data)[feature.name]

        assert_elements_equal(self, expected_data, transformed_data)
示例#16
0
    def test_greater_than(self):
        market = get_test_market_a()
        feature = cf.GreaterThanFeature(schema.low, 2.2)

        expected_data = pd.Series([False, False, True, False, False],
                                  index=dates)
        transformed_data = feature.fit_transform(market.data)[feature.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_lag(self):
        market = get_test_market_a()
        lag = shf.LagFeature(schema.open, 1)

        expected_data = pd.Series([np.nan, 1.1, 2.3, 3.4, 3.4], index=dates)
        transformed_data = lag.fit_transform(market.data)[lag.name]

        assert_elements_equal(self, expected_data, transformed_data)

        
    def test_streak(self):
        market = get_test_market_a()
        direction = ibf.OpenCloseDirection()
        streak = sf.StreakCounterFeature(direction.name)

        with_direction = direction.fit_transform(market.data)
        
        expected_data = pd.Series([0,1,2,0,1], index=dates)
        transformed_data = streak.fit_transform(with_direction)[streak.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_up_bar_proportion(self):
        market = get_test_market_a()
        up_bar_proportion = wf.UpBarProportion(3)

        data_with_is_up_body = ibf.IsUpBody().fit_transform(market.data)

        expected_data = pd.Series([np.nan, np.nan, 1.0, 2 / 3, 1 / 3],
                                  index=dates)
        transformed_data = up_bar_proportion.fit_transform(
            data_with_is_up_body)[up_bar_proportion.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_down_bar_proportion(self):
        market = get_test_market_a()
        down_bar_proportion = wf.DownBarProportion(3)

        data_with_is_down_body = ibf.IsDownBody().fit_transform(market.data)

        expected_data = pd.Series([np.nan, np.nan, 0.0, 1 / 3, 2 / 3],
                                  index=dates)
        transformed_data = down_bar_proportion.fit_transform(
            data_with_is_down_body)[down_bar_proportion.name]

        assert_elements_equal(self, expected_data, transformed_data)
示例#21
0
    def test_equal(self):
        market = get_test_market_a()
        direction = ibf.OpenCloseDirection()
        equal = cf.EqualFeature(direction.name, md.down)

        with_direction = direction.fit_transform(market.data)

        expected_data = pd.Series([False, False, False, True, True],
                                  index=dates)
        transformed_data = equal.fit_transform(with_direction)[equal.name]

        assert_elements_equal(self, expected_data, transformed_data)
    def test_streak_counter_by_value(self):
        market = get_test_market_a()
        direction = ibf.OpenCloseDirection()
        streak = sf.StreakCounterFeature(direction.name)
        streak_counter_by_value = sf.StreakCounterByValueFeature(direction.name, md.up)

        with_direction = direction.fit_transform(market.data)
        with_streak = streak.fit_transform(with_direction)

        expected_data = pd.Series([0,1,2,0,0], index=dates)
        transformed_data = streak_counter_by_value.fit_transform(with_streak)[streak_counter_by_value.name]
        
        assert_elements_equal(self, expected_data, transformed_data)