536 lines
21 KiB
Plaintext
536 lines
21 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import plotly.figure_factory as ff\n",
|
|
"import pandas as pd\n",
|
|
"import pickle\n",
|
|
"import plotly.graph_objs as go\n",
|
|
"import latextable\n",
|
|
"from texttable import Texttable\n",
|
|
"from strategy.strategy import (\n",
|
|
" BuyAndHoldStrategy,\n",
|
|
" MACDStrategy,\n",
|
|
" RSIStrategy,\n",
|
|
" ModelQuantilePredictionsStrategy,\n",
|
|
" ModelGmadlPredictionsStrategy,\n",
|
|
" ConcatenatedStrategies\n",
|
|
")\n",
|
|
"from strategy.util import (\n",
|
|
" get_data_windows,\n",
|
|
" get_sweep_window_predictions,\n",
|
|
" get_predictions_dataframe\n",
|
|
")\n",
|
|
"from strategy.evaluation import (\n",
|
|
" parameter_sweep,\n",
|
|
" evaluate_strategy\n",
|
|
")\n",
|
|
"from strategy.plotting import (\n",
|
|
" plot_sweep_results\n",
|
|
")\n",
|
|
"\n",
|
|
"PADDING=5000\n",
|
|
"VALID_PART=0.2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 48,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[34m\u001b[1mwandb\u001b[0m: Downloading large artifact btc-usdt-5m:latest, 745.12MB. 12 files... \n",
|
|
"\u001b[34m\u001b[1mwandb\u001b[0m: 12 of 12 files downloaded. \n",
|
|
"Done. 0:0:0.9\n",
|
|
"\u001b[34m\u001b[1mwandb\u001b[0m: Downloading large artifact btc-usdt-15m:latest, 248.65MB. 12 files... \n",
|
|
"\u001b[34m\u001b[1mwandb\u001b[0m: 12 of 12 files downloaded. \n",
|
|
"Done. 0:0:0.7\n",
|
|
"\u001b[34m\u001b[1mwandb\u001b[0m: Downloading large artifact btc-usdt-30m:latest, 124.19MB. 12 files... \n",
|
|
"\u001b[34m\u001b[1mwandb\u001b[0m: 12 of 12 files downloaded. \n",
|
|
"Done. 0:0:0.6\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"data_windows_5min = get_data_windows(\n",
|
|
" 'wne-masters-thesis-testing',\n",
|
|
" 'btc-usdt-5m:latest',\n",
|
|
" min_window=0, \n",
|
|
" max_window=5\n",
|
|
")\n",
|
|
"\n",
|
|
"data_windows_15min = get_data_windows(\n",
|
|
" 'wne-masters-thesis-testing',\n",
|
|
" 'btc-usdt-15m:latest',\n",
|
|
" min_window=0, \n",
|
|
" max_window=5\n",
|
|
")\n",
|
|
"\n",
|
|
"data_windows_30min = get_data_windows(\n",
|
|
" 'wne-masters-thesis-testing',\n",
|
|
" 'btc-usdt-30m:latest',\n",
|
|
" min_window=0, \n",
|
|
" max_window=5\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 49,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open('cache/5min-best-strategies.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_5min = pickle.load(inpt)\n",
|
|
"\n",
|
|
"with open('cache/15min-best-strategies.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_15min = pickle.load(inpt)\n",
|
|
"\n",
|
|
"with open('cache/30min-best-strategies.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_30min = pickle.load(inpt)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Best 5 strategies evaluation"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def results_plot(buy_and_hold_concat, gmadl_5min_model_concat, rsi_5_min_concat, gmadl_15min_model_concat, rsi_30min_concat, macd_30min_concat, width=850, height=500, notitle=False):\n",
|
|
"\n",
|
|
" fig = go.Figure([\n",
|
|
" go.Scatter(y=buy_and_hold_concat['portfolio_value'], x=buy_and_hold_concat['time'], name=\"Buy and Hold\"),\n",
|
|
" go.Scatter(y=gmadl_5min_model_concat['portfolio_value'], x=gmadl_5min_model_concat['time'], name=\"GMADL Informer Strategy (5min)\"),\n",
|
|
" go.Scatter(y=rsi_5_min_concat['portfolio_value'], x=rsi_5_min_concat['time'], name=\"RSI Strategy (5min)\"),\n",
|
|
" go.Scatter(y=gmadl_15min_model_concat['portfolio_value'], x=gmadl_15min_model_concat['time'], name='GNADL Informer Strategy (15min)'),\n",
|
|
" go.Scatter(y=rsi_30min_concat['portfolio_value'], x=rsi_30min_concat['time'], name='RSI Strategy (30min)'),\n",
|
|
" go.Scatter(y=macd_30min_concat['portfolio_value'], x=macd_30min_concat['time'], name='MACD Strategy (30min)')\n",
|
|
" ])\n",
|
|
" fig.update_layout(\n",
|
|
" # title={\n",
|
|
" # 'text': f\"W{idx}-{INTERVAL}\",\n",
|
|
" # 'y':0.97,\n",
|
|
" # 'x':0.5,\n",
|
|
" # 'xanchor': 'center',\n",
|
|
" # 'yanchor': 'top'} if not notitle else None,\n",
|
|
" yaxis_title=\"Portfolio Value\",\n",
|
|
" xaxis_title=\"Date\",\n",
|
|
" font=dict(\n",
|
|
" # family=\"Courier New, monospace\",\n",
|
|
" size=14,\n",
|
|
" ),\n",
|
|
" autosize=False,\n",
|
|
" width=width,\n",
|
|
" height=height,\n",
|
|
" margin=dict(l=20, r=20, t=20, b=20),\n",
|
|
" plot_bgcolor='white',\n",
|
|
" legend=dict(\n",
|
|
" orientation=\"h\",\n",
|
|
" yanchor=\"bottom\",\n",
|
|
" y=1.02,\n",
|
|
" xanchor=\"left\",\n",
|
|
" x=0.02\n",
|
|
" )\n",
|
|
" )\n",
|
|
" fig.update_xaxes(\n",
|
|
" mirror=True,\n",
|
|
" ticks='outside',\n",
|
|
" showline=True,\n",
|
|
" linecolor='black',\n",
|
|
" gridcolor='lightgrey'\n",
|
|
" )\n",
|
|
" fig.update_yaxes(\n",
|
|
" mirror=True,\n",
|
|
" ticks='outside',\n",
|
|
" showline=True,\n",
|
|
" linecolor='black',\n",
|
|
" gridcolor='lightgrey'\n",
|
|
" )\n",
|
|
" # fig.write_image(f\"images/eval-w{idx}-{INTERVAL}.png\")\n",
|
|
" fig.show()\n",
|
|
" \n",
|
|
"def results_table(buy_and_hold_concat, gmadl_5min_model_concat, rsi_5_min_concat, gmadl_15min_model_concat, rsi_30min_concat, macd_30min_concat):\n",
|
|
" table_eval_windows = Texttable()\n",
|
|
" table_eval_windows.set_deco(Texttable.HEADER)\n",
|
|
" table_eval_windows.set_cols_align([\"l\", \"c\",\"c\", \"c\", \"c\", \"c\", \"c\", \"c\", \"c\", \"c\"])\n",
|
|
" table_eval_windows.set_precision(3)\n",
|
|
"\n",
|
|
" table_eval_windows.header([\n",
|
|
" \"\\\\textbf{Strategy}\",\n",
|
|
" \"\\\\textbf{VAL}\",\n",
|
|
" \"\\\\textbf{ARC}\",\n",
|
|
" \"\\\\textbf{ASD}\",\n",
|
|
" \"\\\\textbf{IR*}\",\n",
|
|
" \"\\\\textbf{MD}\",\n",
|
|
" \"\\\\textbf{IR**}\",\n",
|
|
" \"\\\\textbf{N}\",\n",
|
|
" \"\\\\textbf{LONG}\",\n",
|
|
" \"\\\\textbf{SHORT}\",\n",
|
|
" ])\n",
|
|
"\n",
|
|
" strategy_name_result = [\n",
|
|
" ('Buy and Hold', buy_and_hold_concat),\n",
|
|
" ('GMADL Informer (5min)', gmadl_5min_model_concat),\n",
|
|
" ('RSI Strategy (5min)', rsi_5_min_concat),\n",
|
|
" ('GMADL Informer (15min)', gmadl_15min_model_concat),\n",
|
|
" ('RSI Strategy (30min)', rsi_30min_concat),\n",
|
|
" ('MACD Strategy (30min)', macd_30min_concat)\n",
|
|
" ]\n",
|
|
" for strategy_name, result in strategy_name_result:\n",
|
|
" table_eval_windows.add_row([\n",
|
|
" strategy_name,\n",
|
|
" result['value'],\n",
|
|
" result['arc'],\n",
|
|
" result['asd'],\n",
|
|
" result['ir'],\n",
|
|
" result['md'],\n",
|
|
" result['mod_ir'],\n",
|
|
" result['n_trades'],\n",
|
|
" f\"{result['long_pos']*100:.2f}\\%\",\n",
|
|
" f\"{result['short_pos']*100:.2f}\\%\",\n",
|
|
" ])\n",
|
|
" print(latextable.draw_latex(table_eval_windows))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# test_data_5min = pd.concat([data_windows_5min[0][0][-PADDING:]] + [data_window[1] for data_window in data_windows_5min])\n",
|
|
"# test_data_15min = pd.concat([data_windows_15min[0][0][-PADDING:]] + [data_window[1] for data_window in data_windows_15min])\n",
|
|
"# test_data_30min = pd.concat([data_windows_30min[0][0][-PADDING:]] + [data_window[1] for data_window in data_windows_30min])\n",
|
|
"\n",
|
|
"# buy_and_hold_concat = evaluate_strategy(test_data_5min, BuyAndHoldStrategy(), padding=PADDING, interval='5min')\n",
|
|
"# gmadl_5min_model_concat = evaluate_strategy(test_data_5min, ConcatenatedStrategies(len(data_windows_5min[0][1]), [s[0] for s in best_strategies_5min['gmadl_model']], padding=PADDING), padding=PADDING, interval='5min')\n",
|
|
"# gmadl_15min_model_concat = evaluate_strategy(test_data_15min, ConcatenatedStrategies(len(data_windows_15min[0][1]), [s[0] for s in best_strategies_15min['gmadl_model']], padding=PADDING), padding=PADDING, interval='15min')\n",
|
|
"# rsi_5_min_concat = evaluate_strategy(test_data_5min, ConcatenatedStrategies(len(data_windows_5min[0][1]), [s[0] for s in best_strategies_5min['rsi_strategies']], padding=PADDING), padding=PADDING, interval='5min')\n",
|
|
"# rsi_30min_concat = evaluate_strategy(test_data_30min, ConcatenatedStrategies(len(data_windows_30min[0][1]), [s[0] for s in best_strategies_30min['rsi_strategies']], padding=PADDING), padding=PADDING, interval='30min')\n",
|
|
"# macd_30min_concat = evaluate_strategy(test_data_30min, ConcatenatedStrategies(len(data_windows_30min[0][1]), [s[0] for s in best_strategies_30min['macd_strategies']], padding=PADDING), padding=PADDING, interval='30min')\n",
|
|
"\n",
|
|
"# results_table(buy_and_hold_concat, gmadl_5min_model_concat, rsi_5_min_concat, gmadl_15min_model_concat, rsi_30min_concat, macd_30min_concat)\n",
|
|
"# results_plot(buy_and_hold_concat, gmadl_5min_model_concat, gmadl_15min_model_concat, rsi_5_min_concat, rsi_30min_concat, macd_30min_concat, width=1200, notitle=True)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## TOP N Strategies Sensistivity Analisys"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def results_for_strats(data_windows, best_strategies, interval='5min', top_n=10):\n",
|
|
" test_data = pd.concat([data_windows[0][0][-PADDING:]] + [data_window[1] for data_window in data_windows])\n",
|
|
"\n",
|
|
" buy_and_hold_concat = evaluate_strategy(test_data, BuyAndHoldStrategy(), padding=PADDING)\n",
|
|
" \n",
|
|
" macd_concat = [evaluate_strategy(test_data, ConcatenatedStrategies(len(data_windows[0][1]), [s[x] for s in best_strategies['macd_strategies']], padding=PADDING), padding=PADDING, interval=interval) for x in range(top_n)]\n",
|
|
" rsi_concat = [evaluate_strategy(test_data, ConcatenatedStrategies(len(data_windows[0][1]), [s[x] for s in best_strategies['rsi_strategies']], padding=PADDING), padding=PADDING, interval=interval) for x in range(top_n)]\n",
|
|
" quantile_model_concat = [evaluate_strategy(test_data, ConcatenatedStrategies(len(data_windows[0][1]), [s[x] for s in best_strategies['quantile_model']], padding=PADDING), padding=PADDING, interval=interval) for x in range(top_n)]\n",
|
|
" gmadl_model_concat = [evaluate_strategy(test_data, ConcatenatedStrategies(len(data_windows[0][1]), [s[x] for s in best_strategies['gmadl_model']], padding=PADDING), padding=PADDING, interval=interval) for x in range(top_n)]\n",
|
|
"\n",
|
|
" z = list(reversed([\n",
|
|
" list(reversed([round(buy_and_hold_concat['mod_ir'], 3)]*top_n)),\n",
|
|
" list(reversed([round(x['mod_ir'], 3) for x in macd_concat])),\n",
|
|
" list(reversed([round(x['mod_ir'], 3) for x in rsi_concat])),\n",
|
|
" list(reversed([round(x['mod_ir'], 3) for x in quantile_model_concat])),\n",
|
|
" list(reversed([round(x['mod_ir'], 3) for x in gmadl_model_concat])),\n",
|
|
" ]))\n",
|
|
" x = list(reversed(range(1, top_n+1)))\n",
|
|
" y = list(reversed([\n",
|
|
" \"Buy and Hold\",\n",
|
|
" \"MACD Strategy\",\n",
|
|
" \"RSI Strategy\",\n",
|
|
" \"Quantile Informer\",\n",
|
|
" \"Gmadl Informer\"\n",
|
|
" ]))\n",
|
|
" # 'Portland'\n",
|
|
" fig = ff.create_annotated_heatmap(z, x=x, y=y, colorscale='thermal', zmid=buy_and_hold_concat['mod_ir'])\n",
|
|
" fig.update_layout(\n",
|
|
" margin=dict(l=20, r=20, b=20, t=20),\n",
|
|
" width=1100,\n",
|
|
" height=450,\n",
|
|
" font=dict(\n",
|
|
" # family=\"Courier New, monospace\",\n",
|
|
" size=18, # Set the font size here\n",
|
|
" # color=\"RebeccaPurple\"\n",
|
|
" )\n",
|
|
" )\n",
|
|
" fig.show()\n",
|
|
"\n",
|
|
"# results_for_strats(data_windows_5min, best_strategies_5min, interval='5min', top_n=10) \n",
|
|
"# results_for_strats(data_windows_15min, best_strategies_15min, interval='15min', top_n=10) \n",
|
|
"# results_for_strats(data_windows_30min, best_strategies_30min, interval='30min', top_n=10) \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Validation size for: GMADL Informer (5min)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open('cache/5min-best-strategies-01.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_5min_01 = pickle.load(inpt)\n",
|
|
"\n",
|
|
"with open('cache/5min-best-strategies.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_5min_02 = pickle.load(inpt)\n",
|
|
"\n",
|
|
"with open('cache/5min-best-strategies-03.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_5min_03 = pickle.load(inpt)\n",
|
|
"\n",
|
|
"with open('cache/5min-best-strategies-04.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_5min_04 = pickle.load(inpt)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"{'strategy_name': 'Unknown model', 'future': 1, 'target': 'close_price', 'enter_long': 0.004, 'exit_long': None, 'enter_short': -0.005, 'exit_short': None}\n",
|
|
"{'strategy_name': 'Unknown model', 'future': 1, 'target': 'close_price', 'enter_long': 0.007, 'exit_long': -0.003, 'enter_short': None, 'exit_short': None}\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# print(best_strategies_5min_02['gmadl_model'][0][0].info())\n",
|
|
"# print(best_strategies_5min_03['gmadl_model'][0][0].info())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def results_plot2(result_buyandhold, results, names, width=850, height=500):\n",
|
|
"\n",
|
|
" fig = go.Figure([\n",
|
|
" go.Scatter(y=result_buyandhold['portfolio_value'], x=result_buyandhold['time'], name=\"Buy and Hold\")] +[\n",
|
|
" go.Scatter(y=result['portfolio_value'], x=result['time'], name=name) for name, result in zip(names, results)\n",
|
|
" ])\n",
|
|
" # go.Scatter(y=result_macd['portfolio_value'], x=result_macd['time'], name=\"MACD Strategy\"),\n",
|
|
" # go.Scatter(y=result_rsi['portfolio_value'], x=result_rsi['time'], name=\"RSI Strategy\"),\n",
|
|
" # go.Scatter(y=result_quantile_model['portfolio_value'], x=result_quantile_model['time'], name='Quantile Informer Strategy'),\n",
|
|
" # go.Scatter(y=result_gmadl_model['portfolio_value'], x=result_gmadl_model['time'], name='GMADL Informer Strategy')\n",
|
|
" # ])\n",
|
|
" fig.update_layout(\n",
|
|
" yaxis_title=\"Portfolio Value\",\n",
|
|
" xaxis_title=\"Date\",\n",
|
|
" font=dict(\n",
|
|
" # family=\"Courier New, monospace\",\n",
|
|
" size=14,\n",
|
|
" ),\n",
|
|
" autosize=False,\n",
|
|
" width=width,\n",
|
|
" height=height,\n",
|
|
" margin=dict(l=20, r=20, t=20, b=20),\n",
|
|
" plot_bgcolor='white',\n",
|
|
" legend=dict(\n",
|
|
" orientation=\"h\",\n",
|
|
" yanchor=\"bottom\",\n",
|
|
" y=1.02,\n",
|
|
" xanchor=\"left\",\n",
|
|
" x=0.02\n",
|
|
" )\n",
|
|
" )\n",
|
|
" fig.update_xaxes(\n",
|
|
" mirror=True,\n",
|
|
" ticks='outside',\n",
|
|
" showline=True,\n",
|
|
" linecolor='black',\n",
|
|
" gridcolor='lightgrey'\n",
|
|
" )\n",
|
|
" fig.update_yaxes(\n",
|
|
" mirror=True,\n",
|
|
" ticks='outside',\n",
|
|
" showline=True,\n",
|
|
" linecolor='black',\n",
|
|
" gridcolor='lightgrey'\n",
|
|
" )\n",
|
|
" fig.show()\n",
|
|
" \n",
|
|
"def results_table2(result_buyandhold, results, names):\n",
|
|
" table_eval_windows = Texttable()\n",
|
|
" table_eval_windows.set_deco(Texttable.HEADER)\n",
|
|
" table_eval_windows.set_cols_align([\"l\", \"c\",\"c\", \"c\", \"c\", \"c\", \"c\", \"c\", \"c\", \"c\"])\n",
|
|
" table_eval_windows.set_precision(3)\n",
|
|
"\n",
|
|
" table_eval_windows.header([\n",
|
|
" \"\\\\textbf{Strategy}\",\n",
|
|
" \"\\\\textbf{VAL}\",\n",
|
|
" \"\\\\textbf{ARC}\",\n",
|
|
" \"\\\\textbf{ASD}\",\n",
|
|
" \"\\\\textbf{IR*}\",\n",
|
|
" \"\\\\textbf{MD}\",\n",
|
|
" \"\\\\textbf{IR**}\",\n",
|
|
" \"\\\\textbf{N}\",\n",
|
|
" \"\\\\textbf{LONG}\",\n",
|
|
" \"\\\\textbf{SHORT}\",\n",
|
|
" ])\n",
|
|
"\n",
|
|
" strategy_name_result = [\n",
|
|
" ('Buy and Hold', result_buyandhold)] + list(zip(names, results))\n",
|
|
" for strategy_name, result in strategy_name_result:\n",
|
|
" table_eval_windows.add_row([\n",
|
|
" strategy_name,\n",
|
|
" result['value'],\n",
|
|
" result['arc'],\n",
|
|
" result['asd'],\n",
|
|
" result['ir'],\n",
|
|
" result['md'],\n",
|
|
" result['mod_ir'],\n",
|
|
" result['n_trades'],\n",
|
|
" f\"{result['long_pos']*100:.2f}\\%\",\n",
|
|
" f\"{result['short_pos']*100:.2f}\\%\",\n",
|
|
" ])\n",
|
|
" print(latextable.draw_latex(table_eval_windows))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 46,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def results_for_strats(data_windows, best_strategies, names, interval='5min', strat_name='gmadl_model'):\n",
|
|
" test_data = pd.concat([data_windows[0][0][-PADDING:]] + [data_window[1] for data_window in data_windows])\n",
|
|
"\n",
|
|
" buy_and_hold_concat = evaluate_strategy(test_data, BuyAndHoldStrategy(), padding=PADDING, interval=interval)\n",
|
|
" \n",
|
|
" evaluation_results = []\n",
|
|
" for best_strat in best_strategies:\n",
|
|
" evaluation_results.append(\n",
|
|
" evaluate_strategy(test_data, ConcatenatedStrategies(len(data_windows[0][1]), [s[0] for s in best_strat[strat_name]], padding=PADDING), padding=PADDING, interval=interval)\n",
|
|
" )\n",
|
|
" results_plot(buy_and_hold_concat, evaluation_results, names, width=1200)\n",
|
|
" results_table2(buy_and_hold_concat, evaluation_results, names)\n",
|
|
"\n",
|
|
"\n",
|
|
"# results_for_strats(data_windows_5min, [\n",
|
|
"# best_strategies_5min_01,\n",
|
|
"# best_strategies_5min_02,\n",
|
|
"# best_strategies_5min_03,\n",
|
|
"# best_strategies_5min_04\n",
|
|
"# ], [\n",
|
|
"# \"3 months\",\n",
|
|
"# \"6 months\",\n",
|
|
"# \"9 months\",\n",
|
|
"# \"12 months\",\n",
|
|
"# ])\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 40,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open('cache/30min-best-strategies-01.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_30min_01 = pickle.load(inpt)\n",
|
|
"\n",
|
|
"with open('cache/30min-best-strategies.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_30min_02 = pickle.load(inpt)\n",
|
|
"\n",
|
|
"with open('cache/30min-best-strategies-03.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_30min_03 = pickle.load(inpt)\n",
|
|
"\n",
|
|
"with open('cache/30min-best-strategies-04.pkl', 'rb') as inpt:\n",
|
|
" best_strategies_30min_04 = pickle.load(inpt)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# results_for_strats(data_windows_30min, [\n",
|
|
"# best_strategies_30min_01,\n",
|
|
"# best_strategies_30min_02,\n",
|
|
"# best_strategies_30min_03,\n",
|
|
"# best_strategies_30min_04\n",
|
|
"# ], [\n",
|
|
"# \"3 months\",\n",
|
|
"# \"6 months\",\n",
|
|
"# \"9 months\",\n",
|
|
"# \"12 months\",\n",
|
|
"# ], strat_name='rsi_strategies', interval='30min')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# test_data = pd.concat([data_window[0] for data_window in data_windows_5min[:1]])\n",
|
|
"# buy_and_hold_concat = evaluate_strategy(test_data, BuyAndHoldStrategy(), padding=PADDING)\n",
|
|
"\n",
|
|
"# res = evaluate_strategy(test_data, ConcatenatedStrategies(1, [s[0] for s in best_strategies_5min_02['gmadl_model'][:1]], padding=PADDING), padding=PADDING, interval='5min')\n",
|
|
"# results_plot(buy_and_hold_concat, [res], width=1200)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "wnemsc",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.19"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|