创业板动量策略年化20%如何优化来的?|多策略并行回测以及策略的超参数优化(代码+数据)

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

今天的代码工作,是多策略运行,及策略的超参数优化。

最近思考意义比较多。

包括AI量化的意义——从自动化,数字化到智能化。

赚钱是意义吗?赚钱是好事,但可以赚钱的事情很多,为何是量化。这个意义的思考,更多是为他人,为社会。

从为他人的角度,为星球的用户赚到钱,减少大家的工作量,减少大家研究资本市场的时间,这倒是个价值点。

engine添加优化器:可以对超参数进行优化:

def optimize(self,maximize: Union[str, Callable[[pd.Series], float]] = 'SQN',method: str = 'grid',max_tries: Optional[Union[int, float]] = None,constraint: Optional[Callable[[dict], bool]] = None,return_heatmap: bool = False,return_optimization: bool = False,random_state: Optional[int] = None,**kwargs):from numpy.random import default_rnghave_constraint = bool(constraint)class AttrDict(dict):def __getattr__(self, item):return self[item]def _tuple(x):return x if isinstance(x, Sequence) and not isinstance(x, str) else (x,)def _grid_size():size = int(np.prod([len(_tuple(v)) for v in kwargs.values()]))if size < 10_000 and have_constraint:size = sum(1 for p in product(*(zip(repeat(k), _tuple(v))for k, v in kwargs.items()))if constraint(AttrDict(p)))return sizerand = default_rng(random_state).randomgrid_frac = (1 if max_tries is None elsemax_tries if 0 < max_tries <= 1 elsemax_tries / _grid_size())param_combos = [dict(params)  # back to dict so it picklesfor params in (AttrDict(params)for params in product(*(zip(repeat(k), _tuple(v))for k, v in kwargs.items())))if constraint(params)  # type: ignoreand rand() <= grid_frac]if not param_combos:raise ValueError('No admissible parameter combinations to test')print(param_combos)

生成参数组合:

from engine.engine import Engine
from examples.strategies.tasks_config import TaskRollingdef test_opt():e = Engine(TaskRolling())e.optimize(n1=range(10, 110, 10),n2=range(20, 210, 20),n_enter=range(15, 35, 5),n_exit=range(10, 25, 5),constraint=lambda p: p.n_exit < p.n_enter < p.n1 < p.n2,maximize='Equity Final [$]',max_tries=200,random_state=0,return_heatmap=True)

 {'n1': 50, 'n2': 120, 'n_enter': 30, 'n_exit': 20}, {'n1': 50, 'n2': 140, 'n_enter': 20, 'n_exit': 10},

比如星球的同学说,咱们参数里那些 roc(20)>0.08,这个20和0.08怎么来的?——通过网格搜索优化来

明天继续——还是周五交付整体代码。AI量化实验室——2024量化投资的星辰大海

吾日三省吾身

人生有三大命题:健康(平安)、财富(适度名与利)、幸福(意义,活着为了什么)?

健康是1,没有健康,后面均无意义。

最近重读蔡磊的《相信》和于娟的《此生未完成》。无论你是谁,王侯将相,还是贩夫走卒,在健康平面,众生平等。

没有尊严,卑微的“乞求”活着,无论你有多少财富,抑或学识。

我在商界达到了成功的顶峰。在别人眼里,我的生活是成功的缩影。

然而,除了工作,我没有什么快乐。

最后,财富只是我习惯的生活事实。 

此时此刻,躺在病床上,回想起我的一生,我意识到,面对即将来临的死亡,我如此自豪的所有认可和财富,都已黯然失色,变得毫无意义。

在黑暗中,我看着救生机器发出的绿灯,听到机械嗡嗡作响的声音,我能感觉到死神的气息在靠近…。现在我知道了,当我们积累了足够的财富来维持我们的一生时,我们应该去追求其他与财富…无关的事情。 

应该是更重要的事情:也许是关系,也许是艺术,也许是年轻时代的梦想 不间断地追求财富只会把一个人变成一个扭曲的存在,就像我一样。。。

Steve Jobs

“中庸”之道是有道理的。

人不能既要又要还要。平衡一点,没有健康,啥也不是。好的生活习惯,好的心态,在于长期养成。越早觉醒,越容易获得。

财富,不能没有。

追求财富需要适度,不必钻牛角尖,知足常乐。——郭宇(28岁财务自由的程序员,我想起那些年错过的1个亿,悲伤的故事),张朝阳的状态就挺好的。

人生需要意义,人生的意义是什么呢?——纳瓦尔说,幸福是一种不需要作为的状态,是消除了缺憾感之后的感受。

斯多葛学派看人生:

过去的,用“宿命论”的观点,一切发生的事情,都是它应该的样子。所以——不要悔。

当下的——你做一下“悲剧假设”。你换位思考一下蔡磊和于娟的境遇,无论谁,都会发现自己拥有很多,佛教说"无畏施",读别人的故事,感受自己的人生。——对于当下,要珍惜,不要心安理得。你在抱怨同事勾心斗角,你应该想想,很多人想工作却求而不得。当你抱怨自己没有一双好鞋时,想想,有些人没有脚。。。

未来的——“二分控制论”。能掌控的,不能掌控的。只关心能掌控的东西。孩子学习成绩,未来什么中考分流,这是你无法掌控的。你能掌控的,多陪伴和引导,养成好的阅读习惯。

未来事情,不必着急,日子一天天过。明天和意外,并不知道哪个会先来。坏事会过去,好事也会过去,人生在世,体验而已。

斯多葛学派,不是躺平,也不是阿Q精神。而是教我们这个“千年一遇之大变局”,高度不确定下,如何寻求内心真正的安宁。

不确定是解决不完的,解决一个,还会再来一个。内心不受其扰,一切都会过去。

当下,才是真实。

过往不恋,未来不迎,当下不杂。

但行好事,莫问前程。

持续给大家写代码的,交付最前沿AI量化技术和策略的星球

历史文章:

lightGBM合成因子|对Alpha158因子集进行筛选,并做单因子分析(代码+数据)

Quantlab3.3代码发布:全新引擎 | 静待花开:年化13.9%,回撤小于15% | lightGBM实现排序学习

创业板指布林带突破策略:年化12.8%,回撤20%+| Alphalens+streamlit单因子分析框架(代码+数据)

轮动策略模板重写,先来一个年化21%的策略(代码+数据)

去掉底层回测引擎,完全自研,增加超参数优化,因子自动挖掘,机器模型交易。

飞狐量化——AI驱动的量化。(持续给大家写代码的,交付最前沿AI量化技术和策略的星球)AI量化实验室——2024量化投资的星辰大海

关于我:CFA,北大光华金融硕士,十年量化投资实战。 / CTO,全栈技术,AI大模型 。——应该是金融圈最懂技术的男人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能解决方案——体脂秤芯片CSU18M91

现在的年轻人爱健身&#xff0c;十分关注身材、形体&#xff0c;减肥、健身成了生活日常&#xff1b;中老年人则关注健康指数、有无病症&#xff0c;实时把握身体情况。现在一台体脂称通过测试体重、体脂、BMI、水分等数据并给出相应提示&#xff0c;并且许多人都将体脂检测数据…

go语言网络编程通信案例

一.服务端 package mainimport ("fmt""net" )// 服务端 func main() {fmt.Println("服务器开始监听...")listen, err : net.Listen("tcp", "localhost:8889")if err ! nil {fmt.Println("监听错误&#xff1a;",…

MySQL分组,获取组内最新的10条数据

一、记录 记录一次SQL&#xff0c;最近在项目中遇到了一个相对比较复杂的SQL。 要求依据分组&#xff0c;获取每个分组后的前10条数据。 分组查询最新的数据&#xff0c;应该都做过&#xff0c;但是获取前10条数据&#xff0c;还是没处理过的。 二、处理 2.1 前期数据准备 …

力扣刷题第十天 美丽塔 一

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i &#xff0c;高度为 heights[i] 。 如果以下条件满足&#xff0c;我们称这些塔是 美丽 的&#xff1a; 1 < heights[i] < maxHeights[i]heights 是一个 山脉…

开发知识点-Flutter移动应用开发

支持 安卓 IOS Android 鸿蒙 第一章dart基础章节介绍 移动电商——Flutter-广告Banner组件制作 移动电商——Flutter实战课程介绍 Flutter实例——路由跳转的动画效果

Elment UI的el-table-column表头旁边有点击按钮类似的操作

Elment UI的el-table-column表头旁边有点击按钮类似的操作 <el-table-column fixed"right" label"操作" ><!-- 表头 --> {{-- <template slot"header" header"scope">--}} {{-- <span…

精通 VS 调试技巧,学习与工作效率翻倍!

​ ✨✨ 欢迎大家来到贝蒂大讲堂✨✨ ​ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; ​ 所属专栏&#xff1a;C语言学习 ​ 贝蒂的主页&#xff1a;Betty‘s blog 1. 什么是调试 当我们写代码时候常常会遇见输出结果不符合我们预…

基于开源库imu_gps_localization进行组合导航

文章目录 概要数据准备准备工作运行复现结果参考概要 利用imu和GPS数据进行组合导航,在我的数据集上复现效果较差。 数据准备 https://github.com/ucr-robotics/citrus-farm-dataset 准备工作 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com…

not eligible for auto-proxying

​ 异常分析 异常信息 is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)异常触发 int beanProcessorTargetCount beanFactory.getBeanPostProcessorCount() 1 postProcessorNames.length;beanFactory.a…

单轴测径仪在线缆电缆测控中的应用

线缆电缆在生产中能进行品质测量与控制&#xff0c;对其生产模式而言&#xff0c;是更为合适的&#xff0c;毕竟其生产模式决定了其任何品质问题出现都会造成产品的品质下降或不合格。要想进行生产高品质的产品&#xff0c;对产线的要求较高。 单轴测径仪作为测控一体&#xff…

转义特殊字符——printf命令、sed命令

shell脚本中,一些字符串引用了特殊字符,但不能通过单引号原样输出,这时候就需要通过转义符对特殊符号进行转义。 printf命令——转义特殊字符 printf 命令是一个用于格式化输出的命令,可以根据指定的格式字符串和参数输出格式化的文本。 printf %q [参数列表]%q 是 pr…

安卓开发之自动缩放布局

AutoScalingLayout 适用于 Android 的自动缩放布局。 替换布局&#xff1a; 我们只需要替换根布局所需的自动缩放&#xff0c;子布局也将实现自动缩放。 原始布局AutoScalingLayout相对布局ASRelativeLayout线性布局ASLinearLayoutFrameLayout&#xff08;框架布局&#xff…

项目一:踏上Java开发之旅

文章目录 一、实战概述二、实战步骤任务1&#xff1a;安装配置JDK并开发第一个Java程序步骤一&#xff1a;安装JDK步骤二&#xff1a;配置JDK环境变量步骤三&#xff1a;开发第一个Java程序 课堂练习任务1、打印个人信息任务2、打印直角三角形任务3、打印一颗爱心任务4、打印史…

Linux服务器系统修改SSH端口教程

修改端口号是通过修改SSH的配置文件实现的&#xff0c;在服务器终端先激活root用户&#xff0c;然后输入&#xff1a; vim /etc/ssh/sshd_config找到#Port 22这个位置 键盘按i进入编辑模式 删除掉Port 22前面的#&#xff0c;然后键盘按一下回车键&#xff08;如果没有#可不必…

记一次SPI机制导致的BUG定位【不支持:http://javax.xml.XMLConstants/property/accessExternalDTD】

1、前因 今天在生产环境启用了某个功能&#xff0c;结果发现有个文件上传华为云OBS失败了&#xff0c;报错如下&#xff1a; Caused by: java.lang.IllegalArgumentException: 不支持&#xff1a;http://javax.xml.XMLConstants/property/accessExternalDTDat org.apache.xal…

C++参悟:数值运算相关

数值运算相关 一、概述二、常用数学函数1. 基础运算1. 浮点值的绝对值&#xff08; |x| &#xff09;2. 浮点除法运算的余数3. 除法运算的有符号余数4. 除法运算的有符号余数和最后三个二进制位5. 混合的乘加运算6. 两个浮点值的较大者7. 两个浮点值的较小者8. 两个浮点值的正数…

Grafana loki配置, 无脑版

使用docker部署Grafana loki 1.创建 docker-compose.yml 文件 touch docker-compose.yml写入以下内容 vim touch docker-compose.yml version: "3"networks:loki:services:loki:image: grafana/loki:latestrestart: unless-stoppedports:- "3100:3100"vo…

LeetCode 14.最长公共前缀(python版)

需求 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&#xff1a;strs [“dog”,“race…

【高效开发工具系列】Intellj IDEA 2023.3 版本

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

curl命令导致你下载的文件为空原因分析

文章目录 1.前言2. 通过curl -O 下载远端文件2.1 执行curl -O下载远端文件2.2 通过curl -v 查看详细的请求和响应的信息 3.通过在curl -O 中增加 -L 参数保证curl能够自动跟踪和请求远端返回的重定向地址4.结论 1.前言 最近在进行线上项目调试的过程中需要安装调试工具&#xf…