Ejemplo n.º 1
0
Archivo: c9.py Proyecto: 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)
Ejemplo n.º 2
0
Archivo: c9.py Proyecto: 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)
Ejemplo n.º 3
0
# sell_n_range = np.arange(1,2,1) # #设定买入后只持有天数,默认1
is_sell_today = True #设定买入n天后,当天还是隔天卖出。默认False。
# sell_atr_nstop_factor_grid = {'class':[AbuFactorSellNDay],'sell_n':sell_n_range}
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)
Ejemplo n.º 4
0
endDate = ['2020-02-26']
concept = symbols_dic['行业']
symbols = symbols_dic['数据']
windowSell = np.arange(7, 8, 1)
AbuBigNDown_grid2 = {
    'startDate': startDate,
    'endDate': endDate,
    'windowBuy': windowBuy,
    'windowSell': windowSell,
    'poly': poly
}

buy_factors_product = ABuGridHelper.gen_factor_grid_4_jijin(
    [AbuBigNDown_grid2])

print('买入因子参数共有{}种组合方式'.format(len(buy_factors_product)))
grid_search = GridSearch(100000,
                         choice_symbols=symbols,
                         buy_factors_product=buy_factors_product,
                         sell_factors_product=None,
                         start=startDate[0],
                         end=endDate[0],
                         concept=concept)
if __name__ == '__main__':  #多线程必须内容,不可删除。
    scores, score_tuple_array = grid_search.fit4JiJin(
        n_jobs=1,
        isJiJin=False,
        showWindowBuy=showWindowBuy,
        showWindowSell=showWindowSell,
        concept=concept)
Ejemplo n.º 5
0
        sell_atr_close_factor_grid
    ],
    need_empty_sell=True)

buy_bk_factor_grid1 = {'class': [AbuFactorBuyBreak], 'xd': [42]}
buy_bk_factor_grid2 = {'class': [AbuFactorBuyBreak], 'xd': [60]}

buy_factors_product = ABuGridHelper.gen_factor_grid(
    ABuGridHelper.K_GEN_FACTOR_PARAMS_BUY,
    [buy_bk_factor_grid1, buy_bk_factor_grid2])

read_cash = 100000
choice_symbols = ['usAAPL', 'usTSLA', 'usTQQQ']

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

scores = None
score_tuple_array = None


def run_grid_search():
    global scores, score_tuple_array
    # 运行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')


def load_score_cache():
Ejemplo n.º 6
0
showWindowBuy = True
showWindowSell = False
showMutil = False
AbuBigNDown_grid2 = {
    'jiJinCode': ['123456'],
    'startDate': startDate,
    'endDate': endDate,
    'windowBuy': windowBuy,
    'windowSell': windowSell,
    'poly': poly
}

buy_factors_product = ABuGridHelper.gen_factor_grid_4_jijin(
    [AbuBigNDown_grid2])

print('买入因子参数共有{}种组合方式'.format(len(buy_factors_product)))
grid_search = GridSearch(None,
                         jiJinCode,
                         buy_factors_product=buy_factors_product,
                         sell_factors_product=None,
                         n_folds=1,
                         start=startDate[0],
                         end=endDate[0])
if __name__ == '__main__':  #多线程必须内容,不可删除。
    keysObj = {'showMutil': showMutil}
    scores, score_tuple_array = grid_search.fit4JiJin(
        n_jobs=-1,
        showWindowBuy=showWindowBuy,
        showWindowSell=showWindowSell,
        keysObj=keysObj)
Ejemplo n.º 7
0
        'xd': [42]
    }

    buy_bk_factor_grid2 = {
        'class': [AbuFactorBuyBreak],
        'xd': [60]
    }

    buy_factors_product = ABuGridHelper.gen_factor_grid(
        ABuGridHelper.K_GEN_FACTOR_PARAMS_BUY, [buy_bk_factor_grid1, buy_bk_factor_grid2])

    # 有三种组合,分别为,只使用42日突破,只使用60日突破和同时使用42日和60日突破。
    print('买入因子参数共有{}种组合方式'.format(len(buy_factors_product)))
    print('买入因子组合形式为{}'.format(buy_factors_product))

    # 3、进行gridsearch
    read_cash = 100000
    choice_symbols = ['usNOAH', 'usSFUN', 'usBIDU']
    grid_search = GridSearch(read_cash, choice_symbols, buy_factors_product=buy_factors_product,
                             sell_factors_product=sell_factors_product)
    scores,score_tuple_array=grid_search.fit(n_jobs=-1)

    print('组合因子参数数量{}'.format(len(buy_factors_product) * len(sell_factors_product)))
    # 如果从本地序列文件中读取则没有scores
    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)