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)
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)
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)
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)
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)