示例#1
0
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), "")
示例#2
0
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), "")
示例#3
0
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
示例#4
0
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"]))
示例#5
0
    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))
示例#6
0
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), "")