Пример #1
0
Файл: c9.py Проект: 3774257/abu
def sample_933():
    """
    9.3.3 GridSearch寻找最优参数
    :return:
    """
    from abupy import GridSearch

    read_cash = 1000000
    choice_symbols = ['usNOAH', 'usSFUN', 'usBIDU', 'usAAPL', 'usGOOG',
                      'usTSLA', 'usWUBA', 'usVIPS']

    sell_factors_product, buy_factors_product = sample_932(show=False)

    grid_search = GridSearch(read_cash, choice_symbols,
                             buy_factors_product=buy_factors_product,
                             sell_factors_product=sell_factors_product)

    from abupy import ABuFileUtil
    """
        注意下面的运行耗时大约1小时多,如果所有cpu都用上的话,也可以设置n_jobs为 < cpu进程数,一边做其它的一边跑
    """
    # 运行GridSearch n_jobs=-1启动cpu个数的进程数
    scores, score_tuple_array = grid_search.fit(n_jobs=-1)

    """
        针对运行完成输出的score_tuple_array可以使用dump_pickle保存在本地,以方便修改其它验证效果。
    """
    ABuFileUtil.dump_pickle(score_tuple_array, '../gen/score_tuple_array')

    print('组合因子参数数量{}'.format(len(buy_factors_product) * len(sell_factors_product)))
    print('最终评分结果数量{}'.format(len(scores)))

    best_score_tuple_grid = grid_search.best_score_tuple_grid
    AbuMetricsBase.show_general(best_score_tuple_grid.orders_pd, best_score_tuple_grid.action_pd,
                                best_score_tuple_grid.capital, best_score_tuple_grid.benchmark)
Пример #2
0
Файл: c9.py Проект: zly111/abu
def sample_933():
    """
    9.3.3 GridSearch寻找最优参数
    :return:
    """
    from abupy import GridSearch

    read_cash = 1000000
    choice_symbols = ['usNOAH', 'usSFUN', 'usBIDU', 'usAAPL', 'usGOOG',
                      'usTSLA', 'usWUBA', 'usVIPS']

    sell_factors_product, buy_factors_product = sample_932(show=False)

    grid_search = GridSearch(read_cash, choice_symbols,
                             buy_factors_product=buy_factors_product,
                             sell_factors_product=sell_factors_product)

    from abupy import ABuFileUtil
    """
        注意下面的运行耗时大约1小时多,如果所有cpu都用上的话,也可以设置n_jobs为 < cpu进程数,一边做其它的一边跑
    """
    # 运行GridSearch n_jobs=-1启动cpu个数的进程数
    scores, score_tuple_array = grid_search.fit(n_jobs=-1)

    """
        针对运行完成输出的score_tuple_array可以使用dump_pickle保存在本地,以方便修改其它验证效果。
    """
    ABuFileUtil.dump_pickle(score_tuple_array, '../gen/score_tuple_array')

    print('组合因子参数数量{}'.format(len(buy_factors_product) * len(sell_factors_product)))
    print('最终评分结果数量{}'.format(len(scores)))

    best_score_tuple_grid = grid_search.best_score_tuple_grid
    AbuMetricsBase.show_general(best_score_tuple_grid.orders_pd, best_score_tuple_grid.action_pd,
                                best_score_tuple_grid.capital, best_score_tuple_grid.benchmark)
Пример #3
0
sell_atr_nstop_factor_grid = {'class':[AbuFactorSellJiJinWave]}
# sell_atr_nstop_factor_grid = {'class':[AbuFactorSellMinMax]}

sell_factors_product = ABuGridHelper.gen_factor_grid(ABuGridHelper.K_GEN_FACTOR_PARAMS_SELL,[sell_atr_nstop_factor_grid])
for sell_factors_product_item in sell_factors_product:
    # sell_factors_product_item[0]['slippage'] = AbuSlippageSellOpen
    sell_factors_product_item[0]['slippage'] = AbuSlippageSellClose
    # sell_factors_product_item[0]['slippage'] = AbuSlippageSellMinMax

print('卖出因子参数共有{}种组合方式'.format(len(sell_factors_product)))
ABuEnv.date_str = datetime.datetime.now().strftime("_%Y_%m_%d")

grid_search = GridSearch(read_cash,choice_symbols,buy_factors_product=buy_factors_product,
                         sell_factors_product=sell_factors_product,n_folds=1,start=startDate, end=endDate)
if __name__ == '__main__':    #多线程必须内容,不可删除。
    scores,score_tuple_array = grid_search.fit(n_jobs=-1)
    store_python_obj(score_tuple_array, 'score_tuple_array'+ABuEnv.date_str, show_log=False)
#-------权重方式开始------
    if score_tuple_array != None:
        scorer = WrsmScorer(score_tuple_array, weights=[1, 0, 0, 0])
        scorer_returns_max = scorer.fit_score()
        best_result_tuple = score_tuple_array[scorer_returns_max.index[-1]]
        print(best_result_tuple.buy_factors) #打印最优因子
        print(best_result_tuple.sell_factors) #打印最优因子
        store_abu_result_tuple(best_result_tuple, n_folds=None, store_type=EStoreAbu.E_STORE_CUSTOM_NAME,
                               custom_name='best_1_0_0_0')
        AbuMetricsBase.show_general(best_result_tuple.orders_pd, best_result_tuple.action_pd,
                                    best_result_tuple.capital, best_result_tuple.benchmark, only_info=False)

        scorer = WrsmScorer(score_tuple_array, weights=[0, 1, 0, 0])
        scorer_returns_max = scorer.fit_score()