From f81579fdcacf009d603314df5d9c7c87e3da8d4a Mon Sep 17 00:00:00 2001 From: cardosofede Date: Thu, 20 Jul 2023 15:47:18 +0200 Subject: [PATCH] (feat) remove strategy optimizer --- quants_lab/strategy/strategy_optimizer.py | 77 ----------------------- 1 file changed, 77 deletions(-) delete mode 100644 quants_lab/strategy/strategy_optimizer.py diff --git a/quants_lab/strategy/strategy_optimizer.py b/quants_lab/strategy/strategy_optimizer.py deleted file mode 100644 index bfbf441..0000000 --- a/quants_lab/strategy/strategy_optimizer.py +++ /dev/null @@ -1,77 +0,0 @@ -import optuna -from quants_lab.backtesting.backtesting import Backtesting -from quants_lab.backtesting.backtesting_analysis import BacktestingAnalysis -from quants_lab.strategy.mean_reversion.bollinger import Bollinger -from quants_lab.strategy.mean_reversion.macd_bb import MACDBB -from optuna.exceptions import TrialPruned - -from quants_lab.strategy.mean_reversion.stat_arb import StatArb - -STUDY_NAME = "stat_arb" - - -def objective(trial): - # strategy = Bollinger( - # exchange="binance_perpetual", - # trading_pair="ETH-USDT", - # interval="3m", - # bb_length=trial.suggest_int("bb_length", 20, 300), - # bb_std=trial.suggest_float("bb_std", 1.0, 3.0), - # bb_long_threshold=trial.suggest_float("bb_long_threshold", -0.5, 0.3), - # bb_short_threshold=trial.suggest_float("bb_short_threshold", 0.7, 1.5), - # ) - - # fast_macd = trial.suggest_int("fast_macd", 10, 50) - # strategy = MACDBB( - # exchange="binance_perpetual", - # trading_pair="ETH-USDT", - # interval="3m", - # bb_length=trial.suggest_int("bb_length", 20, 300), - # bb_std=trial.suggest_float("bb_std", 1.0, 3.0), - # bb_long_threshold=trial.suggest_float("bb_long_threshold", -0.5, 0.3), - # bb_short_threshold=trial.suggest_float("bb_short_threshold", 0.7, 1.5), - # fast_macd=fast_macd, - # slow_macd=trial.suggest_int("slow_macd", fast_macd + 1, 100), - # signal_macd=trial.suggest_int("signal_macd", 8, 54) - # ) - strategy = StatArb(trading_pair="ETH-USDT", - periods=trial.suggest_int("periods", 10, 150), - deviation_threshold=trial.suggest_float("deviation_threshold", 0.9, 2.0)) - try: - backtesting = Backtesting(strategy=strategy) - backtesting_result = backtesting.run_backtesting( - start='2021-04-01', - order_amount=50, - leverage=20, - initial_portfolio=100, - take_profit_multiplier=trial.suggest_float("take_profit_multiplier", 1.0, 3.0), - stop_loss_multiplier=trial.suggest_float("stop_loss_multiplier", 1.0, 3.0), - time_limit=60 * 60 * trial.suggest_int("time_limit", 1, 24), - std_span=None, - ) - backtesting_analysis = BacktestingAnalysis( - positions=backtesting_result, - ) - - trial.set_user_attr("net_profit_usd", backtesting_analysis.net_profit_usd()) - trial.set_user_attr("net_profit_pct", backtesting_analysis.net_profit_pct()) - trial.set_user_attr("max_drawdown_usd", backtesting_analysis.max_drawdown_usd()) - trial.set_user_attr("max_drawdown_pct", backtesting_analysis.max_drawdown_pct()) - trial.set_user_attr("sharpe_ratio", backtesting_analysis.sharpe_ratio()) - trial.set_user_attr("accuracy", backtesting_analysis.accuracy()) - trial.set_user_attr("total_positions", backtesting_analysis.total_positions()) - trial.set_user_attr("win_signals", backtesting_analysis.win_signals().shape[0]) - trial.set_user_attr("loss_signals", backtesting_analysis.loss_signals().shape[0]) - trial.set_user_attr("profit_factor", backtesting_analysis.profit_factor()) - trial.set_user_attr("duration_in_hours", backtesting_analysis.duration_in_minutes() / 60) - trial.set_user_attr("avg_trading_time_in_hours", backtesting_analysis.avg_trading_time_in_minutes() / 60) - return backtesting_analysis.net_profit_pct() - except Exception as e: - print(e) - raise TrialPruned() - - -study = optuna.create_study(direction="maximize", study_name=STUDY_NAME, storage="sqlite:///backtesting_report.db", - load_if_exists=True) - -study.optimize(objective, n_trials=2000)