基于backtrader实现人工智能LOF的择时,optstrategy实现最优参数搜索(年化从9%提升至15.4%)

原创内容第695篇,专注量化投资、个人成长与财富自由。

今日策略

今天的策略是基于backtrader实现人工智能LOF的择时,通过backtrader的参数优化功能,找到最优参数

图片

策略主体:

策略有三个参数,一是动量周期,二是动量择时上边界,三是动量择时下边界。

class roc_trend(bt.Strategy):# 参数定义params = dict(period=20,  # 动量周期upper=8,lower=0,)def __init__(self):self.roc = bt.indicators.ROC(self.data, period=self.p.period)# self.roc = bt.talib.ROC(self.data, period=self.p.period)def next(self):if not self.position:  # not in the marketif self.roc[0] > self.p.upper / 100.0:  # if fast crosses slow to the upsideself.order_target_percent(self.data, 0.99)  # enter long# self.buy()  # enter longelif self.roc[0] < self.p.lower / 100.0:  # in the market & cross to the downsideself.close()  # close long position

图片

import sys
sys.path.append('../')
from matplotlib import rcParams
rcParams['font.family'] = 'SimHei'
import backtrader as bt
import pandas as pdfrom datafeed.dataloader import CSVDataloader
df = CSVDataloader.get_backtrader_df('161631.SZ')
df.dropna()class roc_trend(bt.Strategy):# 参数定义params = dict(period=20,  # 动量周期upper=8,lower=0,)def __init__(self):self.roc = bt.indicators.ROC(self.data, period=self.p.period)# self.roc = bt.talib.ROC(self.data, period=self.p.period)def next(self):if not self.position:  # not in the marketif self.roc[0] > self.p.upper / 100.0:  # if fast crosses slow to the upsideself.order_target_percent(self.data, 0.99)  # enter long# self.buy()  # enter longelif self.roc[0] < self.p.lower / 100.0:  # in the market & cross to the downsideself.close()  # close long positioncerebro = bt.Cerebro()
cerebro.broker.setcash(100*10000.0)
cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')data = bt.feeds.PandasData(dataname=df)
cerebro.adddata(data)if __name__ =='__main__':print('初始资金: %.2f' % cerebro.broker.getvalue())cerebro.optstrategy(roc_trend,upper=range(2, 10, 1),lower=(-3,0,1))result = cerebro.run(maxcups=None)# 打印结果def get_my_analyzer(result):analyzer = {}# 返回参数analyzer['period1'] = result.params.upperanalyzer['period2'] = result.params.lowerpyfolio = result.analyzers.getbyname('pyfolio')returns, positions, transactions, gross_lev = pyfolio.get_pf_items()import empyrical as emanalyzer['年化收益率'] = em.annual_return(returns)return analyzerret = []for i in result:ret.append(get_my_analyzer(i[0]))df = pd.DataFrame(ret)print(df)

找到最优参数是2和-3,即大于2%时买入,大于3%时卖出,年化15.4%

图片

图片

01 做正确的事与正确地做事——坚持的力量

一个大目标,或者说一个模糊的方向,一个大的梦想,如何一步步做到。

饭是一口口吃,日子是一天天过。

其实就是一直做。

看刘润演讲提到华杉的人生规划里,5:起床,写作2小时(已持续2000天),阅读1小时,学英语45分钟,58岁前写100本书。

不用看具体写啥读了啥,光这个持续就很有力量。

这个公众号我几乎日更了快700天,我相信同样也会日更到2000天,以及更久。

做对的事,然后把事做对。——这就是把事做对的方式。

我们很难一次就把事情做过,甚至很难一次就把事情选对,那就持续做,持续选,快速跑起来。

一年50本书(一周一本书,或者定为每天固定2小时阅读时间),写作一小时恐怕不够。

02 做正确的事

纳瓦尔说,他特别“三分钟热度”。

如果他不是硅谷最能赚钱的人之一,我们一度认为这是一个很大的缺点。

年轻时候我也反复检讨自己这一点。

但用他的话说,他肯定做不了科研的冷板凳,一个问题研究十年以上,甚至是一辈子。但他做科技创投,每天都可以接触和学习新兴的知识,领域,技术。他的好奇心得到了充分的满足和发挥。

这一点上樊登老师应该非常幸福。

读科技、人文、心理,历史、传记,育儿,哲学。想读什么就读什么,还给很多人科普和推荐了不少好书,带来知识的流动和传承,让很多人爱上阅读。——做喜欢的事情,还能创造巨大的价值,名利双收,还是自己热爱的事业,这就值得做上一辈子。

罗胖做了得到,自己就不做罗辑思维的,对于用户挺可惜的,从商业上无可厚非。罗辑思维本质上是“主题阅读”,然后选型还需要升华,与现实关联,他的选题策划是比较耗时的,相当于制作一期电视节目。

读着书,成长了自己,还能创造不小的价值,这就是正确的事。

快车道不只有创业。反过来说,读书本身也可以创业,得到、与辉同行,鸿学院不都是读书的衍生品?

从内容、观点到流量到IP,商业模式只是自然结果。

AI量化实验室 星球,已经运行三年多,1200+会员。quantlab代码交付至6.X版本,含几十个策略源代码,因子表达式引擎、遗传算法(Deap)因子挖掘引擎等,每周五迭代一次。

图片

点“阅读原文”,查看策略集(或复制网址:www.ailabx.com/mall)下载。

腹有诗书气自华。

读书最大的价值是自我成长和升华,然后在当下还能创造巨大的价值。

因此,我做了一个“读书成长创富群”,读非虚构书,技术,金融,历史,哲学。认清当下,看清未来。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

autodl怎么清理数据盘垃圾缓存

首先进入到root/autodl-tmp文件夹下&#xff0c;然后执行这个命令 du -h --max-depth1 .查看当前目录下各个子目录占用的内存 可以看到&#xff0c;./.Trash-0 目录下有太多垃圾了。清理 ./.Trash-0 目录&#xff0c;可以使用以下命令来删除该目录中的所有内容 rm -rf ./.Tr…

ctfshow(162)--文件上传漏洞--远程文件包含

Web162 进入界面&#xff1a; 思路 先传个文件测试一下过滤&#xff1a; 过滤了特别多符号&#xff0c;注意过滤了点. 我们的思路还是要先上传.user.ini文件: //修改前 GIF89a auto_prepend_fileshell.png//由于过滤了点&#xff0c;所以修改为 GIF89a auto_prepend_file…

开源IM即时通讯源码 / Java仿微信即时通讯APP源码 + 红包 + 客服 + 禁言 / WebSocket + uniapp框架开发

即时通讯应用已经成为现代社交和工作环境中的重要工具&#xff0c;而IM&#xff08;即时通讯&#xff09;系统的设计与开发也逐渐成为开发者关注的重点。本文将介绍一个基于Java开发的开源IM即时通讯系统&#xff0c;模拟微信的即时通讯功能&#xff0c;涵盖了红包、客服、禁言…

拒绝事后背锅:测试项目中的风险管理一定要知道

在博主的公司中&#xff0c;测试经理除了要管理产品线的质量保障和日常部门事务工作外&#xff0c;另一项比较重要的就是测试项目全流程的管理。 今天不聊整体的测试项目流程如何开展&#xff0c;而是想聊一聊在同行中比较高频出现的一个字眼&#xff1a;风险管理。 什么是风…

4.1 WINDOWS XP,ReactOS对象与对象目录----1

系列文章目录 文章目录 系列文章目录4.1 对象与对象目录OBJECT_HEADERObpLookupEntryDirectory()NtCreateTimer() 4.1 对象与对象目录 “对象(Object)”这个词现在大家都已耳熟能详了&#xff0c;但是对象到底是什么呢?广义地说&#xff0c;对象就是“目标”&#xff0c;行为…

数据结构——栈

栈 1. 栈的概念和结构2. 栈的实现2.1 原型声明2.2 初始化和销毁2.3 入栈 出栈2.4 取栈顶数据2.5 判空2.6 获取数据个数 3. 总结 &#x1f525; 博客主页: 偷心编程 &#x1f3a5; 系列专栏: 《Java学习》 《C语言学习》 《数据结构C语言版》 ❤️ 感谢大家点赞&#x1f44d;收…

谷歌浏览器中编辑并重发请求

文章目录 1、直接重发请求2、修改传参后重发请求3、可能的报错 有时候&#xff0c;需要调整请求参数后&#xff0c;重新发送请求&#xff0c;查看响应&#xff0c;从浏览器搬到Postman太繁琐&#xff0c;可直接在浏览器进行编辑并重发 1、直接重发请求 F12 > Network >…

day19作业

注册登录 #include "log.h" void reg() {char name[20],pwd[20];printf("请输入账号&#xff1a;");fgets(name,sizeof(name),stdin);printf("请输入密码&#xff1a;");fgets(pwd,sizeof(pwd),stdin);//name[strlen(name)-1]\0;printf("账…

[LitCTF 2023]ez_XOR

文件无壳 拖入ida 查看主函数伪c代码 继续跟进xor函数 函数遍历输入的字符串 Str&#xff0c;对每个字符执行异或操作&#xff0c;并将字符与 3 * a2 异或 所以题目的加密过程是将字符串E}J]OrQF[V8zV:hzpV}fVF[t与3异或 写出脚本 def XOR_encrypt(input_str, a2):encrypted_…

[数据结构从小白到大牛]第五篇:3分钟带你吃透双链表并用C语言模拟实现

目录 1->前言 2->链表的概念和结构 2.1链表概念 2.2->带头双向循环链表结构 3->模拟实现带头双向循环链表 3.1定义链表结点 struct ListNode 3.2创建链表结点 CreateLTNode 函数 3.3链表初始化函数 ListInit函数 3.4链表打印函数 ListPrint函数 3.5链表…

心觉:如果做不到“道生一”,能做到“一生道”也不得了

Hi&#xff0c;我是心觉&#xff0c;带你用潜意识化解各种焦虑、内耗&#xff0c;建立无敌自信&#xff1b;教你财富精准显化的实操方法&#xff1b;关注我,伴你一路成长&#xff01; 每日一省写作222/1000天 想学的东西太多&#xff0c;想练的能力太多&#xff0c;想重塑的负…

基于BP神经网络的手写体数字图像识别

基于BP神经网络的手写体数字图像识别 摘要 在信息化飞速发展的时代&#xff0c;光学字符识别是一个重要的信息录入与信息转化的手段&#xff0c;其中手写体数字的识别有着广泛地应用&#xff0c;如&#xff1a;邮政编码、统计报表、银行票据等等&#xff0c;因其广泛地应用范围…

SpringBoot项目中获取resources下静态文件时遇到的坑

文章目录 问题解决方法1. 上传到服务器指定的文件夹下2. 使用ClassPathResource读取 问题 在项目中需要使用到静态图片&#xff0c;将静态图片放在resources文件夹下。 本地使用this.getClass().getResource()读取静态图片一切正常&#xff0c;成功读取到静态图片。但是将项目…

树莓派AI视觉小车——2.小车蜂鸣器控制实验

如下图所示&#xff0c;蜂鸣器为板载元器件&#xff0c;所以不需要外接其他设备。 将机器人打开电源开机&#xff0c;运行程序代码即可。 import RPi.GPIO as GPIO import timeBuzzer 11CL [0, 131, 147, 165, 175, 196, 211, 248] # Frequency of Low C notes CM [0, 262…

【C++刷题注意事项】bfs?单源bfs?多源bfs?bfs解决拓扑排序?

一、bfs是个什么&#xff1f; 简单而言bfs就是个广度优先遍历&#xff0c;其根本就是我把与跟我当前点相邻的题目中所要求的点都统计出来并进行处理&#xff0c;再去遍历下一个满足的点的邻接的点的信息即可&#xff0c;最大的优势就是只需要不停的入队和出队即可。 那么我们就…

三、Java并发 Java 线程池 ( Thread Pool )

一、前言 本文我们将讲解 Java 中的线程池 ( Thread Pool )&#xff0c;从 Java 标准库中的线程池的不同实现开始&#xff0c;到 Google 开发的 Guava 库的前世今生 注&#xff1a;本章节涉及到很多前几个章节中阐述的知识点。我们希望你是按照顺序阅读下来的&#xff0c;不然…

string模拟实现迭代器

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 string模拟实现迭代器 迭代器的实现 主要实现的两种迭代器 这里我们实现迭代器我们主要…

推荐一款C盘清理工具:360清理Pro

360清理Pro是一款专门用于解决电脑C盘空间不足问题的清理工具。它旨在简化C盘清理过程&#xff0c;让用户能够轻松释放磁盘空间&#xff0c;提高电脑性能。与其它版本不同&#xff0c;这个独立版的360清理Pro无需依赖360安全卫士&#xff0c;是一个独立运行的工具。 软件特点 …

《scientific discovery in the age og artificial intelligence》文献阅读翻译

人工智能时代的科学发现 人工智能&#xff08;AI&#xff09;正日益被整合到科学发现中&#xff0c;以增强和加速研究&#xff0c;帮助科学家生成假设、设计实验、收集和解释大数据集&#xff0c;并获得使用传统科学方法可能无法获得的见解。在此&#xff0c;我们探讨了过去十…

字节青训-小D的 abc 变换问题

问题描述 小D拿到了一个仅由 "abc" 三种字母组成的字符串。她每次操作会对所有字符同时进行以下变换&#xff1a; 将 a 变成 bc将 b 变成 ca将 c 变成 ab 小D将重复该操作 k 次。你的任务是输出经过 k 次变换后&#xff0c;得到的最终字符串。 例如&#xff1a;对于初…