def test_get_events_time_limit_barriers(self): triple_barrier = labels.TripleBarrier(barrier_up=1, barrier_down=1) events_calculated = triple_barrier.get_events( prices=self.prices, time_events=self.prices.index, target=self.target, tl=self.tl_dyn) expected_data = { 'tl': [ dt.datetime.fromisoformat("2020-08-01 08:00:03"), dt.datetime.fromisoformat("2020-08-01 08:00:03"), dt.datetime.fromisoformat("2020-08-01 08:00:03"), dt.datetime.fromisoformat("2020-08-01 08:00:04"), dt.datetime.fromisoformat("2020-08-01 08:00:05"), dt.datetime.fromisoformat("2020-08-01 08:00:08"), dt.datetime.fromisoformat("2020-08-01 08:00:09"), dt.datetime.fromisoformat("2020-08-01 08:00:10"), dt.datetime.fromisoformat("2020-08-01 08:00:11"), dt.datetime.fromisoformat("2020-08-01 08:00:12"), ], 'target': [0.1 for _ in range(10)] } events_expected = pd.DataFrame(data=expected_data, index=self.events.index) pdt.assert_frame_equal(events_expected, events_calculated)
def test_simulate_time_limit_barriers(self): triple_barrier = labels.TripleBarrier(barrier_up=1, barrier_down=1) out_calculated = triple_barrier.simulate(prices=self.prices, events=self.events_dyn, molecule=self.events.index) expected_data = { 'tl': [ dt.datetime.fromisoformat("2020-08-01 08:00:03"), dt.datetime.fromisoformat("2020-08-01 08:00:04"), dt.datetime.fromisoformat("2020-08-01 08:00:05"), dt.datetime.fromisoformat("2020-08-01 08:00:06"), dt.datetime.fromisoformat("2020-08-01 08:00:07"), dt.datetime.fromisoformat("2020-08-01 08:00:08"), dt.datetime.fromisoformat("2020-08-01 08:00:09"), dt.datetime.fromisoformat("2020-08-01 08:00:10"), dt.datetime.fromisoformat("2020-08-01 08:00:11"), dt.datetime.fromisoformat("2020-08-01 08:00:12"), ], 'sl': [ pd.NaT, pd.NaT, dt.datetime.fromisoformat("2020-08-01 08:00:05"), dt.datetime.fromisoformat("2020-08-01 08:00:04"), dt.datetime.fromisoformat("2020-08-01 08:00:05"), *(pd.NaT for _ in range(5)) ], 'pt': [ dt.datetime.fromisoformat("2020-08-01 08:00:03"), dt.datetime.fromisoformat("2020-08-01 08:00:03"), dt.datetime.fromisoformat("2020-08-01 08:00:03"), *(pd.NaT for _ in range(7)) ] } out_expected = pd.DataFrame(data=expected_data, index=self.events.index) pdt.assert_frame_equal(out_expected, out_calculated)
def test_simulate_no_barrier(self): triple_barrier = labels.TripleBarrier() out_calculated = triple_barrier.simulate(prices=self.prices, events=self.events, molecule=self.events.index) expected_data = { 'tl': [pd.NaT for _ in range(10)], 'sl': [pd.NaT for _ in range(10)], 'pt': [pd.NaT for _ in range(10)] } out_expected = pd.DataFrame(data=expected_data, index=self.events.index) pdt.assert_frame_equal(out_expected, out_calculated)
def test_simulate_up_barrier(self): triple_barrier = labels.TripleBarrier(barrier_up=1) out_calculated = triple_barrier.simulate(prices=self.prices, events=self.events, molecule=self.events.index) expected_data = { 'tl': [pd.NaT for _ in range(10)], 'sl': [pd.NaT for _ in range(10)], 'pt': [ dt.datetime.fromisoformat("2020-08-01 08:00:03"), dt.datetime.fromisoformat("2020-08-01 08:00:03"), dt.datetime.fromisoformat("2020-08-01 08:00:03"), *(pd.NaT for _ in range(7)) ] } out_expected = pd.DataFrame(data=expected_data, index=self.events.index) pdt.assert_frame_equal(out_expected, out_calculated)
def test_get_bins_time_limit_barriers(self): data = { 'tl': [ dt.datetime.fromisoformat("2020-08-01 08:00:03"), #0 dt.datetime.fromisoformat("2020-08-01 08:00:03"), #1 dt.datetime.fromisoformat("2020-08-01 08:00:03"), #2 dt.datetime.fromisoformat("2020-08-01 08:00:04"), #3 dt.datetime.fromisoformat("2020-08-01 08:00:05"), #4 dt.datetime.fromisoformat("2020-08-01 08:00:08"), #5 dt.datetime.fromisoformat("2020-08-01 08:00:09"), #6 dt.datetime.fromisoformat("2020-08-01 08:00:10"), #7 dt.datetime.fromisoformat("2020-08-01 08:00:11"), #8 dt.datetime.fromisoformat("2020-08-01 08:00:12"), #9 ], 'target': [0.1 for _ in range(10)] } events = pd.DataFrame(data=data, index=self.events.index) triple_barrier = labels.TripleBarrier() out_calculated = triple_barrier.get_bins(events=events, prices=self.prices) data_expected = { 'ret': [ 12 / 10 - 1, 12 / 10.1 - 1, 12 / 10.2 - 1, 10.1 / 12 - 1, 9 / 10.1 - 1, 9.3 / 9 - 1, 9.4 / 9.1 - 1, np.nan, np.nan, np.nan ], 'bin': [1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, np.nan, np.nan, np.nan] } out_expected = pd.DataFrame(data=data_expected, index=self.events.index) pdt.assert_frame_equal(out_expected, out_calculated)