mirror of
https://github.com/webclinic017/drift.git
synced 2026-07-28 11:17:47 +00:00
75157c6285
* 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
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
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(
|
|
event_filter: EventFilter,
|
|
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)
|
|
print(
|
|
"| Filtered out ",
|
|
(1 - (len(event_start_times) / len(returns))) * 100,
|
|
"% of timestamps",
|
|
)
|
|
|
|
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"]
|
|
forward_returns = events["returns"]
|
|
|
|
return events, X, y, forward_returns
|