年化15.73%:创业板指数布林带突破Backtrader策略(代码+数据)

news2024/9/23 1:37:33

原创文章第582篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。

昨天咱们使用backtrader,重写了创业板动量趋势择时:年化19.2%:backtrader+quantstats实现创业板动量择时(代码+数据)

今天咱们换一个通道指标:布林带——backtrader内置的指数,不需要自己实现,使用默认参数20,2。

# 参数定义
    params = (
        ('period', 20),
        ('devfactor', 2)
    )


    def __init__(self):
        self.bbands = bt.indicators.BollingerBands(period=self.params.period, devfactor=self.params.devfactor)
        self.order = None

下面是策略逻辑——收盘价突破上轨时买入,突破下轨时平仓:

def next(self):
    if self.order:
        return

    if self.data.close[0] > self.bbands.lines.top[0]:
        if self.position.size == 0:
            commission_info = self.broker.getcommissioninfo(self.data)
            cash = self.broker.get_cash() - commission_info.getsize(1, self.data.close[0])
            size = cash // self.data.close[0]
            self.buy(size=size)
            # print(f'BUY: {size} shares')

    elif self.data.close[0] < self.bbands.lines.bot[0]:
        if self.position.size > 0:
            size = self.position.size
            self.close(size=size)
            # print(f'SELL: {size} shares')

使用empyrical来计算风险、收益指标:

import empyrical as em
max_drawdown = em.max_drawdown(returns) 
print('夏普比:%.2f'%em.sharpe_ratio(returns))
print('最大回撤:%.2f'%max_drawdown)

print('年化收益:%.2f'%em.annual_return(returns))

图片

图片

代码所在位置:

图片

代码下载:

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

empyrical的年化收益计算逻辑:

  num_years = len(returns) / ann_factor
    # Pass array to ensure index -1 looks up successfully.
    ending_value = cum_returns_final(returns, starting_value=1)

    return ending_value ** (1 / num_years) - 1

而quantstats——区别在于这个years,它计算的是日期区间,比如20100101-20101231,那就是365天——这里应该取len(returns),它的years偏大,计算出来的年化收益率偏小。

years = (returns.index[-1] - returns.index[0]).days / periods

res = abs(total + 1.0) ** (1.0 / years) - 1

投资,含投机,获利的本质逻辑,是建立概率优势。

结果还是不确定的,但重复博弈结果是有正收益的,这就是一个好的交易系统。

然后咱们再来聊,基本面价值投资(成长型投资),技术分析,量化投资,套利,高频交易等。

普通人做所谓价值投资我是不太看好的。

价值发现的时间,可能是数年甚至更久。这期间会发生什么事情,普通人是没有渠道获知的。

普通人根本判断不了什么是好公司,好的商业模式。

——替代方案是大类资产配置,选择低相关性的长期向上指数,动态再平衡即可。

然后就是偏短线的量化,价量为主,辅以其他一些数据——量化投机。

以控制回撤为前提,获取市场alpha。

从这个意义上看,期货就是一个挺好的选择。

吾日三省吾身

“没有实力做支撑的愤怒毫无意义”。

“你生气,说明你没有赢它的把握”。

不必愤怒,而是持续,抓紧一切机会提升自己,然后潇洒离开那些烂人烂事。

历史文章:

年化19.2%:backtrader+quantstats实现创业板动量择时(代码+数据)

年化达21%(K=1),最大回撤35%,K=3时,卡玛比最优,最大回撤20%(年化15.2%)| Quantlab5.0代码发布

Alpha2:使用深度强化学习挖掘公式化的超额收益因子(附论文及源代码)

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

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

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

相关文章

Labview_Note_4

1.字符串显示控件设置自动在最下边位置 字符串属性节点中→文本→滚动条位置 滚动框在滚动条中的位置。 如需设置该位置&#xff0c;可连线用于表示滚动行数的数值至该属性。LabVIEW在滚动条的最后一行显示连线至该属性的数值。如需滚动至文本的最后一行&#xff0c;可连线行…

Lab1 论文 MapReduce

目录 &#x1f339;前言 &#x1f985;2 Programming Model &#x1f33c;2.1 Example &#x1f33c;2.2 Types &#x1f33c;2.3 More Examples &#x1f985;3 Implementation(实现) &#x1f33c;3.1 ~ 3.3 &#x1f33c;3.4 ~ 3.6 &#x1f985;4 Refinemen…

OpenBayes 教程上新 | 清华大学强推!YOLOv10 实现更高效的目标检测

过去几年中&#xff0c;由于 YOLO 在计算成本和检测性能之间的有效平衡&#xff0c;它已经成为实时目标检测领域的主要范式。然而&#xff0c;YOLO 依赖于非极大值抑制 (NMS) 进行后处理&#xff0c;这阻碍了 YOLO 的端到端部署&#xff0c;并对推理延迟产生了不利影响。 YOLO…

C++第三弹 -- 类与对象(上)

目录 前言一. 面向过程和面向对象的初步认识二. 类的引入三. 类的定义1.定义2. 命名规则建议 四. 类的访问限定符以及封装1. 访问限定符2.面试题3. 封装 五. 类的作用域六. 类的实例化七. 类的对象大小的计算八. 类成员函数this指针1. this指针的引出2. this指针的特性3. C语言…

虚幻引擎在建筑和房地产中的五大颠覆性应用:探索新时代的优势

最初&#xff0c;虚幻引擎作为一个强大的游戏开发工具出现。它不断推动虚拟环境的可能性边界。正因如此&#xff0c;它的使用自然而然地超越了游戏开发&#xff0c;涵盖了包括建筑工程在内的其他行业。那么&#xff0c;在建筑和房地产领域使用虚幻引擎有哪些好处呢&#xff1f;…

Date TimePicker 时间选择器精确限制到时分秒,此刻按钮点击失效处理

今天在开发的时候遇到一个需求&#xff0c;日期时间选择器组件不能选择已经过去的年月日时分秒。用户只能选择当前时间的时间&#xff0c;如果年月日选择是当天之前的时间&#xff0c;时分秒不做限制&#xff0c;如果年月日选择的是当天时间&#xff0c;就要判断时分秒&#xf…

koa + http-proxy-middleware 搭建一个带转发的静态服务器

背景 由于工作中碰到写普通页面&#xff08;未使用脚手架&#xff09;&#xff0c;需要发起接口请求&#xff0c;但普通页面又无法对接口发起正常请求&#xff0c;故编写一个Koa搭建的带转发功能的静态服务器。 起步 新建一个文件夹&#xff0c;在文件夹下打开 cmd 或者 git …

侯捷C++面向对象高级编程(上)-11-虚函数与多态

1.虚函数 2.virtual 3.继承&#xff0b;复合关系下的构造和析构 4.委托&#xff0b;继承

Java基础语法--基本数据类型

Java基础语法–基本数据类型 Java是一种静态类型语言&#xff0c;这意味着每个变量在使用前都必须声明其数据类型。Java提供了多种基本数据类型&#xff0c;用于存储整数、浮点数、字符和布尔值等。以下是Java中的基本数据类型及其特点&#xff1a; 1. 整型&#xff08;Integ…

深入剖析预处理

目录 1.预定义符号 2.#define 定义常量 3.#define定义宏 4.带有副作用的宏参数 5.宏替换的规则 6.宏函数的对比 7.#和## 7.1 #运算符 7.2 ## 运算符 8.命名约定 9.#undef 10.命令行定义 11.条件编译 12.头文件的包含 12.1 头文件被包含的方式&#xff1a; 12.1…

C++ 语法习题(2)

第三讲 循环语句 1.偶数 编写一个程序&#xff0c;输出 1 到 100之间&#xff08;包括 1 和 100&#xff09;的全部偶数。 输入格式 无输入。 输出格式 输出全部偶数&#xff0c;每个偶数占一行。 输入样例 No input输出样例 2 4 6 ... 100 参考代码: #include <i…

玩具营销是如何拿捏成年人钱包?

好像现在的成年人逐渐热衷于偏向年轻化&#xff0c;问问题会好奇“尊嘟假嘟”&#xff0c;饭量上的“儿童套餐”&#xff0c;娃娃机前排长队......而最突出的莫过于各类各式的玩具不断收割当代年轻人&#xff0c;除去常给大朋友们小朋友们送去玩具福利的“麦、肯”双门&#xf…

数据分析中excel常用函数总结

1、相对引用&#xff0c;绝对引用和混合引用 相对引用&#xff1a;比如求和&#xff0c;当计算出一个求和值&#xff0c;其他的就可以向下填充&#xff0c;此时求和引用的行列会随着求和区域的行列变化而变化。 绝对引用&#xff1a; 对某一个引用区域进行锁定&#xff0c;让…

华为防火墙 拓扑搭建1

拓扑图 要求 1.DMZ区内的服务器&#xff0c;生产区仅能在办公时间内&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;可以访问&#xff0c;办公区设备全天可以访问 配置安全策略 设置办公时间 2.生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网…

【Mongodb-03】亿级数据从mysql迁移到mongodb辛酸历程

亿级数据从mysql迁移到mongodb辛酸历程 一&#xff0c;亿级数据从mysql迁移到mongodb辛酸历程1&#xff0c;核心业务和前期实现2&#xff0c;分库分表考虑3&#xff0c;nosql的选择4&#xff0c;mongodb服务器购买or自己搭建5&#xff0c;数据从mysq迁移到mongodb5.1&#xff0…

算法力扣刷题记录 三十八【二叉树的层次遍历应用一及二叉树构建】

前言 二叉树层序遍历应用题目。 记录三十八 【二叉树的层次遍历应用一】 继续。 一、【107.二叉树的层次遍历 II】 题目 给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向…

如何解决英国Facebook直播网络延时问题?

许多商家在英国进行Facebook直播&#xff0c;但网络延时和卡顿问题常常困扰着用户。这不仅影响观众的观看体验&#xff0c;也会给商家带来巨大损失。本文将探讨解决英国Facebook直播网络延时和卡顿问题的方案&#xff0c;以促进业务发展并提升用户满意度。 海外直播的挑战 海外…

3GPP R18 Multi-USIM 是怎么回事?(三)

这篇内容相对来说都是一些死规定,比较枯燥。主要是与MUSIM feature相关的mobility and periodic registration和service request触发过程的一些规定,两部分的内容是有部分重叠的,为保证完整性,重复部分也从24.501中摘了出来。 24.501 4.25 网络和MUSIM UE可以支持MUSIM fe…

优劣分析:重启路由器 vs 使用IP代理

目前更换IP主要有两种常见方法&#xff0c;一种是重启路由器&#xff0c;另一种是使用代理IP&#xff0c;那么&#xff0c;这两种方法有什么优缺点呢&#xff1f;下面我们一起来探讨一下。 方法一&#xff1a;重启路由器变换IP 优点 1. 操作简单&#xff1a;只需断开路由器电…

头歌资源库(22)求组合数

一、 问题描述 二、算法思想 动态规划是一种将问题分解成子问题并保存子问题解以避免重复计算的算法思想。 对于组合数C(n, r)&#xff0c;我们可以将问题分解成子问题C(i, j)&#xff0c;其中i表示从1到n的选择数&#xff0c;j表示选择的元素个数。则C(n, r)可以通过求解C(i…