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

今天继续:

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

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

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.utils import *
from gpquant.SymbolicRegressor import SymbolicRegressor
from gplearn.genetic import SymbolicTransformer
from gplearn.functions import make_function

from config import DATA_DIR
from datafeed import CSVDataloader

loader = 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_map sr = 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,还可以吧。

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

代码明天统一打包更新:

明天讲讲GPT-alpha:

图片

吾日三省吾身

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关推荐

发表回复

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