代码实证:gpquant基于沪深300ETF的因子挖掘

时间:2024-02-23 10:37:24  热度:0°C

原创文章第461篇,专注“AI量化投资、个人成长与财富*** 。

本周的重点是gplearn应用于CTA策略的因子挖掘,已经有两篇文章:

gplearn遗传算法应用于CTA因子挖掘:手把手教程(代码+数据下载)

gplearn系列:使用因子rank ic评估因子性能(代码+数据)

代码统一于本周五(明天)在星球更新,包括CTA回测框架、数据,因子挖掘等:AI量化实验室——2024量化投资的星辰大海

今天继续:

gpquant已经扩展了不少内容,我们可以拿过来用。

使用沪深300ETF的数据,很多同学问,股票行不行,其实咱们的代码和框架,你换成ETF,股票,期货或者加密货币,都差不多,我没有使用市场相关的东西。

import numpy as npimport pandas as pdfrom matplotlib import pyplot as pltfrom sklearn/utils import *from gpquant/SymbolicRegressor import SymbolicRegressorfrom gplearn/genetic import SymbolicTransformerfrom gplearn/functions import make_functionfrom config import DATA_DIRfrom datafeed import CSVDataloaderloader = CSVDataloader(DATA_DIR/joinpath( etfs )/ [ 510300/SH ]/start_date= 20220101 )data = loader/load(names=[ label ]/ fields=[ shift(close/5)/close-1 ])data/dropna(inplace=True)data/columns = [c/capitalize() for c in data/columns]print(data)feature_names = [ Open / High / Low / Close / Amount ]y_train = data[ Label ]X_train = data[feature_names]from gplearn/functions import _function_mapsr = SymbolicRegressor(population_size=2000/ tournament_size=20/ generations=3/ stopping_criteria=0/01/ p_crossover=0/7/ p_subtree_mutate=0/1/ p_hoist_mutate=0/1/ p_point_mutate=0/05/ init_depth=(6/ 8)/ init_method= half and half / function_set=list(_function_map/keys())/ variable_set=feature_names/ const_range=(0/ 1)/ ts_const_range=(0/ 1)/ build_preference=[0/75/ 0/75]/ #metric= annual return / metric= sharpe ratio / parsimony_coefficient=0/01)sr/fit(X_train/ y_train)print(sr/best_estimator)

------------Generation 1------------

best estimator/ div(max(div(sin(sqrt(inv(Amount)))/ sub(div(abs(High)/ sub(1/ Open))/ max(neg(0)/ max(0/ Low))))/ abs(tan(mul(abs(Open)/ sqrt(Close)))))/ mul(cos(log(add(inv(1)/ Close)))/ min(div(sub(sqrt(0)/ Open)/ neg(add(Open/ Close)))/ neg(min(Low/ add(1/ Amount))))))

best fitness/ 3/735121955881781

div(max(div(sin(sqrt(inv(Amount)))/ sub(div(abs(High)/ sub(1/ Open))/ max(neg(0)/ max(0/ Low))))/ abs(tan(mul(abs(Open)/ sqrt(Close)))))/ mul(cos(log(add(inv(1)/ Close)))/ min(div(sub(sqrt(0)/ Open)/ neg(add(Open/ Close)))/ neg(min(Low/ add(1/ Amount))))))

样本内夏普3/73,还可以吧。

当然这个因子非常复杂了。

代码明天统一打包更新:

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

明天讲讲GPT-alpha/

吾日三省吾身

最近翻了一本小书:《种子:走出迷茫,找到人生和工作的意义》。

说是翻,基本就是上班路上就看完了。

因为这种书,着实不需要逐字逐句去读。

老外写书,特别喜欢把一个简单的道理,搁到一个复杂故事里去讲。他们是演绎思维,我们还得发心思再把它归纳出来。

这本书最后演绎的结论是于当下的工作和生活中找到意义。简言之,不要试去找所谓“有意义的工作”,而是在当下的工作中找到意义。

若是早年,看到这个结论,我会和评论区里多数同学一样,把书扔了。

但现在似乎读出了一点不一样的东西。

其实每件事情,事业,工作都是一个复杂体系,一定有你喜欢,热爱的,也有你不热爱的。

在学校时,没日没夜写代码,不求回报,没开心;但毕业去了大公司,拿着不错的回报,反而没有了这份热情。为什么?是突然不喜欢了吗?不是,喜欢的是那份***,想学啥学啥,想用啥用啥,想如何设计架构就如何设计,然后看着自己写的代码运行起来那份成就感。。。但大厂有其规范,工程师为何后来戏称“码农”,因为你没有选择,就是把活干了。

所以说,你喜欢的,是一些“元素”,而不是某一种工作。任何工作中都有你喜欢的和不喜欢的。所以你觉得换工作就能解决问题是错的,而是你要从工作中发现你喜欢的,去拥抱它。

比如创业,更多的琐事,搞定人,搞定资本,而不是电视剧里关键节点的杀伐决断。你是否喜欢应付这种日常?

从这个角度想过去,AI量化反倒特别契合我。

满足对新技术的好奇,选择自己喜欢的技术栈,离市场近,不需要过多受制于人的因素。——“一人企业”特别契合我的理念。

至于意义嘛——把前沿技术转化为生产力,我们搞应用或者科普,落在量化上,只是目前找到有落地路径的一个场景;后续比如像大模型LLM/ Sora等,如何能以“一人企业”的模式落地,我们依然会探索。

另外,个人特别喜欢“规则极简,内涵极丰富”的技术产品形态,比如围棋,规则可能两句话就说清楚了,但却是棋类里最难的。搜索,推荐,以及当下的ChatGPT问答。产品极简,但内在技术极丰富。

回到量化投资,它的内核就是因子,因子组合成策略。

这时我们仅需要专注因子挖掘,或者说因子的自动化挖掘就好。

历史文章:

gplearn遗传算法应用于CTA因子挖掘:手把手教程(代码+数据下载)

gplearn系列:使用因子rank ic评估因子性能(代码+数据)

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

免责声明:
1. 《代码实证:gpquant基于沪深300ETF的因子挖掘》内容来源于互联网,版权归原著者或相关公司所有。
2. 若《86561825文库网》收录的文本内容侵犯了您的权益或隐私,请立即通知我们删除。