Installation¶
In [ ]:
Copied!
!pip install bayesian-optimization
!pip install bayesian-optimization
Sample Strategy¶
In [1]:
Copied!
# import talib.abstract as ta
from lettrade import DataFeed, Strategy, indicator as i
from lettrade.exchange.backtest import ForexBackTestAccount, let_backtest
from lettrade.indicator.vendor.qtpylib import inject_indicators
inject_indicators()
class SmaCross(Strategy):
ema1_window = 9
ema2_window = 21
def indicators(self, df: DataFeed):
# df["ema1"] = ta.EMA(df, timeperiod=self.ema1_window)
# df["ema2"] = ta.EMA(df, timeperiod=self.ema2_window)
df["ema1"] = df.close.ema(window=self.ema1_window)
df["ema2"] = df.close.ema(window=self.ema2_window)
df["signal_ema_crossover"] = i.crossover(df.ema1, df.ema2)
df["signal_ema_crossunder"] = i.crossunder(df.ema1, df.ema2)
def next(self, df: DataFeed):
if len(self.orders) > 0 or len(self.positions) > 0:
return
if df.l.signal_ema_crossover[-1]:
price = df.l.close[-1]
self.buy(size=0.1, sl=price - 0.001, tp=price + 0.001)
elif df.l.signal_ema_crossunder[-1]:
price = df.l.close[-1]
self.sell(size=0.1, sl=price + 0.001, tp=price - 0.001)
lt = let_backtest(
strategy=SmaCross,
datas="example/data/data/EURUSD_5m-0_10000.csv",
account=ForexBackTestAccount,
# plotter=None,
)
# import talib.abstract as ta
from lettrade import DataFeed, Strategy, indicator as i
from lettrade.exchange.backtest import ForexBackTestAccount, let_backtest
from lettrade.indicator.vendor.qtpylib import inject_indicators
inject_indicators()
class SmaCross(Strategy):
ema1_window = 9
ema2_window = 21
def indicators(self, df: DataFeed):
# df["ema1"] = ta.EMA(df, timeperiod=self.ema1_window)
# df["ema2"] = ta.EMA(df, timeperiod=self.ema2_window)
df["ema1"] = df.close.ema(window=self.ema1_window)
df["ema2"] = df.close.ema(window=self.ema2_window)
df["signal_ema_crossover"] = i.crossover(df.ema1, df.ema2)
df["signal_ema_crossunder"] = i.crossunder(df.ema1, df.ema2)
def next(self, df: DataFeed):
if len(self.orders) > 0 or len(self.positions) > 0:
return
if df.l.signal_ema_crossover[-1]:
price = df.l.close[-1]
self.buy(size=0.1, sl=price - 0.001, tp=price + 0.001)
elif df.l.signal_ema_crossunder[-1]:
price = df.l.close[-1]
self.sell(size=0.1, sl=price + 0.001, tp=price - 0.001)
lt = let_backtest(
strategy=SmaCross,
datas="example/data/data/EURUSD_5m-0_10000.csv",
account=ForexBackTestAccount,
# plotter=None,
)
Optimize¶
In [2]:
Copied!
from bayes_opt import BayesianOptimization
lettrade_model = lt.optimize_model()
def train_model(**params):
params = {
"ema1_window": int(params["ema1_window"]),
"ema2_window": int(params["ema2_window"]),
}
# Model
result = lettrade_model(params)
# Score
return result["equity"]
pbounds = {"ema1_window": (5, 25), "ema2_window": (10, 50)}
optimizer = BayesianOptimization(
f=train_model,
pbounds=pbounds,
random_state=1,
)
optimizer.maximize(
init_points=2,
n_iter=200,
)
from bayes_opt import BayesianOptimization
lettrade_model = lt.optimize_model()
def train_model(**params):
params = {
"ema1_window": int(params["ema1_window"]),
"ema2_window": int(params["ema2_window"]),
}
# Model
result = lettrade_model(params)
# Score
return result["equity"]
pbounds = {"ema1_window": (5, 25), "ema2_window": (10, 50)}
optimizer = BayesianOptimization(
f=train_model,
pbounds=pbounds,
random_state=1,
)
optimizer.maximize(
init_points=2,
n_iter=200,
)
| iter | target | ema1_w... | ema2_w... | ------------------------------------------------- | 1 | 9.917e+03 | 13.34 | 38.81 | | 2 | 9.868e+03 | 5.002 | 22.09 | | 3 | 9.916e+03 | 13.3 | 39.0 | | 4 | 9.949e+03 | 20.15 | 34.13 | | 5 | 9.967e+03 | 25.0 | 26.44 | | 6 | 1e+04 | 25.0 | 13.15 | | 7 | 1.004e+04 | 18.64 | 10.0 | | 8 | 1.013e+04 | 12.01 | 10.03 | | 9 | 9.983e+03 | 6.235 | 10.0 | | 10 | 1e+04 | 13.69 | 13.61 | | 11 | 1.018e+04 | 14.33 | 10.0 | | 12 | 1e+04 | 25.0 | 50.0 | | 13 | 9.901e+03 | 5.0 | 50.0 | | 14 | 1.011e+04 | 15.78 | 10.1 | | 15 | 9.925e+03 | 17.32 | 50.0 | | 16 | 9.985e+03 | 25.0 | 42.48 | | 17 | 1.015e+04 | 13.69 | 10.84 | | 18 | 9.865e+03 | 5.0 | 34.04 | | 19 | 1.003e+04 | 20.96 | 19.6 | | 20 | 9.955e+03 | 16.25 | 24.79 | | 21 | 9.954e+03 | 24.96 | 19.59 | | 22 | 1.015e+04 | 13.31 | 10.13 | | 23 | 9.895e+03 | 9.931 | 11.94 | | 24 | 1.016e+04 | 19.26 | 14.34 | | 25 | 1.016e+04 | 18.31 | 16.36 | | 26 | 1.014e+04 | 20.69 | 15.96 | | 27 | 9.806e+03 | 16.24 | 18.66 | | 28 | 1.005e+04 | 17.23 | 14.24 | | 29 | 1.009e+04 | 21.23 | 12.96 | | 30 | 9.907e+03 | 5.0 | 42.3 | | 31 | 1.016e+04 | 19.26 | 15.78 | | 32 | 9.995e+03 | 12.4 | 30.25 | | 33 | 9.909e+03 | 19.23 | 42.99 | | 34 | 9.914e+03 | 24.94 | 36.65 | | 35 | 9.868e+03 | 11.44 | 46.76 | | 36 | 1.003e+04 | 22.93 | 10.0 | | 37 | 9.866e+03 | 9.878 | 26.32 | | 38 | 9.897e+03 | 19.49 | 28.76 | | 39 | 1.012e+04 | 19.53 | 17.49 | | 40 | 1.009e+04 | 23.06 | 15.94 | | 41 | 9.936e+03 | 5.0 | 15.73 | | 42 | 9.977e+03 | 14.91 | 33.4 | | 43 | 1.001e+04 | 24.98 | 46.12 | | 44 | 9.881e+03 | 25.0 | 31.18 | | 45 | 1e+04 | 19.39 | 12.65 | | 46 | 1.014e+04 | 21.42 | 14.65 | | 47 | 9.965e+03 | 10.51 | 33.99 | | 48 | 9.984e+03 | 21.67 | 48.07 | | 49 | 1.014e+04 | 20.15 | 14.62 | | 50 | 9.976e+03 | 21.58 | 23.64 | | 51 | 9.836e+03 | 5.0 | 28.46 | | 52 | 1.016e+04 | 18.5 | 15.23 | | 53 | 9.911e+03 | 18.6 | 38.04 | | 54 | 9.883e+03 | 9.621 | 18.93 | | 55 | 1.014e+04 | 22.76 | 13.63 | | 56 | 9.945e+03 | 8.623 | 38.71 | | 57 | 1.016e+04 | 14.99 | 11.6 | | 58 | 1.018e+04 | 14.65 | 10.65 | | 59 | 9.966e+03 | 15.23 | 29.0 | | 60 | 1.008e+04 | 21.67 | 17.3 | | 61 | 1.016e+04 | 14.47 | 11.02 | | 62 | 1.007e+04 | 15.97 | 11.83 | | 63 | 1.012e+04 | 24.97 | 23.21 | | 64 | 1.003e+04 | 23.76 | 22.16 | | 65 | 9.973e+03 | 15.12 | 44.06 | | 66 | 9.966e+03 | 9.791 | 42.62 | | 67 | 9.918e+03 | 9.419 | 50.0 | | 68 | 1.012e+04 | 25.0 | 10.0 | | 69 | 1.015e+04 | 23.23 | 12.06 | | 70 | 1.014e+04 | 24.41 | 11.25 | | 71 | 9.856e+03 | 5.374 | 46.14 | | 72 | 9.926e+03 | 5.0 | 38.36 | | 73 | 1e+04 | 24.28 | 24.27 | | 74 | 9.934e+03 | 22.49 | 40.17 | | 75 | 9.964e+03 | 22.47 | 44.84 | | 76 | 1.016e+04 | 19.17 | 16.67 | | 77 | 1.016e+04 | 19.19 | 14.94 | | 78 | 1.018e+04 | 14.81 | 10.12 | | 79 | 1.015e+04 | 25.0 | 22.11 | | 80 | 9.967e+03 | 13.68 | 49.86 | | 81 | 9.806e+03 | 12.62 | 22.98 | | 82 | 9.965e+03 | 18.92 | 22.54 | | 83 | 1.016e+04 | 18.71 | 16.05 | | 84 | 9.985e+03 | 17.73 | 46.57 | | 85 | 1.011e+04 | 17.65 | 15.86 | | 86 | 1e+04 | 5.0 | 12.38 | | 87 | 1.016e+04 | 18.48 | 17.14 | | 88 | 1.011e+04 | 15.09 | 10.82 | | 89 | 1.005e+04 | 15.0 | 12.66 | | 90 | 9.906e+03 | 8.988 | 30.96 | | 91 | 9.913e+03 | 11.58 | 15.76 | | 92 | 1.002e+04 | 25.0 | 16.26 | | 93 | 9.957e+03 | 17.55 | 32.0 | | 94 | 9.967e+03 | 15.59 | 36.06 | | 95 | 9.97e+03 | 16.1 | 41.05 | | 96 | 9.994e+03 | 20.59 | 50.0 | | 97 | 1.009e+04 | 22.07 | 11.7 | | 98 | 9.896e+03 | 12.69 | 42.6 | | 99 | 1.015e+04 | 22.56 | 14.74 | | 100 | 9.996e+03 | 19.65 | 25.56 | | 101 | 9.875e+03 | 5.056 | 18.74 | | 102 | 1.016e+04 | 21.75 | 15.65 | | 103 | 9.936e+03 | 11.08 | 36.56 | | 104 | 9.928e+03 | 15.1 | 47.03 | | 105 | 9.937e+03 | 22.47 | 27.76 | | 106 | 1.015e+04 | 12.15 | 11.33 | | 107 | 1e+04 | 12.87 | 12.14 | | 108 | 1.017e+04 | 11.56 | 10.86 | | 109 | 1e+04 | 10.74 | 10.01 | | 110 | 1.013e+04 | 12.21 | 10.64 | | 111 | 9.935e+03 | 13.48 | 27.04 | | 112 | 9.9e+03 | 23.03 | 34.18 | | 113 | 1e+04 | 19.11 | 19.18 | | 114 | 1.002e+04 | 8.382 | 22.81 | | 115 | 9.886e+03 | 6.562 | 24.92 | | 116 | 9.825e+03 | 7.853 | 15.11 | | 117 | 1e+04 | 22.88 | 49.91 | | 118 | 9.995e+03 | 25.0 | 39.75 | | 119 | 1e+04 | 11.48 | 11.48 | | 120 | 1.01e+04 | 23.88 | 14.56 | | 121 | 1.001e+04 | 20.62 | 10.0 | | 122 | 1.012e+04 | 23.5 | 11.04 | | 123 | 1.007e+04 | 17.05 | 10.03 | | 124 | 1e+04 | 15.01 | 15.67 | | 125 | 1.016e+04 | 22.51 | 12.73 | | 126 | 9.885e+03 | 8.067 | 35.43 | | 127 | 1e+04 | 12.62 | 32.63 | | 128 | 9.906e+03 | 8.381 | 44.9 | | 129 | 1.015e+04 | 23.46 | 12.91 | | 130 | 1.004e+04 | 24.94 | 47.97 | | 131 | 1.001e+04 | 22.79 | 18.66 | | 132 | 9.925e+03 | 20.04 | 46.19 | | 133 | 9.948e+03 | 21.31 | 31.29 | | 134 | 1.002e+04 | 18.45 | 13.93 | | 135 | 1.013e+04 | 20.43 | 16.91 | | 136 | 9.919e+03 | 21.52 | 37.3 | | 137 | 9.987e+03 | 12.79 | 19.04 | | 138 | 9.876e+03 | 7.708 | 41.31 | | 139 | 1.001e+04 | 17.17 | 27.0 | | 140 | 9.996e+03 | 13.15 | 35.0 | | 141 | 1.012e+04 | 25.0 | 10.88 | | 142 | 9.936e+03 | 17.67 | 34.78 | | 143 | 1.011e+04 | 24.29 | 10.34 | | 144 | 9.976e+03 | 14.56 | 31.19 | | 145 | 1.012e+04 | 20.1 | 13.82 | | 146 | 1.004e+04 | 25.0 | 21.26 | | 147 | 9.904e+03 | 16.2 | 22.08 | | 148 | 1.015e+04 | 21.91 | 13.84 | | 149 | 1.016e+04 | 24.05 | 12.11 | | 150 | 1e+04 | 21.41 | 21.37 | | 151 | 9.993e+03 | 23.54 | 47.39 | | 152 | 9.906e+03 | 7.181 | 12.03 | | 153 | 1.007e+04 | 21.42 | 16.27 | | 154 | 1.007e+04 | 20.82 | 18.08 | | 155 | 1.016e+04 | 19.94 | 16.25 | | 156 | 1.008e+04 | 22.03 | 15.09 | | 157 | 1.014e+04 | 20.67 | 15.36 | | 158 | 1.01e+04 | 23.05 | 14.53 | | 159 | 1.016e+04 | 17.44 | 16.96 | | 160 | 1e+04 | 16.59 | 16.37 | | 161 | 1e+04 | 17.85 | 17.68 | | 162 | 1.014e+04 | 21.02 | 14.0 | | 163 | 9.826e+03 | 5.958 | 31.33 | | 164 | 9.863e+03 | 7.755 | 20.98 | | 165 | 1.005e+04 | 17.71 | 11.35 | | 166 | 1.007e+04 | 25.0 | 14.83 | | 167 | 9.926e+03 | 7.685 | 48.04 | | 168 | 9.946e+03 | 10.83 | 40.3 | | 169 | 9.975e+03 | 22.34 | 42.59 | | 170 | 9.929e+03 | 19.65 | 40.36 | | 171 | 9.967e+03 | 15.87 | 38.54 | | 172 | 1.016e+04 | 14.38 | 11.84 | | 173 | 9.845e+03 | 10.82 | 28.92 | | 174 | 9.973e+03 | 24.89 | 44.26 | | 175 | 9.919e+03 | 25.0 | 28.61 | | 176 | 1.002e+04 | 23.05 | 17.24 | | 177 | 9.956e+03 | 9.801 | 23.78 | | 178 | 9.898e+03 | 17.17 | 44.44 | | 179 | 9.934e+03 | 19.25 | 48.53 | | 180 | 1.016e+04 | 17.82 | 16.76 | | 181 | 9.986e+03 | 13.54 | 16.94 | | 182 | 9.926e+03 | 21.92 | 25.56 | | 183 | 1.018e+04 | 14.04 | 10.42 | | 184 | 9.95e+03 | 11.69 | 50.0 | | 185 | 9.956e+03 | 17.13 | 29.51 | | 186 | 1.014e+04 | 24.79 | 11.81 | | 187 | 1.003e+04 | 18.21 | 24.85 | | 188 | 1.004e+04 | 24.59 | 22.62 | | 189 | 9.954e+03 | 22.9 | 21.09 | | 190 | 9.954e+03 | 7.6 | 28.03 | | 191 | 9.945e+03 | 19.62 | 20.75 | | 192 | 1.016e+04 | 19.84 | 15.49 | | 193 | 9.962e+03 | 20.57 | 11.62 | | 194 | 1.003e+04 | 11.15 | 20.7 | | 195 | 9.975e+03 | 11.17 | 31.96 | | 196 | 1e+04 | 15.72 | 14.23 | | 197 | 1.008e+04 | 9.859 | 21.83 | | 198 | 1.015e+04 | 22.35 | 14.24 | | 199 | 9.981e+03 | 13.34 | 45.09 | | 200 | 1.014e+04 | 22.14 | 13.12 | | 201 | 9.847e+03 | 13.78 | 20.61 | | 202 | 9.916e+03 | 8.272 | 10.01 | =================================================
In [3]:
Copied!
optimizer.max
optimizer.max
Out[3]:
{'target': 10176.96, 'params': {'ema1_window': 14.332034902880366, 'ema2_window': 10.0}}
Plot¶
In [4]:
Copied!
lt.plotter.heatmap(x="ema1_window", y="ema2_window", z="equity")
lt.plotter.heatmap(x="ema1_window", y="ema2_window", z="equity")
In [5]:
Copied!
lt.plotter.contour(x="ema1_window", y="ema2_window", z="equity")
lt.plotter.contour(x="ema1_window", y="ema2_window", z="equity")
Plot plotly¶
Init Plotly environment¶
In [6]:
Copied!
import plotly.io as pio
pio.renderers.default = "notebook"
pio.templates.default = "plotly_dark"
import plotly.io as pio
pio.renderers.default = "notebook"
pio.templates.default = "plotly_dark"
In [7]:
Copied!
optimizer.res
optimizer.res
Out[7]:
[{'target': 9917.18, 'params': {'ema1_window': 13.34044009405148, 'ema2_window': 38.81297973768632}}, {'target': 9868.46, 'params': {'ema1_window': 5.002287496346898, 'ema2_window': 22.09330290527359}}, {'target': 9916.34, 'params': {'ema1_window': 13.3001407276959, 'ema2_window': 39.00039537269421}}, {'target': 9949.32, 'params': {'ema1_window': 20.150617901155936, 'ema2_window': 34.129567895477145}}, {'target': 9966.86, 'params': {'ema1_window': 25.0, 'ema2_window': 26.43865565208876}}, {'target': 10004.82, 'params': {'ema1_window': 25.0, 'ema2_window': 13.152876659642798}}, {'target': 10042.6, 'params': {'ema1_window': 18.637708287319818, 'ema2_window': 10.0}}, {'target': 10131.88, 'params': {'ema1_window': 12.008472233635572, 'ema2_window': 10.0274533068913}}, {'target': 9983.02, 'params': {'ema1_window': 6.2345994038838395, 'ema2_window': 10.0}}, {'target': 10000.0, 'params': {'ema1_window': 13.688189977287218, 'ema2_window': 13.60562993820364}}, {'target': 10176.96, 'params': {'ema1_window': 14.332034902880366, 'ema2_window': 10.0}}, {'target': 10002.76, 'params': {'ema1_window': 25.0, 'ema2_window': 50.0}}, {'target': 9900.52, 'params': {'ema1_window': 5.0, 'ema2_window': 50.0}}, {'target': 10113.68, 'params': {'ema1_window': 15.77634291874924, 'ema2_window': 10.095666359342271}}, {'target': 9925.06, 'params': {'ema1_window': 17.317919291899347, 'ema2_window': 50.0}}, {'target': 9984.86, 'params': {'ema1_window': 25.0, 'ema2_window': 42.478422889764204}}, {'target': 10146.74, 'params': {'ema1_window': 13.686433812325918, 'ema2_window': 10.841210837456936}}, {'target': 9864.66, 'params': {'ema1_window': 5.0, 'ema2_window': 34.03725595237402}}, {'target': 10025.12, 'params': {'ema1_window': 20.96386324637636, 'ema2_window': 19.600444342364295}}, {'target': 9954.84, 'params': {'ema1_window': 16.245235934093564, 'ema2_window': 24.785210642918983}}, {'target': 9954.2, 'params': {'ema1_window': 24.96002025326071, 'ema2_window': 19.59334093052412}}, {'target': 10146.74, 'params': {'ema1_window': 13.306169655394562, 'ema2_window': 10.13232677990274}}, {'target': 9894.52, 'params': {'ema1_window': 9.930676380039309, 'ema2_window': 11.938672363287571}}, {'target': 10160.68, 'params': {'ema1_window': 19.257596012820454, 'ema2_window': 14.336820273737521}}, {'target': 10162.62, 'params': {'ema1_window': 18.307901480002904, 'ema2_window': 16.36450151429704}}, {'target': 10142.82, 'params': {'ema1_window': 20.6937850140083, 'ema2_window': 15.95972188704653}}, {'target': 9806.22, 'params': {'ema1_window': 16.238539833310536, 'ema2_window': 18.658641629078}}, {'target': 10050.0, 'params': {'ema1_window': 17.231153783951616, 'ema2_window': 14.238758133764623}}, {'target': 10091.24, 'params': {'ema1_window': 21.22834513283038, 'ema2_window': 12.964148435614263}}, {'target': 9906.82, 'params': {'ema1_window': 5.0, 'ema2_window': 42.304883853435676}}, {'target': 10162.72, 'params': {'ema1_window': 19.262294554696986, 'ema2_window': 15.780118424220234}}, {'target': 9995.02, 'params': {'ema1_window': 12.395960332116548, 'ema2_window': 30.248121994893673}}, {'target': 9908.56, 'params': {'ema1_window': 19.225913938565377, 'ema2_window': 42.98755074072035}}, {'target': 9913.82, 'params': {'ema1_window': 24.944026515368797, 'ema2_window': 36.64519955481913}}, {'target': 9867.9, 'params': {'ema1_window': 11.442254688637123, 'ema2_window': 46.76195501211062}}, {'target': 10030.54, 'params': {'ema1_window': 22.928098068871368, 'ema2_window': 10.0}}, {'target': 9866.08, 'params': {'ema1_window': 9.878419429314752, 'ema2_window': 26.320564289347878}}, {'target': 9897.02, 'params': {'ema1_window': 19.492865397009265, 'ema2_window': 28.75987475220795}}, {'target': 10124.06, 'params': {'ema1_window': 19.532335468288842, 'ema2_window': 17.49493247161354}}, {'target': 10085.04, 'params': {'ema1_window': 23.063182660225763, 'ema2_window': 15.938772698972624}}, {'target': 9935.76, 'params': {'ema1_window': 5.0, 'ema2_window': 15.728802193252715}}, {'target': 9976.7, 'params': {'ema1_window': 14.909082612749145, 'ema2_window': 33.40188604275903}}, {'target': 10013.08, 'params': {'ema1_window': 24.984096964565204, 'ema2_window': 46.11802107464013}}, {'target': 9880.66, 'params': {'ema1_window': 25.0, 'ema2_window': 31.178649842555295}}, {'target': 10000.1, 'params': {'ema1_window': 19.391080660671506, 'ema2_window': 12.649221456717385}}, {'target': 10143.02, 'params': {'ema1_window': 21.420131668893983, 'ema2_window': 14.649350463285922}}, {'target': 9964.88, 'params': {'ema1_window': 10.50519883407079, 'ema2_window': 33.98893049013029}}, {'target': 9984.46, 'params': {'ema1_window': 21.674339073379237, 'ema2_window': 48.07203781042372}}, {'target': 10142.64, 'params': {'ema1_window': 20.14614269340214, 'ema2_window': 14.617067488379512}}, {'target': 9975.92, 'params': {'ema1_window': 21.57507731172532, 'ema2_window': 23.637459713454206}}, {'target': 9836.22, 'params': {'ema1_window': 5.0, 'ema2_window': 28.456410853213544}}, {'target': 10160.48, 'params': {'ema1_window': 18.49819821832407, 'ema2_window': 15.234496755885365}}, {'target': 9910.62, 'params': {'ema1_window': 18.598006632905136, 'ema2_window': 38.04122117373202}}, {'target': 9882.88, 'params': {'ema1_window': 9.620636583839627, 'ema2_window': 18.933804347073075}}, {'target': 10142.84, 'params': {'ema1_window': 22.759496968091774, 'ema2_window': 13.628847277155005}}, {'target': 9945.24, 'params': {'ema1_window': 8.623102940506728, 'ema2_window': 38.714930622197635}}, {'target': 10163.72, 'params': {'ema1_window': 14.988141861509218, 'ema2_window': 11.59966279731066}}, {'target': 10176.96, 'params': {'ema1_window': 14.645298405378643, 'ema2_window': 10.646806301958707}}, {'target': 9965.74, 'params': {'ema1_window': 15.231917270545463, 'ema2_window': 29.00038344422895}}, {'target': 10084.94, 'params': {'ema1_window': 21.668816006025974, 'ema2_window': 17.300512278033903}}, {'target': 10163.72, 'params': {'ema1_window': 14.46721774435375, 'ema2_window': 11.020364940810152}}, {'target': 10074.08, 'params': {'ema1_window': 15.968127850114344, 'ema2_window': 11.826876284200406}}, {'target': 10123.36, 'params': {'ema1_window': 24.971246584072638, 'ema2_window': 23.207997239929302}}, {'target': 10033.92, 'params': {'ema1_window': 23.757013571630818, 'ema2_window': 22.161133346918263}}, {'target': 9972.82, 'params': {'ema1_window': 15.115823220934384, 'ema2_window': 44.06336102646235}}, {'target': 9965.92, 'params': {'ema1_window': 9.79057400085918, 'ema2_window': 42.61625859774694}}, {'target': 9917.86, 'params': {'ema1_window': 9.4191564704299, 'ema2_window': 50.0}}, {'target': 10121.98, 'params': {'ema1_window': 25.0, 'ema2_window': 10.0}}, {'target': 10152.78, 'params': {'ema1_window': 23.225932541999956, 'ema2_window': 12.064409824582443}}, {'target': 10142.46, 'params': {'ema1_window': 24.41226871765222, 'ema2_window': 11.249964373429021}}, {'target': 9856.32, 'params': {'ema1_window': 5.373588779722748, 'ema2_window': 46.136978123117295}}, {'target': 9925.76, 'params': {'ema1_window': 5.0, 'ema2_window': 38.36322373105064}}, {'target': 10000.0, 'params': {'ema1_window': 24.28136451026694, 'ema2_window': 24.268457127471244}}, {'target': 9933.6, 'params': {'ema1_window': 22.49054791172255, 'ema2_window': 40.17018554527488}}, {'target': 9964.26, 'params': {'ema1_window': 22.466898657207544, 'ema2_window': 44.83899428570267}}, {'target': 10162.82, 'params': {'ema1_window': 19.173041979233634, 'ema2_window': 16.66599884624037}}, {'target': 10160.68, 'params': {'ema1_window': 19.19237891455921, 'ema2_window': 14.940342407749608}}, {'target': 10176.96, 'params': {'ema1_window': 14.808620614033067, 'ema2_window': 10.123486023947521}}, {'target': 10153.32, 'params': {'ema1_window': 25.0, 'ema2_window': 22.105760217823264}}, {'target': 9967.12, 'params': {'ema1_window': 13.676183553511972, 'ema2_window': 49.864380813174115}}, {'target': 9805.88, 'params': {'ema1_window': 12.616532847720554, 'ema2_window': 22.975345230068353}}, {'target': 9964.78, 'params': {'ema1_window': 18.91801152551102, 'ema2_window': 22.540685353750145}}, {'target': 10162.62, 'params': {'ema1_window': 18.71050860435547, 'ema2_window': 16.05058439408016}}, {'target': 9984.58, 'params': {'ema1_window': 17.72683371272307, 'ema2_window': 46.56621520355506}}, {'target': 10110.94, 'params': {'ema1_window': 17.646298250730613, 'ema2_window': 15.857495516393584}}, {'target': 10003.2, 'params': {'ema1_window': 5.0, 'ema2_window': 12.376665611134667}}, {'target': 10162.32, 'params': {'ema1_window': 18.476655346194807, 'ema2_window': 17.14124548377033}}, {'target': 10113.68, 'params': {'ema1_window': 15.085739582665049, 'ema2_window': 10.82456379473597}}, {'target': 10053.9, 'params': {'ema1_window': 14.998114191524257, 'ema2_window': 12.664791954060785}}, {'target': 9906.46, 'params': {'ema1_window': 8.987760304092504, 'ema2_window': 30.956140126733573}}, {'target': 9913.08, 'params': {'ema1_window': 11.57660225943067, 'ema2_window': 15.755672799388297}}, {'target': 10015.04, 'params': {'ema1_window': 24.995295140600895, 'ema2_window': 16.259208179123736}}, {'target': 9956.54, 'params': {'ema1_window': 17.549766992461247, 'ema2_window': 32.001796392030975}}, {'target': 9966.56, 'params': {'ema1_window': 15.590959623848025, 'ema2_window': 36.058344920309096}}, {'target': 9969.92, 'params': {'ema1_window': 16.10162931349772, 'ema2_window': 41.04670651166125}}, {'target': 9993.78, 'params': {'ema1_window': 20.591647303820906, 'ema2_window': 50.0}}, {'target': 10090.94, 'params': {'ema1_window': 22.066133392411235, 'ema2_window': 11.69975716905784}}, {'target': 9896.22, 'params': {'ema1_window': 12.693754607544918, 'ema2_window': 42.60404060142393}}, {'target': 10153.36, 'params': {'ema1_window': 22.560026013665762, 'ema2_window': 14.73536236377905}}, {'target': 9995.92, 'params': {'ema1_window': 19.64679772469404, 'ema2_window': 25.561230225120184}}, {'target': 9874.74, 'params': {'ema1_window': 5.055552329636068, 'ema2_window': 18.73606679458244}}, {'target': 10163.2, 'params': {'ema1_window': 21.746988739141354, 'ema2_window': 15.647689650192236}}, {'target': 9935.88, 'params': {'ema1_window': 11.077494547402955, 'ema2_window': 36.56183350410814}}, {'target': 9927.6, 'params': {'ema1_window': 15.09940089380413, 'ema2_window': 47.030376800148176}}, {'target': 9936.64, 'params': {'ema1_window': 22.46564365281448, 'ema2_window': 27.760254353948728}}, {'target': 10146.84, 'params': {'ema1_window': 12.151315491048344, 'ema2_window': 11.334438409974581}}, {'target': 10000.0, 'params': {'ema1_window': 12.865881795198812, 'ema2_window': 12.13593391945699}}, {'target': 10170.22, 'params': {'ema1_window': 11.564129697724322, 'ema2_window': 10.863584955901523}}, {'target': 10000.0, 'params': {'ema1_window': 10.739100491517917, 'ema2_window': 10.005918491689503}}, {'target': 10131.88, 'params': {'ema1_window': 12.214533830671225, 'ema2_window': 10.640870446917624}}, {'target': 9934.96, 'params': {'ema1_window': 13.479425387006085, 'ema2_window': 27.035213011389697}}, {'target': 9900.16, 'params': {'ema1_window': 23.031325516096935, 'ema2_window': 34.18360027539021}}, {'target': 10000.0, 'params': {'ema1_window': 19.108118818979168, 'ema2_window': 19.180639556374558}}, {'target': 10016.46, 'params': {'ema1_window': 8.381955911425255, 'ema2_window': 22.812632553767624}}, {'target': 9886.16, 'params': {'ema1_window': 6.562318160028098, 'ema2_window': 24.924024716376927}}, {'target': 9824.76, 'params': {'ema1_window': 7.853201776240833, 'ema2_window': 15.10916780735726}}, {'target': 10002.92, 'params': {'ema1_window': 22.877434079869474, 'ema2_window': 49.91282008766895}}, {'target': 9994.82, 'params': {'ema1_window': 25.0, 'ema2_window': 39.7469857057223}}, {'target': 10000.0, 'params': {'ema1_window': 11.477524688732867, 'ema2_window': 11.478772921300045}}, {'target': 10095.32, 'params': {'ema1_window': 23.879342830908403, 'ema2_window': 14.559147767104239}}, {'target': 10011.28, 'params': {'ema1_window': 20.62086127108661, 'ema2_window': 10.0}}, {'target': 10122.48, 'params': {'ema1_window': 23.495780639879918, 'ema2_window': 11.042160244030224}}, {'target': 10073.82, 'params': {'ema1_window': 17.049737010871347, 'ema2_window': 10.03048566813634}}, {'target': 10000.0, 'params': {'ema1_window': 15.014017055275563, 'ema2_window': 15.671408805813396}}, {'target': 10162.48, 'params': {'ema1_window': 22.513793336954176, 'ema2_window': 12.731072080110923}}, {'target': 9885.1, 'params': {'ema1_window': 8.06734799249617, 'ema2_window': 35.42669211082986}}, {'target': 10004.92, 'params': {'ema1_window': 12.616397468739098, 'ema2_window': 32.626037881365995}}, {'target': 9905.82, 'params': {'ema1_window': 8.381086549947845, 'ema2_window': 44.90467174675231}}, {'target': 10152.78, 'params': {'ema1_window': 23.458565052425953, 'ema2_window': 12.907419754199232}}, {'target': 10043.0, 'params': {'ema1_window': 24.944494341675462, 'ema2_window': 47.970109061095876}}, {'target': 10005.18, 'params': {'ema1_window': 22.792558138511076, 'ema2_window': 18.660709395709926}}, {'target': 9924.86, 'params': {'ema1_window': 20.0411695269928, 'ema2_window': 46.193605004484}}, {'target': 9948.18, 'params': {'ema1_window': 21.313736637789567, 'ema2_window': 31.287197013016954}}, {'target': 10020.16, 'params': {'ema1_window': 18.447713769487436, 'ema2_window': 13.931697637793246}}, {'target': 10133.72, 'params': {'ema1_window': 20.428363490560344, 'ema2_window': 16.912356762897357}}, {'target': 9918.74, 'params': {'ema1_window': 21.518686446442743, 'ema2_window': 37.296966526736455}}, {'target': 9987.3, 'params': {'ema1_window': 12.785561164975114, 'ema2_window': 19.035077955112577}}, {'target': 9876.32, 'params': {'ema1_window': 7.707850854078622, 'ema2_window': 41.31341630123843}}, {'target': 10005.96, 'params': {'ema1_window': 17.16605087223638, 'ema2_window': 27.002647284444702}}, {'target': 9996.32, 'params': {'ema1_window': 13.145261765561335, 'ema2_window': 35.004792655287446}}, {'target': 10121.98, 'params': {'ema1_window': 25.0, 'ema2_window': 10.883255888172936}}, {'target': 9936.44, 'params': {'ema1_window': 17.674073890554574, 'ema2_window': 34.775616186158636}}, {'target': 10112.54, 'params': {'ema1_window': 24.28531365749124, 'ema2_window': 10.339585045282519}}, {'target': 9975.6, 'params': {'ema1_window': 14.562216462421793, 'ema2_window': 31.193056332067876}}, {'target': 10120.88, 'params': {'ema1_window': 20.103438505856953, 'ema2_window': 13.821923499682708}}, {'target': 10044.06, 'params': {'ema1_window': 25.0, 'ema2_window': 21.26086084623064}}, {'target': 9904.44, 'params': {'ema1_window': 16.20426902331689, 'ema2_window': 22.081158478578164}}, {'target': 10152.6, 'params': {'ema1_window': 21.905689354316415, 'ema2_window': 13.837368043482545}}, {'target': 10163.5, 'params': {'ema1_window': 24.04676673958337, 'ema2_window': 12.110652555449983}}, {'target': 10000.0, 'params': {'ema1_window': 21.41091684061125, 'ema2_window': 21.370591496387785}}, {'target': 9992.98, 'params': {'ema1_window': 23.53790470715531, 'ema2_window': 47.38748463150178}}, {'target': 9905.74, 'params': {'ema1_window': 7.181278705156884, 'ema2_window': 12.03053584842895}}, {'target': 10074.98, 'params': {'ema1_window': 21.41547457495814, 'ema2_window': 16.269303553458396}}, {'target': 10074.9, 'params': {'ema1_window': 20.820694051207944, 'ema2_window': 18.07893575108031}}, {'target': 10162.82, 'params': {'ema1_window': 19.936235439485387, 'ema2_window': 16.252569929453557}}, {'target': 10075.0, 'params': {'ema1_window': 22.025466999740438, 'ema2_window': 15.093316513013413}}, {'target': 10142.82, 'params': {'ema1_window': 20.666069152755835, 'ema2_window': 15.360105359283498}}, {'target': 10095.32, 'params': {'ema1_window': 23.052513477770834, 'ema2_window': 14.531012092743524}}, {'target': 10160.48, 'params': {'ema1_window': 17.439404071474442, 'ema2_window': 16.959569623759876}}, {'target': 10000.0, 'params': {'ema1_window': 16.59401500721872, 'ema2_window': 16.374195114478383}}, {'target': 10000.0, 'params': {'ema1_window': 17.847588919981874, 'ema2_window': 17.68315470367896}}, {'target': 10143.02, 'params': {'ema1_window': 21.017197914552796, 'ema2_window': 14.00079425528888}}, {'target': 9825.78, 'params': {'ema1_window': 5.957924915666442, 'ema2_window': 31.33342636121423}}, {'target': 9862.88, 'params': {'ema1_window': 7.755217306024138, 'ema2_window': 20.980317706044115}}, {'target': 10052.52, 'params': {'ema1_window': 17.708615296216706, 'ema2_window': 11.348956130574233}}, {'target': 10074.58, 'params': {'ema1_window': 25.0, 'ema2_window': 14.825706038147459}}, {'target': 9926.22, 'params': {'ema1_window': 7.68523950303905, 'ema2_window': 48.04398035623746}}, {'target': 9946.26, 'params': {'ema1_window': 10.83434312601231, 'ema2_window': 40.29607043657573}}, {'target': 9974.7, 'params': {'ema1_window': 22.3408622767175, 'ema2_window': 42.59155464964322}}, {'target': 9928.6, 'params': {'ema1_window': 19.649621997541328, 'ema2_window': 40.3607328460689}}, {'target': 9966.88, 'params': {'ema1_window': 15.869514541935894, 'ema2_window': 38.54452320180021}}, {'target': 10163.72, 'params': {'ema1_window': 14.382492988265266, 'ema2_window': 11.84270826652789}}, {'target': 9845.1, 'params': {'ema1_window': 10.820042502365395, 'ema2_window': 28.92154679847306}}, {'target': 9973.42, 'params': {'ema1_window': 24.89344332127321, 'ema2_window': 44.258633935505344}}, {'target': 9918.88, 'params': {'ema1_window': 25.0, 'ema2_window': 28.60707748081732}}, {'target': 10015.24, 'params': {'ema1_window': 23.0541182708466, 'ema2_window': 17.23989202343017}}, {'target': 9956.0, 'params': {'ema1_window': 9.800793823399644, 'ema2_window': 23.77826992176809}}, {'target': 9897.54, 'params': {'ema1_window': 17.173642517883867, 'ema2_window': 44.43625081407885}}, {'target': 9934.4, 'params': {'ema1_window': 19.247081907175364, 'ema2_window': 48.53112245996386}}, {'target': 10160.48, 'params': {'ema1_window': 17.81714905026366, 'ema2_window': 16.760775241128123}}, {'target': 9986.14, 'params': {'ema1_window': 13.54016538661564, 'ema2_window': 16.936246097023723}}, {'target': 9926.06, 'params': {'ema1_window': 21.924576141259067, 'ema2_window': 25.558173416768977}}, {'target': 10176.96, 'params': {'ema1_window': 14.0376116748325, 'ema2_window': 10.41653182744042}}, {'target': 9950.32, 'params': {'ema1_window': 11.69320071851341, 'ema2_window': 50.0}}, {'target': 9956.42, 'params': {'ema1_window': 17.134773260831604, 'ema2_window': 29.506723706626566}}, {'target': 10142.46, 'params': {'ema1_window': 24.789052383864295, 'ema2_window': 11.807343382822166}}, {'target': 10025.48, 'params': {'ema1_window': 18.2075190647766, 'ema2_window': 24.84979100412843}}, {'target': 10043.86, 'params': {'ema1_window': 24.59374751738575, 'ema2_window': 22.61732605982764}}, {'target': 9954.2, 'params': {'ema1_window': 22.90466016535968, 'ema2_window': 21.089662486387567}}, {'target': 9954.28, 'params': {'ema1_window': 7.599982797103866, 'ema2_window': 28.033468876609216}}, {'target': 9944.52, 'params': {'ema1_window': 19.623506718374625, 'ema2_window': 20.746791512844425}}, {'target': 10162.72, 'params': {'ema1_window': 19.844219648242643, 'ema2_window': 15.490333845330087}}, {'target': 9961.8, 'params': {'ema1_window': 20.57407701244893, 'ema2_window': 11.624893966640188}}, {'target': 10025.6, 'params': {'ema1_window': 11.147425829959692, 'ema2_window': 20.69949614573705}}, {'target': 9975.02, 'params': {'ema1_window': 11.168275894521537, 'ema2_window': 31.955252967340723}}, {'target': 10000.84, 'params': {'ema1_window': 15.719895580950126, 'ema2_window': 14.225909451711933}}, {'target': 10076.3, 'params': {'ema1_window': 9.858992232680606, 'ema2_window': 21.83053504293911}}, {'target': 10153.36, 'params': {'ema1_window': 22.347939593308155, 'ema2_window': 14.23841538367607}}, {'target': 9980.68, 'params': {'ema1_window': 13.339265212594777, 'ema2_window': 45.092188022835145}}, {'target': 10142.84, 'params': {'ema1_window': 22.142233227244898, 'ema2_window': 13.124475206864986}}, {'target': 9847.48, 'params': {'ema1_window': 13.78248342957268, 'ema2_window': 20.612574367925806}}, {'target': 9915.82, 'params': {'ema1_window': 8.271972586257633, 'ema2_window': 10.01356944516527}}]
In [8]:
Copied!
import pandas as pd
df = pd.DataFrame(columns=["ema1_window", "ema2_window", "score"])
for i, trial in enumerate(optimizer.res):
df.loc[i] = [
int(trial["params"]["ema1_window"]),
int(trial["params"]["ema2_window"]),
trial["target"],
]
df
import pandas as pd
df = pd.DataFrame(columns=["ema1_window", "ema2_window", "score"])
for i, trial in enumerate(optimizer.res):
df.loc[i] = [
int(trial["params"]["ema1_window"]),
int(trial["params"]["ema2_window"]),
trial["target"],
]
df
Out[8]:
ema1_window | ema2_window | score | |
---|---|---|---|
0 | 13.0 | 38.0 | 9917.18 |
1 | 5.0 | 22.0 | 9868.46 |
2 | 13.0 | 39.0 | 9916.34 |
3 | 20.0 | 34.0 | 9949.32 |
4 | 25.0 | 26.0 | 9966.86 |
... | ... | ... | ... |
197 | 22.0 | 14.0 | 10153.36 |
198 | 13.0 | 45.0 | 9980.68 |
199 | 22.0 | 13.0 | 10142.84 |
200 | 13.0 | 20.0 | 9847.48 |
201 | 8.0 | 10.0 | 9915.82 |
202 rows × 3 columns
Type 1¶
In [9]:
Copied!
from plotly import express as px
fig = px.scatter(df, x=df.index, y="score")
fig.show()
from plotly import express as px
fig = px.scatter(df, x=df.index, y="score")
fig.show()
Type 2¶
In [10]:
Copied!
import plotly.express as px
fig = px.density_contour(
df,
x="ema1_window",
y="ema2_window",
z="score",
histfunc="max",
)
fig.update_traces(contours_coloring="fill", contours_showlabels=True)
fig.show()
import plotly.express as px
fig = px.density_contour(
df,
x="ema1_window",
y="ema2_window",
z="score",
histfunc="max",
)
fig.update_traces(contours_coloring="fill", contours_showlabels=True)
fig.show()
Type 3¶
In [11]:
Copied!
import plotly.express as px
fig = px.density_heatmap(
df,
x="ema1_window",
y="ema2_window",
z="score",
nbinsx=20,
nbinsy=40,
histfunc="max",
color_continuous_scale="Viridis",
)
fig.show()
import plotly.express as px
fig = px.density_heatmap(
df,
x="ema1_window",
y="ema2_window",
z="score",
nbinsx=20,
nbinsy=40,
histfunc="max",
color_continuous_scale="Viridis",
)
fig.show()