From c3e2b52fc9a61496fdb6abd38c83756ca569c4bd Mon Sep 17 00:00:00 2001 From: cardosofede Date: Thu, 20 Jul 2023 14:53:41 +0200 Subject: [PATCH] (feat) rename methods --- quants_lab/strategy/directional_strategy_base.py | 9 +++++---- quants_lab/strategy/experiments/bollinger.py | 4 ++-- quants_lab/strategy/experiments/macd_bb.py | 4 ++-- quants_lab/strategy/experiments/stat_arb.py | 4 ++-- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/quants_lab/strategy/directional_strategy_base.py b/quants_lab/strategy/directional_strategy_base.py index ca6d86a..b75d049 100644 --- a/quants_lab/strategy/directional_strategy_base.py +++ b/quants_lab/strategy/directional_strategy_base.py @@ -15,10 +15,10 @@ class DirectionalStrategyBase: def get_raw_data(self): raise NotImplemented - def add_indicators(self, df): + def preprocessing(self, df): raise NotImplemented - def add_signals(self, df): + def predict(self, df): raise NotImplemented @staticmethod @@ -57,9 +57,10 @@ class DirectionalStrategyBase: std_span, order_amount=100, leverage=20, initial_portfolio=1000, taker_fee=0.0003, maker_fee=0.00012, start: Optional[str] = None, end: Optional[str] = None): + # TODO: Evaluate to move the get data outside the backtesting to optimize the performance. df = self.get_data(start=start, end=end) - df = self.add_indicators(df) - df = self.add_signals(df) + df = self.preprocessing(df) + df = self.predict(df) df = triple_barrier_method( df=df, std_span=std_span, diff --git a/quants_lab/strategy/experiments/bollinger.py b/quants_lab/strategy/experiments/bollinger.py index 6a7a7e4..af252b8 100644 --- a/quants_lab/strategy/experiments/bollinger.py +++ b/quants_lab/strategy/experiments/bollinger.py @@ -29,11 +29,11 @@ class Bollinger(DirectionalStrategyBase): ) return df - def add_indicators(self, df): + def preprocessing(self, df): df.ta.bbands(length=self.bb_length, std=self.bb_std, append=True) return df - def add_signals(self, df): + def predict(self, df): df["side"] = 0 long_condition = df[f"BBP_{self.bb_length}_{self.bb_std}"] < self.bb_long_threshold short_condition = df[f"BBP_{self.bb_length}_{self.bb_std}"] > self.bb_short_threshold diff --git a/quants_lab/strategy/experiments/macd_bb.py b/quants_lab/strategy/experiments/macd_bb.py index fb691b9..f6712d6 100644 --- a/quants_lab/strategy/experiments/macd_bb.py +++ b/quants_lab/strategy/experiments/macd_bb.py @@ -35,12 +35,12 @@ class MACDBB(DirectionalStrategyBase): ) return df - def add_indicators(self, df): + def preprocessing(self, df): df.ta.bbands(length=self.bb_length, std=self.bb_std, append=True) df.ta.macd(fast=self.fast_macd, slow=self.slow_macd, signal=self.signal_macd, append=True) return df - def add_signals(self, df): + def predict(self, df): bbp = df[f"BBP_{self.bb_length}_{self.bb_std}"] macdh = df[f"MACDh_{self.fast_macd}_{self.slow_macd}_{self.signal_macd}"] macd = df[f"MACD_{self.fast_macd}_{self.slow_macd}_{self.signal_macd}"] diff --git a/quants_lab/strategy/experiments/stat_arb.py b/quants_lab/strategy/experiments/stat_arb.py index 3c6f629..8ec47fd 100644 --- a/quants_lab/strategy/experiments/stat_arb.py +++ b/quants_lab/strategy/experiments/stat_arb.py @@ -34,7 +34,7 @@ class StatArb(DirectionalStrategyBase): df = pd.merge(df, df_target, on="timestamp", how='inner', suffixes=('', '_target')) return df - def add_indicators(self, df): + def preprocessing(self, df): df["pct_change_original"] = df["close"].pct_change() df["pct_change_target"] = df["close_target"].pct_change() df["spread"] = df["pct_change_target"] - df["pct_change_original"] @@ -42,7 +42,7 @@ class StatArb(DirectionalStrategyBase): df["z_score"] = ta.zscore(df["cum_spread"], length=self.periods) return df - def add_signals(self, df): + def predict(self, df): df["side"] = 0 short_condition = df["z_score"] < - self.deviation_threshold long_condition = df["z_score"] > self.deviation_threshold