feat(Labeling): purge overlapping events, sort dataframe at loading time (#226)

* feat(Labeling): purge overlapping events, sort dataframe at loading time

* fix(Linter): ran

* refactor(Labeling): moved purge_overlapping_events one abstraction level higher

* fix(Data): renamed class

* fix(Data): corrected parameter name

* fix(Config): parameters

* fix(Data): fixed path

* fix(Data): uncommented required code

* feat(EventFilters): use vol based CUSUM

* fix(Config): only retrain every 2000 samples

* fix(Config): filter out even more events

* fix(Inference): added remove_overlapping_events

* refactor(Types): simplified type hierarchy
This commit is contained in:
Mark Aron Szulyovszky
2022-03-02 00:26:33 +01:00
committed by GitHub
parent 10a0803c91
commit 75157c6285
17 changed files with 120 additions and 77 deletions
+10 -1
View File
@@ -1,5 +1,6 @@
from .types import EventFilter, EventLabeller, EventsDataFrame
from data_loader.types import ForwardReturnSeries, XDataFrame, ReturnSeries, ySeries
from .labellers.utils import purge_overlapping_events
def label_data(
@@ -7,6 +8,7 @@ def label_data(
event_labeller: EventLabeller,
X: XDataFrame,
returns: ReturnSeries,
remove_overlapping_events: bool,
) -> tuple[EventsDataFrame, XDataFrame, ySeries, ForwardReturnSeries]:
event_start_times = event_filter.get_event_start_times(returns)
@@ -16,7 +18,14 @@ def label_data(
"% of timestamps",
)
events, forward_returns = event_labeller.label_events(event_start_times, returns)
events = event_labeller.label_events(event_start_times, returns)
if remove_overlapping_events:
events = purge_overlapping_events(events)
print(
"| Purged ",
(1 - (len(events) / len(event_start_times))) * 100,
"% of overlapping events",
)
X = X.filter(items=events.index, axis=0)
y = events["label"]