def re_check(sess, num=15): start = 0 try: db = mysql.connect(**config.config_db) cursor = db.cursor() cursor.execute(select_query) records = cursor.fetchall() for alpha_id in records: if start == num: break result, selfcorr, prodcorr = utils.check_submission( alpha_id[0], sess) if result == True and selfcorr > 0: print("RESULT: Pass : "******" : " + str(prodcorr)) cursor.execute( update_query.format(selfcorr, prodcorr, alpha_id[0])) db.commit() start = start + 1 print("Number of qualified alpha: {}/{}".format(start, num)) elif result == False: print("RESULT: Fail : " + str(selfcorr) + " : " + str(prodcorr)) cursor.execute(update_combo_query.format(alpha_id[0])) db.commit() utils.change_name(alpha_id[0], sess, name='FAILED') else: print("Timed-out or Exception") db.close() except Exception as ex: trace_msg = traceback.format_exception(etype=type(ex), value=ex, tb=ex.__traceback__) utils.db_insert_log("re_check", str(trace_msg), "")
def signal_simulate(thread_num): while True: try: #alpha_codes = signal_generator.get_alphas(data) #alpha_ids = simulator.multi_simulate(sess, alpha_codes, top, region, thread_num) # alpha_ids = simulator.simulate_alpha(sess, alpha_codes[0], top, region, thread_num) # if alpha_ids != None: # print("ALPHA_IDS :" + str(alpha_ids)) # for alpha_id in alpha_ids: # results = utils.get_alpha_info(alpha_id, sess) # if results["weight_test"] == 'FAIL': # print("Thread {}: Alpha {}: Not enough performance".format(thread_num, alpha_id)) # break # elif results["sharpe"] >= config.min_signal[0] and results["fitness"] >= config.min_signal[1]: # selfcorr = float(utils.check_selfcorr(alpha_id, sess)) # if selfcorr <= config.min_signal[2]: # prodcorr = float(utils.check_prodcorr(alpha_id, sess)) # if prodcorr <= config.min_signal[2]: # results["self_corr"]=selfcorr # results["prod_corr"]=prodcorr # results["theme"] = theme # utils.db_insert_signals(results) # utils.change_name(alpha_id, sess, "signal") # else: # print("Thread {}: Alpha {}: Not enough performance".format(thread_num, alpha_id)) alpha_code = signal_generator.get_alphas(data) alpha_id = simulator.simulate_alpha(sess, alpha_code, top, region, thread_num) if alpha_id != None: results = utils.get_alpha_info(alpha_id, sess) if results["weight_test"] == 'FAIL': print("Thread {}: Alpha {}: Not enough performance".format( thread_num, alpha_id)) elif results["sharpe"] >= config.min_signal[0] and results[ "fitness"] >= config.min_signal[1]: selfcorr = float(utils.check_selfcorr(alpha_id, sess)) if selfcorr <= config.min_signal[2]: prodcorr = float(utils.check_prodcorr(alpha_id, sess)) if prodcorr <= config.min_signal[2]: results["self_corr"] = selfcorr results["prod_corr"] = prodcorr results["theme"] = theme utils.db_insert_signals(results) utils.change_name(alpha_id, sess, "signal") else: print("Thread {}: Alpha {}: Not enough performance".format( thread_num, alpha_id)) except Exception as ex: trace_msg = traceback.format_exception(etype=type(ex), value=ex, tb=ex.__traceback__) if 'alpha_ids' in locals() or 'alpha_ids' in globals(): #utils.db_insert_log("signal_simulate", str(trace_msg), str(alpha_ids)+" - "+ str(type(alpha_ids)) + str(datetime.now())) utils.db_insert_log( "signal_simulate", str(trace_msg), str(alpha_id) + " - " + str(type(alpha_id)) + str(datetime.now())) else: utils.db_insert_log("signal_simulate", str(trace_msg), "")
def get_submitted_alpha(sess): offset = 0 while True: collect_url = 'https://api.worldquantvrc.com/users/self/alphas?limit=100&offset={}&stage=OS%1fPROD&order=-dateSubmitted&hidden=false'.format(offset*100) response = sess.get(collect_url) res_json = json.loads(response.content) results = res_json["results"] if len(results) != 0: for result in results: alpha_id = result["id"] print("TRANSFER Alpha ID: {}".format(alpha_id)) alpha_info = utils.get_alpha_info(alpha_id, sess) utils.db_insert_submitted(alpha_info) utils.change_name(alpha_id, sess, name = 'submitted') offset = offset + 1 else: print("FINISHED!") break
def combo_simulate(thread_num): while True: try: list_signal = combo_generator.get_set_signals(top, region) combo_alpha, list_alpha_ids = combo_generator.generate_combo( list_signal, num_signals, top, region) alpha_id = simulator.simulate_alpha(sess, combo_alpha["alpha_code"], top, region, thread_num) utils.change_name(alpha_id, sess, name="potential") if alpha_id != None: alpha_info = utils.get_alpha_info(alpha_id, sess) if alpha_info["sharpe"] >= config.min_combo[0] and alpha_info[ "fitness"] >= config.min_combo[1]: result, selfcorr, prodcorr = utils.check_submission( alpha_id, sess) #print(result) if result == True and max(selfcorr, prodcorr) <= config.min_combo[2]: alpha_info["self_corr"] = selfcorr alpha_info["prod_corr"] = prodcorr alpha_info["theme"] = utils.set_theme( alpha_info["alpha_code"], alpha_info["region"], data_theme) utils.change_name(alpha_id, sess, "can_submit") utils.db_insert_combo(alpha_info) for signal_id in list_alpha_ids: combo_generator.update_count_used(signal_id) else: print("Thread {}: Alpha {}: Not enough performance".format( thread_num, alpha_id)) else: print("Time-out") except Exception as ex: trace_msg = traceback.format_exception(etype=type(ex), value=ex, tb=ex.__traceback__) utils.db_insert_log("combo_simulate", str(trace_msg), str(combo_alpha["alpha_code"]))
db = mysql.connect(**config.config_db) cursor = db.cursor() cursor.execute(select_query) records = cursor.fetchall() for alpha_id in records: result, selfcorr, prodcorr = utils.check_submission(alpha_id[0], sess) if result == True: print("Pass : "******" : " + str(prodcorr)) cursor.execute( stuff.update_query.format(selfcorr, prodcorr, alpha_id[0])) db.commit() elif result == False: print("Fail : " + str(selfcorr) + " : " + str(prodcorr)) cursor.execute(stuff.delete_query.format(alpha_id[0])) db.commit() utils.change_name(alpha_id[0], sess, name='FAILED') db.close() elif mode == "3": # Sua lai check selfcorr truoc (query rieng) >> Check prodcorr. select_query = 'SELECT alpha_id, self_corr, prod_corr FROM signals WHERE self_corr < 0 OR prod_corr < 0' update_query = 'UPDATE signals SET self_corr = {}, prod_corr = {} WHERE alpha_id = \'{}\'' delete_query = 'DELETE FROM signals WHERE alpha_id = \'{}\'' db = mysql.connect(**config.config_db) cursor = db.cursor() cursor.execute(select_query) records = cursor.fetchall() for alpha_id in records: if alpha_id[1] < 0: selfcorr = utils.check_selfcorr(alpha_id[0], sess) if selfcorr <= config.min_signal[2]: print("Pass: {}".format(selfcorr))
def auto_submit(mode, num_today, sess): try: max_num_alpha = 5 num_alpha = num_today select_query = 'SELECT alpha_id, alpha_code, settings FROM combo WHERE self_corr > 0 AND prod_corr > 0 ORDER BY {} DESC LIMIT {}' if mode == "1": while num_alpha < max_num_alpha: alpha_id = str(input("Alpha ID: ")) result, selfcorr, prodcorr, tried_time = submit_alpha( alpha_id, sess) if result == True and tried_time < max_tried_time: num_alpha = num_alpha + 1 db_move_combo(alpha_id, selfcorr, prodcorr, sess) utils.change_name(alpha_id, sess, name='submitted') alpha_info = utils.get_alpha_info(alpha_id, sess) alpha_code = alpha_info["alpha_code"] alpha_settings = alpha_info["settings"] update_actual_use_signals(alpha_id, alpha_code, alpha_settings) print("Alpha {} submitted successfully. ({}/5)".format( alpha_id, num_alpha)) elif result == False and tried_time < max_tried_time: #db_delete_combo(alpha_id) db_update_combo(alpha_id) print("Can not submit alpha {}.".format(alpha_id)) elif result == False and tried_time == max_tried_time: print("Time-out") else: print("There was an exception!!!") elif mode == "2": db = mysql.connect(**config.config_db) cursor = db.cursor() cursor.execute(select_query.format(config.combo_criteria, 50)) records = cursor.fetchall() db.close() for alpha_id in records: if num_alpha == 5: break result, selfcorr, prodcorr, tried_time = submit_alpha( alpha_id[0], sess) if result == True and tried_time < max_tried_time: num_alpha = num_alpha + 1 db_move_combo(alpha_id[0], selfcorr, prodcorr, sess) utils.change_name(alpha_id[0], sess, name='submitted') update_actual_use_signals(alpha_id[0], alpha_id[1], alpha_id[2]) print("Alpha {} submitted successfully. ({}/5)".format( alpha_id[0], num_alpha)) elif result == False and tried_time < max_tried_time: db_update_combo(alpha_id[0]) print("Can not submit alpha {}.".format(alpha_id[0])) elif result == False and tried_time == max_tried_time: print("Time-out") else: print("There was an exception!!!") elif mode == "3": print("WARNING: Pause the combo simulation!") # Recheck 15 alphas >> Submit 1 >> Increase index >> Loop. # If an alpha get stucks, cannot submit and show "Time-out" forever, the function will be stucked. But I'm too lazy for it, so well :v. while num_alpha < 5: stuff.re_check(sess, 10) db = mysql.connect(**config.config_db) cursor = db.cursor() cursor.execute(select_query.format( config.combo_criteria, 1)) # Choose one alpha to submit alpha_id = cursor.fetchall() db.close() result, selfcorr, prodcorr, tried_time = submit_alpha( alpha_id[0][0], sess) if result == True and tried_time < max_tried_time: num_alpha = num_alpha + 1 db_move_combo(alpha_id[0][0], selfcorr, prodcorr, sess) utils.change_name(alpha_id[0][0], sess, name='submitted') update_actual_use_signals(alpha_id[0][0], alpha_id[0][1], alpha_id[0][2]) print("Alpha {} submitted successfully. ({}/5)".format( alpha_id[0][0], num_alpha)) elif result == False and tried_time < max_tried_time: db_update_combo(alpha_id[0][0]) print("Can not submit alpha {}.".format(alpha_id[0][0])) elif result == False and tried_time == max_tried_time: print("Time-out") else: print("There was an exception!!!") except Exception as ex: trace_msg = traceback.format_exception(etype=type(ex), value=ex, tb=ex.__traceback__) utils.db_insert_log("auto_submit", str(trace_msg), "")