Python 算法交易实验70 简单回顾

说明

感觉停滞了一段时间,本来qtv200应该在去年12月就迭代好了。回顾了一下原因:

  • 1 工作的约束。因为量化现在是打辅助的角色(现在的工作还是比较香的),去年上了项目,几乎与世隔绝的那种,打断了整体的节奏。
  • 2 信心的影响。目前的量化效果并没有达到显著的程度,特别是因为之前的策略和标的都比较单一,且没有分叉,所以没有收集到足够多的反馈。
  • 3 计算环境的变化与演进。算力主机的租用、算网重要组件的更新,这些变化客观上说是非常大的,足以支持新一轮的创新。关于创新的定义,我记得马斯克有过一段话,原文不记得了,大致是这么说的:并不是完全创造一种全新的方法才是创新,即使是同样事,当客观条件发生变化时(如新工具),那么即使重新用该方法去做,也是一种创新。

从总体上,我对于qtv的想象是没有太大变化的,如果模糊的形容,qtv应该是运行在一个强化学习框架之下,会根据实际情况自动调整策略;qtv的模型是在是一个非常大的空间内,不断进行自动建模和优化的,类似遗传算法那;qtv的手工模式提供非常友好的前端、通知等交互方式;qtv会有一个规则引擎,执行自动交易;qtv可以接受无限扩展算力,高速的执行海量运算,其中有一种应该是采用显卡进行大规模LR并行建模;qtv会采用贝叶斯体系的算法;…

这些模糊的期待是完全可能且正在实现的,因此在准备前提条件和开始正式的版本迭代会有一个取舍。不能沉迷于幻想与技术,要时刻牢记并且思考正在做的事与目标的关联性,这是写本篇文章的第一动机。

内容

1 业务回顾

了解实际的表现

在过去的一年里,虽然没有持续扩大规范,但是策略一直在默默的执行。从行情上看,最近的一年应该是蛮负面的,以后可以把这段时间列为一个单独的测试空间。

好消息是,第一版(只有一个策略)并没有亏一毛钱。

第一个策略focus在510300、510500、512000、512010这四个ETF上,总体上盈利约10%,由于自动的交易都采取了较悲观的参数,所以实操结果会比这个更高一些。
在这里插入图片描述
总体上有115个订单,平均一个月有10个订单,所以从数量上还是可以的。手工上,我follow了一些订单
在这里插入图片描述
其中,NS开头的是我自己拍脑袋的操作,盈利率不高,且还有一堆被套的单子。 ⇒ 拍脑袋策略不可取,严格遵守策略一定是更好的。
从最近的实操上看,每个月也就5~6个订单的样子(有一些还在ope的状态)。一般来说,策略订单基本上不会超过10天的持有,有一些超长的是因为短信系统不靠谱:早就获利了解了,但是短信没通知到。 ⇒ 短信系统不可靠,还是用邮件+app通知靠谱
订单的平均盈利率在1个点左右,周转率按10天算的话,一年(250交易日)可以周转25次。订单的日均收益率大约是无风险(5%)的3~4倍的样子,大体上差不多。

有一些策略因为是基于同质模型的信号,所以有些订单会有不合理的聚拢情况。

仅从支持度上看,如果把订单规模扩大10倍应该就差不多了,每个月有50~60个订单。

每个订单假设5000元,平均盈利1%就是50元,总盈利为¥2500。50个订单每个月交易额为25万,按10天周转率,合理分配的话只要8万左右的资金(最大)。月利润率约为3.12%

在这里插入图片描述

另外,可以看到这四个标的也有很大的不同。510300和512010是亏损的,但是其交易次数明显少,这块我不知道是否也是模型的自限性:因为没有足够多的买信号产生,虽然模型犯错了,但是犯错的总额还是较少的。510500的盈亏比已经不错了,1.76,比较接近2。512000烦的错也不少,但还是明显盈利的。

结论

优点:

  • 1 稳赢。看起来,要确保胜利还是可以的。
  • 2 盈利率足够高。单月3%的平均盈利率是可以期待的,这意味着复利模式(即利润再投入)下24个月,可达到本金翻倍。

不足:

  • 1 支持度不够。目前的订单量太少了,还不足以作出具有统计可靠性的论断。
  • 2 盈亏比不够高。盈亏比是容错性能的保障,这可能是唯一需要特别关注的指标。特别是对于510300、512010这种,在任何情况下,是否还能保持盈亏比大于1?

2 技术性回顾

在过去的一年里,权重指数出现大幅回撤,这种情况以后也还会出现。在历史上,还曾经有过更大的回撤情况。所以从业务上,必然有一种考虑:如何确保量化可以应对足够极端的情况?

我认为,首先应该按时间分散风险;其次应该确保在不同的情况下,交易系统都能够正常运行(对冲)。

我想,按照一个长周期,例如1年来分散所有的投资,应该会很安全。但是这样资金的利用率就太低了,所以可以想象,应该是有一个较为协调的中值,且可以随风险偏好改变。风险偏好可能是更宏观的需求和模型。

另外,我们假定模型主要在稳态区间运行,而不是在变迁态。如果从统计上描述,如何属于稳态应该是有一些方法的,不展开。但是变迁始终会发生,怎么应对呢?

假设,我们的资金是100,我觉得可以分为两份。一份50将在稳态时运行,这些资金投资的策略更追逐短期利益。一旦判断行情退出稳态,那么这些资金将限制不做投资。另一份则作为长期投资,用于平衡变迁态无法交易带来的交易机会损失。这些资金投资的策略追求长期利益,基本上是以半年或者年为投资单位。在低位时持仓,高位减仓,但是其交易频率非常低。

长期投资还有一个重要用途:提供T+0的支持。特别地,在低位时仓位变大,T+0的Capacity也自动增大,反之,在高位自动钳制T+0的行为。

另外,长期投资还有吸收损失的特性。一些策略可能会产生“滞留”的订单,这些可以按照一定特性纳入长期投资,从而吸收伤害。

结论:

  • 1 判断稳态和非稳态
  • 2 长短期策略组合

2.1 特征回顾

最初只使用了价格趋势,而并不使用交易动量;后来的大部分模型使用了动量。

从构成交易的基础(回归理论)来说,只使用价格趋势是合理的,因为标的本身已经具备了统计稳定性。动量当然可以考虑,本着赛马不相马的原则,未来这些都会存在。

比较好的是使用了VV,这使得开发和复现都是参数化,容易复现。

比较差的是,这些处理都没有持久化,更像是一个个火花,一闪而逝。

结论:

  • 1 VV服务化
  • 2 特征持久化

2.2 基本模型信号回顾:双刃剑模型、风险模型。

最初没有意识到双刃剑模型的特性,只是单调的关注涨的成功率。有很多时候大涨的信号也同时意味着大跌,所以这种模型,对赌的成分太高了。
所以,我们真正的目标是盈亏比,而不是“有变化”。那么,怎么找出那些特征呢?怎么保证大多数时候吃到好的,很少的情况才吃瘪?我觉得,我是不知道这个方法的。但是,当我们把情况进行泛化、抽象化,我们可以发现这种情况是存在的,一定存在一组或者若干组特征,可以实现上面的情况。但是如何找出来可能不一定采取解析化方法。可以想象,我通过遗传算法来让计算机进行大量的尝试,找到那一组解。在这个过程当中,一定会找到一定范围内的若干组参数,甚至从分布的角度,会存在若干个中心点。这也是我认为单量是可以很容易的扩容的,而且是属于比较科学的方式。双刃剑模型可能在演变之后成为大砍刀模型:一边的刃很锋利,这是获利面;而另一边的刃很宽,这是亏损面。大砍刀模型就是属于那种可以拿着乱砍的,因为相对于获利,损失几乎可以不计。

除了双刃剑模型,还有风险模型。这种建模方式可能会更加简单,因为风险模型的核心就是不犯错。假设,我们面对亏损的概率很低,那么我们可以放心买入,然后利用回归中的波动性迅速卖出获利。可以认为,风险模型本身就认定现在处于稳态,价格将围绕中枢上下波动。所以,如果配合底仓,这类模型甚至可以演变T+0交易。一天之内,只要波动超过0.5%就可能获利,一天内反复波动则可以反复套利。

结论:

  • 1 将双刃剑演变为大砍刀
  • 2 采用遗传算法+MLR
  • 3 风险模型的T+0方法

3 交易操作回顾

消息本身的滞后和丢失比较强。在获取信息被后的信息时非常困惑,然后要采取进一步验证时也不知道数据在哪。在录入数据时还是太麻烦了,我希望更简单一些。

结论:

  • 1 短信只作为可有可无的补充,采用邮件APP push,或者以后用机器人push(webhook)
  • 2 订单既有表格形式的汇总态,用于统计;也要有类似对象的明细态,用于交易时提供足够信息。
  • 3 有dashboard,方便统计,形成足够商业化的投资报告。

4 Next

  • 1 资金上,将会划分成若干部分作为初始态,之后会使用强化学习框架自动分配(削弱或者增强)。
  • 2 基础结构上,将采用DataFlow,自动流转所有的数据。各功能部分将只注重逻辑。半固定化的结构将会简化维护过程,且又可以无限扩展。
  • 3 时间轴。所有单元,在执行时只要考虑自身的运行,遵守同样的运行逻辑(TimeTraveller)。这是一个非常重要且核心的运行机制,将会形成对象来进行约束和调度。或者说,每个功能都是一个TT实例。
  • 4 数据点的分类存储。Mongo、ClickHouse和Milvus将是三种主要的数据点。Mongo会存储各种原始数据或者弹性数据,一般居于底层。ClickHouse将会存储结构化数据,如决策数据、市场价格数据等。Milvus则存储大量的特征数据,如VV之后的特征向量。
  • 5 模型的再次迭代。

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

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

相关文章

各类封装函数代码

计算相关系数,Filter方法,并筛选特征 def feature_select_pearson(train, test):"""利用pearson系数进行相关性特征选择:param train:训练集:param test:测试集:return:经过特征选择后的训练集与测试集"""print(feature_select...)features = …

【每日刷题】Day54

【每日刷题】Day54 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 575. 分糖果 - 力扣(LeetCode) 2. 147. 对链表进行插入排序 - 力扣&#xf…

多源 BFS 详解

目录 一、多源与单源的区别 二、例题练习 2.1 例题1:01 矩阵 2.2 例题2:飞地的数量 2.3 例题3:地图中的最高点 2.4 例题4:地图分析 一、多源与单源的区别 单源最短路问题如何解决已经在上篇博客给出BFS 解决最短路问题&am…

最新版ERP进销存网络多仓版WEB源码

安装说明 环境要求: PHP5.6MYSQL5.6 1.恢复数据库.sql数据 2.配置sql参数连接路径:application\config\database.php 3.前台登录用户名:admin 密码:admin 源码免费下载地址抄笔记 (chaobiji.cn)

解决sd-webui中rembg插件使用报错问题

stable-diffusion-webui-rembg是我非常喜欢的sd-webui插件,PS抠图手残党的福音,一键抠图太爽啦。对于主体明确线条简单的图片(如汽车、服饰简洁的人像等)效果相当好;即便对于毛茸茸的对象(如动物&#xff0…

Minio启动脚本-Windows版

MinIO 是一种高性能、S3 兼容的对象存储。 它专为大规模 AI/ML、数据湖和数据库工作负载而构建,并且它是由软件定义的存储。 不需要购买任何专有硬件,就可以在云上和普通硬件上拥有分布式对象存储。 MinIO拥有开源 GNU AGPL v3 和商业企业许可证的双重许可。 ——摘自…

如何创建一个Angular项目(超简单)

1、安装Node.js(官网Node.js下载) 2、运行node -v和npm -v两条命令(检验是否下载成功Node.js) 3、npm i -g cnpm --registryhttps://registry.npmmirror.com(用npm安装cnpm,将镜像源设置为国内镜像源&…

制作一个简单HTML旅游网站(HTML+CSS+JS)云南旅游网页设计与实现5个页面

一、👨‍🎓网站题目 旅游,当地特色,历史文化,特色小吃等网站的设计与制作。 二、✍️网站描述 云南旅游主题的网页 一共七个个页面 - 旅游网页使用html css js制作 有banana图 - 页面可以相互跳转 包含表单 三级页面…

Shopee爆款打造核心运营方法,下一个大卖就是你

课程下载:Shopee爆款打造核心运营方法,下一个大卖就是你-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载:关注我。 课程内容: 001.1-爆款产品的选择,mp4 002.2-依据宗教信仰和消费禁忌选品.mp4 003.3-刻画消费者画像…

C++设计模式-桥接模式

运行在VS2022,x86,Debug下。 29. 桥接模式 桥接模式将抽象与实现分离,使二者可以独立地变化。 应用:如在游戏开发中,多个角色和多个武器交叉组合时。可以使用桥接模式,定义角色抽象类,武器抽象…

如何跨渠道分析销售数据 - 7年制造业销售经验小结

如何跨渠道分析销售数据 - 7年制造业销售经验小结(1) 【前言】 在我过去7年销售工作生涯中,从第一年成为公司销冠后,我当时的确自满的一段时间,认为自己很了不起。但是第一年的销售业绩并没有拿到提成,最…

爱情的短视频短片:四川京之华锦信息技术公司

爱情的短视频短片:情感瞬间的浓缩与绽放 在数字化时代,短视频以其短小精悍、直击人心的特点,迅速占领了互联网的高地。而在这些纷繁复杂的短视频内容中,关于爱情的短视频短片更是以其独特的魅力,吸引了无数观众的目光…

【U-Net验证】逐元素乘积将特征投射到极高维隐式特征空间的能力

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需使用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言网络结构编码结构解码结构代码 实验实验设置w/o-ReLU的性能比较with-ReLU的性能比…

【Kotlin】简单介绍与使用kotlin

🍎个人博客:个人主页 🏆个人专栏:Kotlin ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 特点 变量和常量 数据类型和类型推断 函数 字符串模板 条件表达式 空安全 when 表达式 循环 我的其他博客 前言 Kotlin是…

适合技术小白学习的项目1840java swing社团管理系统myeclipse开发Mysql数据库CS结构java编程

一、源码特点 java swing社团管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:javamysql 开发工具:Myecl…

Flutter开发效率提升1000%,Flutter Quick教程之对被遮挡的组件进行编辑

1,有些时候,有的widget会被其他widget所遮挡,那么,我们如何选中被遮挡的Widget?如下面这张图。上面是一个Text,外面包裹着一个Container,这时候点击事件会被Text所拦截,那么,如何选…

零基础画师文创运营变现课,从0基础到入门一步步提升(46节课)

课程下载:零基础画师文创运营变现课,从0基础到入门一步步提升(46节课)-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载:关注我。 课程内容: 01 我的二十五年,mp4 02 古法裁剪与新古法裁剪,mp4 …

动规算法-地下城游戏

在刷题练习专栏中,已经写了两篇文章实现对动态规划入门题目的讲解了,动态规划这类题目很难很好的掌握,今天给大家带来稍微深入的题目,帮助大家更好的理解动态规划的算法思想,加深对该算法的理解,建议看每道…

操作系统|进程和线程的上下文以及他们的上下文切换具体流程?

进程和线程已经是老生常谈的问题了,现在那么他们是如何进行切换的呢?他们之间的切换有什么区别呢?如果你不懂的话,就让我们一起来探讨一下吧! 进程上下文切换(context switch) 进程到底由哪些部分组成? …

GPT-4o vs. GPT-4 vs. Gemini 1.5 性能评测,谁更胜一筹!

OpenAI 最近推出了 GPT-4o,OpenAI有一次火爆了,其图像、音频、视频的处理能力非常强。 最令人印象深刻的是,它支持用户与 ChatGPT 实时互动,并且能够处理对话中断。 而且,OpenAI 免费开放了 GPT-4o API 的访问权限。…