Deap因子挖掘:比gplearn强100倍(代码+数据)

又到了星球发布代码的日子:

图片

更新说明:1、Deap做因子挖掘的框架使用。值得说明的是,源码级别,并非产品级,不能指望输入一堆symbols,然后就开始挖掘。——我相信需要做因子挖掘的同学,并不是这样的诉求。亮点:1、支持多symbol
2、支持常数,比如roc(close,20)
3、支持截面。4、支持生成的表达式直接在咱们的因子表达式引擎计算,并可以回测。一句话,gplearn能做的,deap能做,gplearn不能做的,咱们也能做。

下载代码包,安装requirements.txt后,直接运行deap_main可以直接体验:

图片

图片

当下主流私募里多因子策略的玩法,除了经验手工构造之外,机器挖掘有几条路径: 遗传算法,主要是深度改造版本的gpearn,咱们直接使用deap弯道超车;强化学习——这个星球过几周应该会放出代码来(不依赖qlib的版本),然后是使用AIGC来生成因子。

其实因子挖掘思路大同小异,没有什么特别。

这里更重要的命题是如何评价一个因子的有效性,或者更直接一点,如何通过因子,构建出有效的策略——这本身就是因子有效性的定义。而不是ic、ir这样简单的指标?

所以,下周会重点专注于——单因子的评价框架。类似alphalens,但应该要比它好用。

吾日三醒吾身

芒格的多元思维模型,就是两个看似相互矛盾的体系,在你这个可以完美融合。

其实这里的逻辑也比较简单。

所以认知或模型,都有其成立的条件,这就意味着有边界。

在恰当的条件下,选择适用的模型,而不是照本宣科。

比如大量理财书,比如《穷爸爸、富爸爸》,或者《拿铁因素》,讲的都是复利,长期,慢慢变富的理念;但在《百万富翁快车道》里,这种就被称为“慢车道”。

孰对?都对。

慢车道普通人只要意识到,都可能做到,做时间的朋友,这就应该去做,越早越好。因为你做与不做,时间都会一天天过去, 我们都会慢慢变老。有慢车道财富自由加持,你的财务更加安全,甚至过了40年,就实现了财务自由。

而快车道强调变富要趁早——这当然好嘛。

不矛盾。它更强调创造价值,做生产者,做出一款产品或服务,然后数年时间实现自由。

对应咱们说的ABCZ, Z更接近慢车道(当然咱们的年化设定为10%,比慢车道快,你看,这就是多元思维模型)。而“快车道”更接近C计划。

历史文章:

Deap因子挖掘基础框架完成|量化私募投研的典型工作流程

Deap因子挖掘:比gplearn强100倍(代码+数据)

deap:多股票多维度遗传算法因子挖掘,可以整合chatGPT。

Quantlab4.0框架代码发布:支持零代码快速创建策略(代码+全市场数据下载)

AI量化实验室——2024量化投资的星辰大海

续前面两篇,继续使用Deap做因子挖掘——与咱们的Quantlab因子表达式引擎直接关联起来了:

1、生成的因子,在训练集和测试集上计算ic值。

def map_exprs(evaluate, invalid_ind, gen, label, split_date):
names, features = [], []
for i, expr in enumerate(invalid_ind):
names.append(f'GP_{i:04d}')
features.append(stringify_for_sympy(expr))

features = [f.lower() for f in features]
for name, feature in zip(names, features):
print(name, ':', feature)

all_names = names.copy()
all_names.append(label)
all_features = features.copy()
all_features.append('label(close,5)')

df = CSVDataloader(path=DATA_DIR_QUOTES.resolve(), symbols=['510300.SH', '159915.SZ']).load(all_features, all_names)
df.set_index([df['symbol'], df.index], inplace=True)
# df.dropna(inplace=True)

# IC划分成训练集与测试集
df_train = df[df.index.get_level_values(1) < split_date]
df_valid = df[df.index.get_level_values(1) >= split_date] print(df_train) print(names, features) ic_train = df_train[names].groupby(level=0, group_keys=False).agg(lambda x: calc_ic(x, df_train[label])).mean() ic_valid = df_valid[names].groupby(level=0, group_keys=False).agg(lambda x: calc_ic(x, df_valid[label])).mean() print('ic_train', ic_train) print('ic_valid', ic_valid) results = {} for name, factor in zip(names, features): results[factor] = {'ic_train': ic_train.loc[name], 'ic_valid': ic_valid.loc[name], } print(results) return [(v['ic_train'],v['ic_valid']) for v in results.values()]

计算结果如下:

与动量相关的因子,ic值还是比较高的。

图片

图片

吾日三省吾身

“欲买桂花同载酒,终不似,少年游”。

韶华易逝,花开堪折直须折。——有点及时行乐的意味。

毕竟,年少时,有精力,有体力,但没有时间和财力。但年长后,往往相反。

及时行乐和长期主义,其实是需要平衡的。

《拿铁因素》这本小书,讲的理念和方法论就特别好。

——先投资自己、让账户自动运转、从现在起富有地生活。

这个理念不仅适用于理财,也适用于生活、工作与职业发展。

通俗地说:人生的悲剧在于,人死了,钱没花了;但反过来,也很痛苦,人活着,钱没了。

先对未来布局,做出长期主义的预案之后,及时行乐。——二者可以完美组合。

只想着及时行乐,如同求学时期,天天打游戏,挂科,当一天和尚撞一天钟的同学,离开学校后,要承受现实无情的蹂躏数十年。

而天天记账,看场电影都要计算成本,那生活也缺少很多乐趣,着实也坚持不一去。——有多少人年轻时尝试记过账,但有多少人真的坚持下来了?

正确的做法,每天1/8的工资入理财账户,做长期理财投资,其余的,不用刻意计划。如此。

当定期运动成为习惯而已,就不必刻意节食。

所谓“随心所欲不逾矩”,就是这种状态。

人无远虑,必有近忧。

往前看三年,来指导当下应该做的,重要不紧急的事情。每天行动,把它逐步做成。

往前计划一年,往往会高估,但却低估未来三年的成长与进步。

从ABCZ的逻辑,过去三年来,Z计划成型,B计划稳步开展,A计划也稳定运行。在这个基础上,未来三年,应该寻求C计划之突破。

——成功的人生,是按自己的意愿过一生。

你想要什么样的生活呢?——开始布局吧,如果当下的生活不是你期望的样子,那就动手创造她。

Quantlab 4.1:基于Deap遗传算法多股票因子挖掘

deap:多股票多维度遗传算法因子挖掘,可以整合chatGPT。

AI量化实验室——2024量化投资的星辰大海

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103361
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注