def random_search(strategy_dictionary_local, n_iterations): toc = tic() data_local, data_2 = import_data(strategy_dictionary) fitting_inputs_local, continuous_targets, classification_targets = input_processing( data_local, data_2, strategy_dictionary) counter = 0 error = 1e5 while counter < n_iterations: counter += 1 strategy_dictionary_local = randomise_dictionary_inputs(strategy_dictionary_local) if strategy_dictionary['regression_mode'] == 'classification': fitting_targets_local = classification_targets elif strategy_dictionary['regression_mode'] == 'regression': fitting_targets_local = continuous_targets fitting_inputs_local = preprocessing_inputs(strategy_dictionary, fitting_inputs_local) fitting_dictionary, profit_factor = fit_strategy( strategy_dictionary, data_local, fitting_inputs_local, fitting_targets_local) error_loop = fitting_dictionary['error'] if error_loop < error and fitting_dictionary['n_trades'] != 0: error = error_loop strategy_dictionary_local_optimum = strategy_dictionary_local fitting_dictionary_optimum = fitting_dictionary underlined_output('Best strategy fit') output_strategy_results(strategy_dictionary_local_optimum, fitting_dictionary_optimum, data_local, toc) return strategy_dictionary_local_optimum, fitting_inputs_local, fitting_targets_local, data_local
def random_search(strategy_dictionary_local, n_iterations): toc = tic() counter = 0 error = 1e10 while counter < n_iterations: counter += 1 #strategy_dictionary['sequence_flag'] = np.random.choice([True, False]) if strategy_dictionary['sequence_flag']: strategy_dictionary_local = randomise_sequence_dictionary_inputs(strategy_dictionary_local) else: strategy_dictionary_local = randomise_dictionary_inputs(strategy_dictionary_local) fitting_dictionary, data_to_predict, error_loop, profit_factor = fit_tensorflow(strategy_dictionary_local) if error_loop < error: error = error_loop strategy_dictionary_optimum = strategy_dictionary_local fitting_dictionary_optimum = fitting_dictionary underlined_output('Best strategy fit') output_strategy_results(strategy_dictionary_optimum, fitting_dictionary_optimum, data_to_predict, toc) return strategy_dictionary_optimum
def tensorflow_fitting(strategy_dictionary_local): toc = tic() data_local = import_data(strategy_dictionary_local) fitting_inputs_local, continuous_targets, classification_targets = input_processing( data_local, strategy_dictionary) if strategy_dictionary_local['regression_mode'] == 'classification': fitting_targets_local = classification_targets elif strategy_dictionary_local['regression_mode'] == 'regression': fitting_targets_local = continuous_targets fitting_inputs_local, strategy_dictionary_local = preprocessing_inputs( strategy_dictionary_local, fitting_inputs_local) fitting_dictionary, error_loop, profit_factor = fit_tensorflow( strategy_dictionary_local, data_local, fitting_inputs_local, fitting_targets_local) if strategy_dictionary_local['plot_last']: strategy_dictionary_local['plot_flag'] = True output_strategy_results(strategy_dictionary_local, fitting_dictionary, data_local, toc, momentum_dict=simple_momentum_comparison( data_local, strategy_dictionary, fitting_dictionary)) output_strategy_results(strategy_dictionary, fitting_dictionary, data_local, toc) return strategy_dictionary, data_local, fitting_inputs_local, fitting_targets_local
def random_search(strategy_dictionary_local, n_iterations): print("Ticking") toc = tic() print("Importing data") data_local, data_2 = import_data(strategy_dictionary_local) print("Finished Imported data") fitting_inputs_local, continuous_targets, classification_targets = input_processing( data_local, data_2, strategy_dictionary) print("Targets determined") counter = 0 error = 1e5 fitting_dictionary_optimum = [] strategy_dictionary_optimum = [] fitting_targets_local = [] while counter < n_iterations: print("Starting iteration %s" % counter) counter += 1 # strategy_dictionary['sequence_flag'] = np.random.choice([True, False]) strategy_dictionary['sequence_flag'] = False if strategy_dictionary['sequence_flag']: strategy_dictionary_local = randomise_sequence_dictionary_inputs( strategy_dictionary_local) else: strategy_dictionary_local = randomise_dictionary_inputs( strategy_dictionary_local) if strategy_dictionary_local['regression_mode'] == 'classification': fitting_targets_local = classification_targets elif strategy_dictionary_local['regression_mode'] == 'regression': fitting_targets_local = continuous_targets fitting_inputs_local, strategy_dictionary_local = preprocessing_inputs( strategy_dictionary_local, fitting_inputs_local) fitting_dictionary, error_loop, profit_factor = fit_tensorflow( strategy_dictionary_local, data_local, fitting_inputs_local, fitting_targets_local) if error_loop < error: error = error_loop strategy_dictionary_optimum = strategy_dictionary_local fitting_dictionary_optimum = fitting_dictionary print("Completed iteration") underlined_output('Best strategy fit') output_strategy_results(strategy_dictionary_optimum, fitting_dictionary_optimum, data_local, toc) return strategy_dictionary_optimum, data_local, fitting_inputs_local, fitting_targets_local
def fit_time_scale(strategy_dictionary_input, search_iterations_local, time_iterations): """ fit timescale variables""" toc = tic() counter = 0 strategy_dictionary_optimum = [] optimum_profit = -2 while counter < time_iterations: strategy_dictionary_input = randomise_time_inputs( strategy_dictionary_input) strategy_dictionary_local,\ fitting_dictionary_local,\ fitting_inputs_local,\ fitting_targets_local,\ data_local,\ test_profit\ = random_search( strategy_dictionary_input, search_iterations_local, toc) if test_profit > optimum_profit: optimum_profit = test_profit strategy_dictionary_optimum = strategy_dictionary_local fitting_dictionary_optimum = fitting_dictionary_local counter += 1 underlined_output('Best strategy fit') if strategy_dictionary['plot_last']: strategy_dictionary['plot_flag'] = True output_strategy_results(strategy_dictionary_optimum, fitting_dictionary_optimum, data_local, toc, momentum_dict=simple_momentum_comparison( data_local, strategy_dictionary_optimum, fitting_dictionary_optimum)) return strategy_dictionary_optimum,\ fitting_inputs_local,\ fitting_targets_local,\ data_local
def fit_tensorflow(strategy_dictionary, data_to_predict, fitting_inputs, fitting_targets): toc = tic() train_indices, test_indices, validation_indices = train_test_validation_indices( fitting_inputs, strategy_dictionary['train_test_validation_ratios']) if strategy_dictionary['sequence_flag']: fitting_dictionary, error = tensorflow_sequence_fitting( '/tmp/test', train_indices, test_indices, validation_indices, fitting_inputs, fitting_targets, strategy_dictionary) else: fitting_dictionary, error = tensorflow_fitting(train_indices, test_indices, validation_indices, fitting_inputs, fitting_targets) fitting_dictionary['train_indices'] = train_indices fitting_dictionary['test_indices'] = test_indices fitting_dictionary['validation_indices'] = validation_indices fitting_dictionary = post_process_training_results(strategy_dictionary, fitting_dictionary, data_to_predict) profit_factor = output_strategy_results(strategy_dictionary, fitting_dictionary, data_to_predict, toc) return fitting_dictionary, error, profit_factor
def fit_tensorflow(strategy_dictionary): toc = tic() data_to_predict, data_2 = import_data(strategy_dictionary) fitting_inputs, fitting_targets = input_processing(data_to_predict, data_2, strategy_dictionary) train_indices, test_indices = train_test_indices( fitting_inputs, strategy_dictionary['train_test_ratio']) if strategy_dictionary['sequence_flag']: fitting_dictionary, error = tensorflow_sequence_fitting( '/home/thomas/test', train_indices, test_indices, fitting_inputs, fitting_targets, strategy_dictionary) else: fitting_dictionary, error = tensorflow_fitting(train_indices, test_indices, fitting_inputs, fitting_targets) fitting_dictionary['train_indices'] = train_indices fitting_dictionary['test_indices'] = test_indices fitting_dictionary = post_process_training_results(strategy_dictionary, fitting_dictionary, data_to_predict) profit_factor = output_strategy_results(strategy_dictionary, fitting_dictionary, data_to_predict, toc) return fitting_dictionary, data_to_predict, error, profit_factor
def random_search(strategy_dictionary_local, n_iterations): toc = tic() data_local, data_2 = import_data(strategy_dictionary_local) fitting_inputs_local, continuous_targets, classification_targets = input_processing( data_local, data_2, strategy_dictionary) counter = 0 error = 1e5 fitting_dictionary_optimum = [] strategy_dictionary_optimum = [] fitting_targets_local = [] while counter < n_iterations: counter += 1 strategy_dictionary['sequence_flag'] = np.random.choice([True, False]) if strategy_dictionary['sequence_flag']: strategy_dictionary_local = randomise_sequence_dictionary_inputs( strategy_dictionary_local) else: strategy_dictionary_local = randomise_dictionary_inputs( strategy_dictionary_local) if strategy_dictionary_local['regression_mode'] == 'classification': fitting_targets_local = classification_targets elif strategy_dictionary_local['regression_mode'] == 'regression': fitting_targets_local = continuous_targets fitting_inputs_local, strategy_dictionary_local = preprocessing_inputs( strategy_dictionary_local, fitting_inputs_local) fitting_dictionary, error_loop, profit_factor = fit_tensorflow( strategy_dictionary_local, data_local, fitting_inputs_local, fitting_targets_local) if error_loop < error: error = error_loop strategy_dictionary_optimum = strategy_dictionary_local fitting_dictionary_optimum = fitting_dictionary underlined_output('Best strategy fit') output_strategy_results(strategy_dictionary_optimum, fitting_dictionary_optimum, data_local, toc) return strategy_dictionary_optimum, data_local, fitting_inputs_local, fitting_targets_local
def random_search(strategy_dictionary_local, n_iterations): """random search to find optimum machien learning algorithm and preprocessing""" toc = tic() data_local = import_data(strategy_dictionary_local) fitting_inputs_local, continuous_targets, classification_targets = input_processing( data_local, strategy_dictionary_local) counter = 0 error = 1e5 fitting_targets_local = [] fitting_dictionary_optimum = [] strategy_dictionary_optimum = [] while counter < n_iterations: counter += 1 strategy_dictionary_local = randomise_dictionary_inputs( strategy_dictionary_local) if strategy_dictionary_local['regression_mode'] == 'classification': fitting_targets_local = classification_targets.astype(int) elif strategy_dictionary_local['regression_mode'] == 'regression': fitting_targets_local = continuous_targets fitting_inputs_local, strategy_dictionary = preprocessing_inputs( strategy_dictionary_local, fitting_inputs_local) fitting_dictionary, profit_factor = fit_strategy( strategy_dictionary, data_local, fitting_inputs_local, fitting_targets_local) error_loop = fitting_dictionary['error'] if error_loop < error and fitting_dictionary['n_trades'] != 0: error = error_loop strategy_dictionary_optimum = strategy_dictionary_local fitting_dictionary_optimum = fitting_dictionary underlined_output('Best strategy fit') output_strategy_results(strategy_dictionary_optimum, fitting_dictionary_optimum, data_local, toc) return strategy_dictionary_optimum, fitting_inputs_local, fitting_targets_local, data_local
def fit_strategy(strategy_dictionary, data_to_predict, fitting_inputs, fitting_targets): toc = tic() fitting_dictionary = meta_fitting(fitting_inputs, fitting_targets, strategy_dictionary) fitting_dictionary = post_process_training_results(strategy_dictionary, fitting_dictionary, data_to_predict) profit_factor = output_strategy_results(strategy_dictionary, fitting_dictionary, data_to_predict, toc) return fitting_dictionary, profit_factor
def random_search(strategy_dictionary_local, n_iterations): toc = tic() counter = 0 error = -1e5 while counter < n_iterations: counter += 1 strategy_dictionary_local = randomise_dictionary_inputs(strategy_dictionary_local) fitting_dictionary, data_to_predict, profit_factor = fit_strategy(strategy_dictionary_local) error_loop = fitting_dictionary['error'] if error_loop > error and fitting_dictionary['n_trades'] != 0: error = error_loop strategy_dictionary_local_optimum = strategy_dictionary_local fitting_dictionary_optimum = fitting_dictionary underlined_output('Best strategy fit') output_strategy_results(strategy_dictionary_local_optimum, fitting_dictionary_optimum, data_to_predict, toc) return strategy_dictionary_local_optimum
def fit_strategy(strategy_dictionary): toc = tic() data_to_predict, data_2 = import_data(strategy_dictionary) fitting_dictionary = meta_fitting(data_to_predict, data_2, strategy_dictionary) fitting_dictionary = post_process_training_results(strategy_dictionary, fitting_dictionary, data_to_predict) profit_factor = output_strategy_results(strategy_dictionary, fitting_dictionary, data_to_predict, toc) return fitting_dictionary, data_to_predict, profit_factor
def fit_strategy(strategy_dictionary, data_to_predict, fitting_inputs, fitting_targets): """fit machine learning algorithm to data and return predictions and profit""" toc = tic() fitting_dictionary = meta_fitting(fitting_inputs, fitting_targets, strategy_dictionary) fitting_dictionary = post_process_training_results(strategy_dictionary, fitting_dictionary, data_to_predict) profit_factor = output_strategy_results(strategy_dictionary, fitting_dictionary, data_to_predict, toc) return fitting_dictionary, profit_factor
def random_search(strategy_dictionary_local, n_iterations, toc): """random search to find optimum machine learning algorithm and preprocessing""" data_local = import_data(strategy_dictionary_local) fitting_inputs_local, continuous_targets, classification_targets = input_processing( data_local, strategy_dictionary_local) counter = 0 error = 1e5 fitting_targets_local = [] fitting_dictionary_optimum = [] strategy_dictionary_optimum = [] while counter < n_iterations: counter += 1 strategy_dictionary_local = randomise_dictionary_inputs( strategy_dictionary_local) if strategy_dictionary_local['regression_mode'] == 'classification': fitting_targets_local = classification_targets.astype(int) elif strategy_dictionary_local['regression_mode'] == 'regression': fitting_targets_local = continuous_targets fitting_inputs_local, strategy_dictionary_local = preprocessing_inputs( strategy_dictionary_local, fitting_inputs_local) fitting_dictionary_local, _, _, strategy_dictionary_local = fit_strategy( strategy_dictionary_local, data_local, fitting_inputs_local, fitting_targets_local) error_loop = fitting_dictionary_local['error'] if error_loop < error and fitting_dictionary_local['n_trades'] != 0: error = error_loop strategy_dictionary_optimum = strategy_dictionary_local fitting_dictionary_optimum = fitting_dictionary_local if strategy_dictionary_optimum: profit, test_profit = output_strategy_results( strategy_dictionary_optimum, fitting_dictionary_optimum, data_local, toc) else: test_profit = -2 return strategy_dictionary_optimum,\ fitting_dictionary_optimum,\ fitting_inputs_local,\ fitting_targets_local,\ data_local,\ test_profit
def tensorflow_fitting(strategy_dictionary_local): toc = tic() data_local, data_2 = import_data(strategy_dictionary_local) fitting_inputs_local, continuous_targets, classification_targets = input_processing( data_local, data_2, strategy_dictionary) if strategy_dictionary_local['regression_mode'] == 'classification': fitting_targets_local = classification_targets elif strategy_dictionary_local['regression_mode'] == 'regression': fitting_targets_local = continuous_targets fitting_inputs_local, strategy_dictionary_local = preprocessing_inputs( strategy_dictionary_local, fitting_inputs_local) fitting_dictionary, error_loop, profit_factor = fit_tensorflow( strategy_dictionary_local, data_local, fitting_inputs_local, fitting_targets_local) underlined_output('Best strategy fit') output_strategy_results(strategy_dictionary, fitting_dictionary, data_local, toc) return strategy_dictionary, data_local, fitting_inputs_local, fitting_targets_local
if strategy_dictionary['fit_time']: strategy_dictionary, fitting_dictionary, fitting_inputs, fitting_targets, data_to_predict = fit_time_scale( strategy_dictionary, search_iterations, time_iterations, toc) else: strategy_dictionary, fitting_dictionary, fitting_inputs, fitting_targets, data_to_predict, test_profit \ = random_search( strategy_dictionary, search_iterations, toc) underlined_output('Best strategy fit') if strategy_dictionary['plot_last']: strategy_dictionary['plot_flag'] = True output_strategy_results(strategy_dictionary, fitting_dictionary, data_to_predict, toc, momentum_dict=simple_momentum_comparison( data_to_predict, strategy_dictionary, fitting_dictionary)) underlined_output('Offset validation') offsets = np.linspace(0, 300, 5) offset_scan_validation(strategy_dictionary, data_to_predict, fitting_inputs, fitting_targets, offsets)