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 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): 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 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 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 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
'ticker_1': 'USDT_BTC', 'scraper_currency_1': 'BTC', 'candle_size': 300, 'n_days': 10, 'offset': 0, 'bid_ask_spread': 0.0007, 'transaction_fee': 0.0025, 'train_test_validation_ratios': [0.5, 0.2, 0.3], 'output_flag': True, 'plot_flag': False, 'plot_last': True, 'ml_iterations': 15, 'target_score': 'n_steps', 'web_flag': True, 'filename1': "USDT_BTC.csv", 'regression_mode': 'regression', 'momentum_compare': True, } search_iterations = 15 time_iterations = 30 strategy_dictionary, fitting_inputs, fitting_targets, data_to_predict = fit_time_scale( strategy_dictionary, search_iterations, time_iterations) underlined_output('Offset validation') offsets = np.linspace(0, 300, 5) offset_scan_validation(strategy_dictionary, data_to_predict, fitting_inputs, fitting_targets, offsets)
search_iterations = 15 time_iterations = 10 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)
'trading_currencies': ['ETH', 'BTC'], 'ticker_1': 'BTC_ETH', 'ticker_2': 'USDT_BTC', 'candle_size': 1800, 'n_days': 20, 'offset': 0, 'bid_ask_spread': 0.001, 'transaction_fee': 0.0025, 'train_test_ratio': 0.5, 'output_flag': True, 'plot_flag': False, 'ml_iterations': 100, 'target_score': 'idealstrategy', 'windows': [1, 5, 10, 50, 100], 'web_flag': False, 'filename1': "USDT_BTC.csv", 'filename2': "BTC_ETH.csv" } search_iterations = 50 underlined_output('Searching strategy') strategy_dictionary = random_search(strategy_dictionary, search_iterations) underlined_output('Offset validation') offsets = np.linspace(0, 300, 5) offset_scan_validation(strategy_dictionary, offsets) print strategy_dictionary