2022-01-26 23:22:43 +01:00
|
|
|
from .types import EventFilter, EventLabeller, EventsDataFrame
|
|
|
|
|
from data_loader.types import ForwardReturnSeries, XDataFrame, ReturnSeries, ySeries
|
|
|
|
|
|
|
|
|
|
def label_data(
|
2022-02-17 16:36:35 +01:00
|
|
|
event_filter: EventFilter,
|
|
|
|
|
event_labeller: EventLabeller,
|
|
|
|
|
X: XDataFrame,
|
|
|
|
|
returns: ReturnSeries) -> tuple[EventsDataFrame, XDataFrame, ySeries, ForwardReturnSeries]:
|
2022-01-26 23:22:43 +01:00
|
|
|
|
2022-02-17 16:36:35 +01:00
|
|
|
event_start_times = event_filter.get_event_start_times(returns)
|
|
|
|
|
print("| Filtered out ", (1 - (len(event_start_times) / len(returns))) * 100, "% of timestamps" )
|
|
|
|
|
|
|
|
|
|
events, forward_returns = event_labeller.label_events(event_start_times, returns)
|
|
|
|
|
|
|
|
|
|
X = X.filter(items = events.index, axis = 0)
|
|
|
|
|
y = events['label']
|
|
|
|
|
forward_returns = events['returns']
|
|
|
|
|
|
|
|
|
|
return events, X, y, forward_returns
|