Py学习  »  Python

年化450%,夏普比5.23,回撤7% | deap因子挖掘系统python代码发布

七年实现财富自由 • 1 月前 • 67 次点击  
原创内容第1012篇,专注AGI+,AI量化投资、个人成长与财富自由。
今日策略:年化450%,夏普比5.23,回撤7%。

http://www.ailabx.com/strategy/68c7c731fd408079e03bcc10

开始因子挖掘:

from deap import base, creator, gp

creator.create("FitnessMax", base.Fitness, weights=(1.0,))def init_tool_box():
        # creator.create("Individual", gp.PrimitiveTree, fitness=creator.FitnessMax)
        from deap import base, creator, tools
        creator.create("Individual", gp.PrimitiveTree, fitness=creator.FitnessMax)
        toolbox = base.Toolbox()        from deap_factor.init_pset import get_pset
        pset = get_pset()        toolbox.register("expr", gp.genHalfAndHalf, pset=pset, min_=1, max_=5)        toolbox.register("individual", tools.initIterate, creator.Individual, toolbox.expr)        # print(toolbox.individual())        toolbox.register("population", tools.initRepeat, list, toolbox.individual)
        toolbox.register("evaluate"print)  # 在map中一并做了
        toolbox.register("select", tools.selTournament, tournsize=3)  # 目标优化        # toolbox.register("select", tools.selNSGA2)  # 多目标优化 FITNESS_WEIGHTS = (1.0, 1.0)        toolbox.register("mate", gp.cxOnePoint)        toolbox.register("expr_mut", gp.genFull, min_=0, max_=2)        toolbox.register("mutate", gp.mutUniform, expr=toolbox.expr_mut, pset=pset)
        from deap_factor.backtest import backtester        toolbox.register('map', backtester)
        import operator
        toolbox.decorate("mate", gp.staticLimit(key=operator.attrgetter("height"), max_value=17))        toolbox.decorate("mutate", gp.staticLimit(key=operator.attrgetter("height"), max_value=17))        return toolbox
if __name__ == '__main__':    from deap_factor import utils    from deap import tools    import numpy as np    my_tool_box = init_tool_box()    # 这里定义初始化的因子数,可以得行修改    print('开始生成因子...')    pop = my_tool_box.population(10)    for p in pop:            print(utils.stringify_for_sympy(p))
    hof = tools.HallOfFame(10)    # 只统计一个指标更清晰    stats = tools.Statistics(lambda ind: ind.fitness.values)    # 打补丁后,名人堂可以用nan了,如果全nan会报警    stats.register("avg", np.nanmean, axis=0)    stats.register("std", np.nanstd, axis=0)    stats.register("min", np.nanmin, axis=0)    stats.register("max", np.nanmax, axis=0)    #print(stats)    from deap_factor.deap_patch import *  # noqa    population, logbook = eaMuPlusLambda(pop, my_tool_box,                                         # 选多少个做为下一代,每次生成多少新个体                                         mu=150, lambda_=100,                                         # 交叉率、变异率,代数                                         cxpb=0.5, mutpb=0.1, ngen=3,                                         # 名人堂参数                                         # alpha=0.05, beta=10, gamma=0.25, rho=0.9,                                          stats=stats, halloffame=hof, verbose=True,                                         # 早停                                         early_stopping_rounds=5)


代码所在位置(还有一些细节在持续优化中):

代码已经提交至星球:AI量化实验室——量化投资的星辰大海

好好努力,积累本金,构建一人企业。 
每天“不管”一点点,每天就变强一天天。
代码和数据下载:AI量化实验室——2025量化投资的星辰大海

AI量化实验室 星球,已经运行三年多,1800+会员。

aitrader代码,因子表达式引擎、遗传算法(Deap)因子挖掘引等,支持vnpy,qlib,backtrader和bt引擎,内置多个年化30%+的策略,每周五迭代一次,代码和数据在星球全部开源。


点击 “查看原文”,直接访问策略集合

扩展  •  历史文章   


年化390%,回撤7%,夏普6.32 | A股量化策略配置

年化30.24%,最大回撤19%,综合动量多因子评分策略再升级(python代码+数据)

年化429%,夏普5.51 | 全A股市场回测引擎构建

年化443%,回撤才7%,夏普5.53,3积分可查看策略参数

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/187378