海龟交易系统所代表的传统CTA策略是不是过时了?

news2024/9/22 1:27:31

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

量化投资具体步骤:数据、指标(因子),信号规则或因子合成,策略,绩效评估,风控

其实所有的策略都可以归结为以上的步骤。

我们把通用的步骤积累起来,这样就可以快速形成策略,以应对变化的市场,做到有复利,有积累。

量化交易与主观交易不同在于,量化可以沉淀下来很多经验。

今天开放了QQ个人群,群邀请已经在星球置顶了,感兴趣的星友直接加入即可。AI量化实验室——2024量化投资的星辰大海

思考一个问题,回测与实盘,开发策略是可以分开的。

回测讲求效率,而实盘讲求性能和稳定性。

而回测系统不必过于拘泥于细节,多数场景下,向量化回测就够了。

比如vectorBT就是这个逻辑。

像ETF的资产配置,股票的轮动,使用vectorBT或者bt(不是backtrader)就足够了。

这有什么好处呢?策略代码非常简洁,而且不容易出错。

大家感受一下海龟交易系统的代码——只有在这种场景下,也就是精细化的仓位管理,比如向上突破一次,加仓多少个ATR这样的逻辑。

ize = 0
    self.buy_count = 0
    # 海龟交易法则中的唐奇安通道和平均波幅ATR        
    self.H_line = bt.indicators.Highest(self.data.high(-1), period=self.p.long_period)
    self.L_line = bt.indicators.Lowest(self.data.low(-1), period=self.p.short_period)
    self.TR = bt.indicators.Max((self.data.high(0) - self.data.low(0)), \
                                abs(self.data.close(-1) - self.data.high(0)), \
                                abs(self.data.close(-1) - self.data.low(0)))
    self.ATR = bt.indicators.SimpleMovingAverage(self.TR, period=14)
    # 价格与上下轨线的交叉      
    self.buy_signal = bt.ind.CrossOver(self.data.close(0), self.H_line)
    self.sell_signal = bt.ind.CrossOver(self.data.close(0), self.L_line)

def next(self):
    if self.order:
        return
        # 入场:价格突破上轨线且空仓时        
    if self.buy_signal > 0 and self.buy_count == 0:

        self.buy_size = self.broker.getvalue() * 0.01 / self.ATR
        self.buy_size = int(self.buy_size / 100) * 100
        self.sizer.p.stake = self.buy_size
        self.buy_count = 1
        print('空仓时买入', self.buy_size)
        self.order = self.buy()
        # 加仓:价格上涨了买入价的0.5的ATR且加仓次数少于3次(含)        
    elif self.data.close > self.buyprice + 0.5 * self.ATR[0] and self.buy_count > 0 and self.buy_count <= 4:
        print('加仓买入')
        self.buy_size = self.broker.getvalue() * 0.01 / self.ATR
        self.buy_size = int(self.buy_size / 100) * 100
        self.sizer.p.stake = self.buy_size
        self.order = self.buy()
        self.buy_count += 1
        # 离场:价格跌破下轨线且持仓时        
    elif self.sell_signal < 0 and self.buy_count > 0:
        print('平仓信号卖出')
        self.order = self.sell()
        self.buy_count = 0
        # 止损:价格跌破买入价的2个ATR且持仓时        
    elif self.data.close < (self.buyprice - 2 * self.ATR[0]) and self.buy_count > 0:
        print('止损信号卖出')
        self.order = self.sell()
        self.buy_count = 0

        # 交易记录日志(默认不打印结果)

def log(self, txt, dt=None, doprint=False):
    if self.params.printlog or doprint:
        dt = dt or self.datas[0].datetime.date(0)
        print(f'{dt.isoformat()},{txt}')

# 记录交易执行情况(默认不输出结果)
def notify_order(self, order):
    # 如果order为submitted/accepted,返回空
    if order.status in [order.Submitted, order.Accepted]:
        return
    # 如果order为buy/sell executed,报告价格结果
    if order.status in [order.Completed]:
        if order.isbuy():
            self.log(f'买入:\n价格:{order.executed.price},\
            成本:{order.executed.value},\
            手续费:{order.executed.comm}')

            self.buyprice = order.executed.price
            self.buycomm = order.executed.comm
        else:
            self.log(f'卖出:\n价格:{order.executed.price},\
            成本: {order.executed.value},\
            手续费{order.executed.comm}')

        self.bar_executed = len(self)

        # 如果指令取消/交易失败, 报告结果
    elif order.status in [order.Canceled, order.Margin, order.Rejected]:
        self.log('交易失败')
    self.order = None

# 记录交易收益情况(可省略,默认不输出结果)
def notify_trade(self, trade):
    if not trade.isclosed:
        return
    self.log(f'策略收益:\n毛收益 {trade.pnl:.2f}, 净收益 {trade.pnlcomm:.2f}')

def stop(self):
    self.log(f'(组合线:{self.p.long_period},{self.p.short_period});\
    期末总资金: {self.broker.getvalue():.2f}', doprint=True)

图片

这种策略多见过传统的CTA策略,但AI量化里,多因子、排序、轮动是主角,仓位管理更多通过投资组合来完成,而非这种仓位分配和管理。

吾日三省吾身

昨天一同事过来聊天,说打算创业做点事情。

我第一反应是, 这个时候去创业,怎么考虑的。

尽管我基本明白背后的逻辑,应该是工作上出现的状况。

同事说,年初换了一家公司,觉得很谈得来,在二选一中选择了前者,结果半年不到,公司放弃了原定的规划,同事只能离开。

再尝试到找工作,面试机会倒是有——其实已经挺不容易了——但年龄的坎不好过去了。

肉少狼多,企业自然有的挑。

年轻人有冲劲,还没能家庭负担。

可能,这是多数职场人的归宿吧,或早或迟而已。

另外一个年轻的朋友说,现在公司卷着,说暂时肯定不动了,能不出来就不出来,至少把房贷清了,再积累一些资本,这样稳妥。

同事说,心理建设了1个多月,其实客观看,也不是什么大事,没能房贷,生活成本不高,没有负债,之前的成本也可以确保好多年财务安全。

只不过,习惯了,就得有一个工作,这是一种安全感的来源了吧。

国外很多人,很自然给自己安排一年的空窗期,就是工作一年,休息一年,去看世界,做自己喜欢的事情,而且还没有储蓄,似乎也很自然,但我们就会觉得特别没有安全感。

但事情就这么发生了,也总会有办法。

山重水复疑无路,柳暗花明又一村。

我们都得开始重新思考对孩子的教育观念,理财,写作以及一门硬技能。比如AI,智能体开发等。

如果你不需要通过一个组织去谋生,那学历就不是刚需。

财富自由不是你想不想的问题,而是必须去做的事情。

历史文章:

年化从19.1%提升到22.5%,全球大类资产轮动,加上RSRS择时,RSRS性能优化70倍。(附策略源码)

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

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

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

相关文章

Redis 篇-深入了解查询缓存与缓存所带来的问题(读写不一致、缓存穿透、缓存雪崩、缓存击穿)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 本章目录 1.0 什么是缓存 2.0 项目中具体如何添加缓存 3.0 添加缓存后所带来的问题 3.1 读写不一致问题 3.1.1 缓存更新策略 3.1.2 具体实现缓存与数据库的双写一致 3.2 缓存穿…

DAC专用功能芯片TI DAC8562/8563

DAC8563具有 2.5V、4ppm/C 基准的 16 位、双通道、低功耗、超低短时脉冲波形干扰、缓冲电压输出 DAC。 DAC8562是一款16位、双通道、串行接口的DAC&#xff0c;采用SPI接口进行通信&#xff0c;具有内部参考电压、软件可编程增益和输出保护等功能。 一、DAC8563的主要参数 供…

JVM面试(二)内存区域划分

内存区划分 Java虚拟机在执行Java程序的过程中会把它锁管理的内存划分为若干个不同的数据区域。 这些区域有各自不同的用途&#xff0c;以及创建和销毁的时间。 有的区域随着虚拟机的进程一直存在&#xff0c;有的区域依赖用户线程的启动和结束而建立和销毁。 根据《Java虚拟…

YOLOv8 训练15种动物分类模型

1. 下载数据集 https://hyper.ai/datasets/31084 2. 进行训练 这里数据集没做拆分&#xff0c;训练测试都是同一个数据集。 train.py:python from ultralytics import YOLO from ultralytics.utils import DEFAULT_CFG from datetime import datetimecurrent_time datetim…

2.1CPU内部结构

&#x1f393; 微机原理考点专栏&#xff08;通篇免费&#xff09; 欢迎来到我的微机原理专栏&#xff01;我将帮助你在最短时间内掌握微机原理的核心内容&#xff0c;为你的考研或期末考试保驾护航。 为什么选择我的视频&#xff1f; 全程考点讲解&#xff1a;每一节视频都…

利用深度学习实现验证码识别-3-ResNet18

在当今数字化时代&#xff0c;验证码作为一种重要的安全验证手段&#xff0c;广泛应用于各种网络场景。然而&#xff0c;传统的验证码识别方法往往效率低下&#xff0c;准确率不高。今天&#xff0c;我们将介绍一种基于 ResNet18 的验证码识别方法&#xff0c;它能够高效、准确…

AI大模型优化技巧:参数高效微调(PEFT)与LoRA微调深度解析

1. Fine-tuning 相较于基础大模型动辄万卡的代价&#xff0c;微调可能是普通个人或者企业少数能够接受的后训练大模型(post-training)的方式。 微调是指在一个预训练模型(pre-training)的基础上&#xff0c;通过少量的数据和计算资源&#xff0c;对模型进行进一步训练&#x…

阿里巴巴数学竞赛成绩未公布:背后的权衡与期待

文 | 头部财经首席评论员白立新 发布 | 头部财经 top168.com 导语&#xff1a;2024 年阿里巴巴数学竞赛成绩迟未公布&#xff0c;引发广泛猜测。中专生姜萍的表现备受瞩目&#xff0c;达摩院陷入两难困境。这场竞赛结果的公布&#xff0c;关乎多方利益与社会影响&#xff0c;…

UML(ER) manual book

图形与符号 实体 真实世界的表示&#xff08;实物&#xff09;&#xff0c;负责数据的发送或者接收&#xff0c;通常使用矩形表示。 处理和加工 通常使用圆圈表示数据时如何被处理&#xff0c;比如下订单&#xff0c;付款等动作。 数据存储 通常使用两条平行线表示&…

碲化镉太阳能电池:绿色能源的新星,高效转换引领未来

随着全球对清洁能源需求的持续增长和技术的不断进步&#xff0c;碲化镉太阳能电池必将在未来的能源市场中占据重要地位。‌‌PicoQuant公司一直致力于碲化镉太阳能电池新材料、‌新工艺的探索与研发&#xff0c;充分利用其在时间分辨技术上的优势&#xff0c;‌为碲化镉太阳能电…

5、LVGL控件-滑轮、滑动条、圆弧

本篇文章目录导航 ♠♠ LVGL控件-滑轮、滑动条、圆弧 ♣♣♣♣ 一、LVGL 滑轮部件 ♦♦♦♦♦♦♦♦ 1.1 滑轮部件组成部分 ♦♦♦♦♦♦♦♦ 1.2 滑轮部件基本API ♦♦♦♦♦♦♦♦ 1.3 实验小演示 ♣♣♣♣ 二、LVGL 滑动条部件 ♦♦♦♦♦♦♦♦ 2.1 滑动条部件组成部分 ♦…

论文阅读:MambaVision: A Hybrid Mamba-Transformer Vision Backbone

论文地址&#xff1a;arxiv 摘要 作者提出了一种新型的混合 Mamba-Transformer 主干网络。通过重新设计 Mamba 公式&#xff0c;增强了其高效建模视觉特征的能力。 此外&#xff0c;作者还通过对 ViT 与 Mamba 消融研究&#xff0c;实验结果表明了&#xff1a;在最后几层为 …

“双碳”减排背景下企业自发电系统该具备哪些功能?

随着全球能源危机加剧、用能需求上升以及新能源技术的迅速发展&#xff0c;新能源发电的应用范围不断扩大&#xff0c;并逐步形成了新型能源与电力市场。然而&#xff0c;由于新能源的能量密度普遍较低&#xff0c;进行大规模发电时需精心挑选适合的位置&#xff0c;因此新能源…

【网络安全】服务基础第一阶段——第九节:Windows系统管理基础---- Windows_AD域

目录 一、域与活动目录 1.1 工作组 1.2 域 1.2.1 域&#xff08;Domain&#xff09; 1.2.2 域控制器&#xff08;Domain Controller&#xff0c;DC&#xff09; 1.2.3 功能和角色 1.2.4 管理和监控 1.2 5 域结构 1.3 组织单元&#xff08;Organizational Unit&#xff…

Seata 的4种事务模式(XA、AT、TCC、SAGA)

目录 前言 Seata架构 事务模式 XA AT TCC 区别 前言 在分布式系统中&#xff0c;实现一个功能可能需要由几个不同的服务来共同实现。这就会带来一个问题&#xff0c;不同的服务之间无法做到使用同一个事务&#xff0c;这就无法保证数据的一致性了。在一些对数据一致性要…

基于SSM的“基于决策树算法的大学生就业预测系统”的设计与实现(源码+数据库+文档)

基于SSM的“基于决策树算法的大学生就业预测系统”的设计与实现&#xff08;源码数据库文档) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统用户用例图 学校基础信息管理 毕业生基…

Java设计模式之装饰器模式详细讲解和案例示范

1. 引言 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许向现有对象添加新的功能&#xff0c;而无需修改其结构。这种模式通过使用组合而非继承来扩展对象的行为&#xff0c;在许多实际应用中极为常见。本文将详细介绍装饰器模式…

世界复合医学杂志社世界复合医学编辑部2024年第4期目录

论著 苏子降气汤联合三子养亲汤治疗痰浊壅肺型慢性阻塞性肺疾病急性加重期的临床疗效 周芹;周磊; 1-437 天麻钩藤汤加减联合依那普利叶酸片对原发性高血压患者血压水平与中医证候积分的影响 邹文博;王世雄; 5-8 伏诺拉生联合康复新液治疗反流性食管炎的临床研究 孙…

山体滑坡监测预警系统—百科分享

GNSS山体滑坡监测预警系统是一种利用全球导航卫星系统(GNSS)技术&#xff0c;对易发生山体滑坡的地段进行24小时不间断监测的先进系统。该系统能够实时记录易滑坡地段山体的各种变化情况&#xff0c;为灾害预警和防治提供科学依据。 GNSS山体滑坡监测预警系统通过在地表关键位置…

05-最新PyCharm安装详细教程及pycharm配置

一、PyCharm简介及其下载网站 PyCharm是由JetBrains打造的一款Python IDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。PyCharm提供了代码编辑、调试、语…