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
@@ -1,4 +1,4 @@
from data_loader.types import ReturnSeries, ForwardReturnSeries
from data_loader.types import ReturnSeries
from ..types import EventLabeller, EventsDataFrame
import pandas as pd
from .utils import create_forward_returns
@@ -13,7 +13,7 @@ class FixedTimeHorionThreeClassBalancedEventLabeller(EventLabeller):
def label_events(
self, event_start_times: pd.DatetimeIndex, returns: ReturnSeries
) -> tuple[EventsDataFrame, ForwardReturnSeries]:
) -> EventsDataFrame:
forward_returns = create_forward_returns(returns, self.time_horizon)
cutoff_point = returns.index[-self.time_horizon]
@@ -43,15 +43,12 @@ class FixedTimeHorionThreeClassBalancedEventLabeller(EventLabeller):
return 1
labels = event_candidates.map(map_class_threeway)
return (
pd.DataFrame(
{
"start": event_start_times,
"end": event_start_times + pd.Timedelta(days=self.time_horizon),
"label": labels,
"returns": forward_returns[event_start_times],
}
),
forward_returns[event_start_times],
events = pd.DataFrame(
{
"start": event_start_times,
"end": event_start_times + pd.Timedelta(minutes=self.time_horizon * 5),
"label": labels,
"returns": forward_returns[event_start_times],
}
)
return events