Untitled
unknown
plain_text
a year ago
2.9 kB
7
Indexable
from BacktestTrading.utils import * import json returns_rolling = pd.read_pickle('./results/results_rolling_config_template.json_2024-07-24_18-24-37.pkl') rank_rolling = pd.read_pickle('./results/final_rankings_insample_all_config_template_18_3_2024-07-24_18-23-24.pkl') sim_rolling = pd.read_pickle('./results/final_simulations_insample_all_config_template_18_3_2024-07-24_18-23-24.pkl') #%% sim_rolling[(sim_rolling.fold==0)] #%% md #%% rank_rolling[(rank_rolling.fold==0)&(rank_rolling.selected==True)] #%% config_path = 'config_template.json' name_path=config_path.split('.')[0] config = json.load(open(config_path)) asset = config['asset'] pathfile = config['pathtofile'] asset_df = pd.read_csv(f'{pathfile}df_{asset}_preprocessed_bt.csv',parse_dates=['timestamp_in_zone']) asset_df = asset_df.set_index('timestamp_in_zone') roll_params=config["rolling_parameters"] folds = generate_walk_forward_folds(asset_df,start_length=roll_params["start_length"], test_length=roll_params["test_length"]) #%% signal_params_list = [extract_params_dict(x,config['simulation_params'].keys()) for x in insample_selected[key]] #%% fold_results=[] for key,fold in folds.items(): print(f'Doing Fold {key} OOS') train_set=fold['train'] test_set=fold['test'] signal_params_list=[extract_params_dict(x,config['simulation_params'].keys()) for x in insample_selected[key]] signal_func = find_fun('signals_module',config['simulation_generation']['signal_func']) backtest_func = find_fun('backtest_module',config['simulation_generation']['backtest_func']) ensemble_func = find_fun('simulator_module',config['simulation_evaluation']['ensemble_func']) fold_results_ref=[] for signal_params in signal_params_list: df_signal = signal_func(pd.concat([train_set,test_set]), **signal_params) params_backtest = config['backtest_params'] # Modify params_backtest params_backtest.setdefault('min_quantity', config['min_quantity'][asset]) if 'max_quantity' in params_backtest.keys(): pass else: params_backtest.setdefault('max_quantity', signal_params['max_q']) params_backtest.setdefault('lot_size', config['lot_size'][asset]) params_backtest['daily_performance'] = True sim_key = '_'.join([str(x) for x in signal_params.values()]) backtest_results = backtest_func(prices_df=test_set[['item_id', 'ask_best', 'bid_best']], signals_df=df_signal[['item_id', 'signal']][test_set.index.min():], **params_backtest)[-1]['return'].rename(sim_key) fold_results_ref.append(backtest_results) fold_ptf = ensemble_func(pd.concat(fold_results_ref,axis=1)) fold_results.append(fold_ptf)
Editor is loading...
Leave a Comment