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 模型的再次迭代。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SDK开发

为什么需要Starter? 理想情况:开发者只需关心调用哪些接口,传递哪些参数就跟调用自己写的代码一样简单。 开发starter的好处:开发者引入之后,可以直接在application.yml中写配置,自动创建客户端。 starter开发流程 …

上位机图像处理和嵌入式模块部署(f407 mcu开发板基本测试)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 我们拿到一个新的开发板之后,一般都需要测试一下基本功能。这里面一部分功能是我们比较熟悉的,比如说led、key输入、串口、…

力扣Hot100-有效的括号(栈stack)

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…

泛型知识汇总

演示代码&#xff1a; package exercise;import java.util.Arrays;public class MyArrayList<E> {Object[] obj new Object[10];int size;public boolean add(E e) {obj[size] e;size;return true;}public E get(int index) {return (E) obj[index];}//没有这个函数&a…

JVM(Java虚拟机)笔记

面试常见&#xff1a; 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新?什么是OOM&#xff0c;什么是栈溢出StackOverFlowError? 怎么分析?JVM的常用调优参数有哪些?内存快照如何抓取&#xff1f;怎么分析Dump文件&#xff1f;谈谈JVM中&#xff0c;类加载器你的认识…

【记录】网络|没有路由器没有网线,分别使用手机或Windows电脑共享网络给ARM64开发板,应急连接

事情是这样的&#xff0c;我的开发板明明已经选择了记住热点 WiFi 密码&#xff0c;但是却没有在开机的时候自动连接&#xff0c;我又没有放显示器在身边&#xff0c;又不想为了这点事去找个显示器来&#xff0c;就非常难受。 我手边有的设备是&#xff1a; 笔记本电脑&#…

关于 c++ cout << endl; 的源码解释

这行语句非常常用。以前在王老师课上&#xff0c;老师提到过 endl 是一个函数模板。现给出这行语句的相关源码&#xff1a; 反汇编的依据如下&#xff1a; 接着是 谢谢

香橙派 Kunpeng Pro使用教程:从零开始打造个人私密博客

一、引言 在这个日益互联的世界中&#xff0c;单板计算机已经成为创新和个性化解决方案的重要载体。而在单板计算机领域&#xff0c;香橙派 Kunpeng Pro凭借其强大的性能和灵活的应用潜力&#xff0c;正逐渐吸引着全球开发者和技术爱好者的目光。 作为一款集成了华为的鲲鹏处…

领域建模(系统操作复习)

习题 问题 考察点 领域建模 识别概念类 固定模板 Conceptual Class Category Examples specifications,designs, or descriptions of things roles of people containers of other things things in a container abstract noun concepts organizations events processes (…

OpenAI 的 GPT-4o 是目前最先进的人工智能模型!如何在工作或日常生活中高效利用它?

OpenAI 的 GPT-4o 是目前最先进的人工智能模型&#xff01;如何在工作或日常生活中高效利用它&#xff1f; 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大…

开发板uboot与virtualbox虚拟机、windows11网络互通

环境&#xff1a;virtualbox中ubuntu22.04.4&#xff0c;开发板通过网线再经过拓展坞usb网卡跟windows11连接。连接如下&#xff1a; 1、关闭windows防火墙(重要) 2、先在VirtualBox的工具选项创建两个网络【仅主机(Host-Only)网络】和【NAT网络】 仅主机(Host-Only)网络的ip:…

二位偏序,P3660 [USACO17FEB] Why Did the Cow Cross the Road III G

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 P3660 [USACO17FEB] Why Did the Cow Cross the Road III G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 二、解题报告 1、思路分析 二维偏序问题 我们将坐标按照第一维排序 然后树状数组维护区间内的…

树莓派LCD显示屏安装驱动详细教程

使用LCD显示屏有两种方式&#xff0c;1.如果你已安装好树莓派官方系统&#xff0c;需要单独安装驱动才可点亮显示屏。 2. 也可以直接烧录我们提供的系统 里面已含驱动程序。 一&#xff1a;连接方式 按照下图方式连接好LCD显示屏与树莓派主板 二&#xff1a;安装系统镜像&…

【Linux】如何利用linux项目自动化构建工具-make/Makefile以及vim编辑器构建两个小程序:倒计时和进度条

1.倒计时小程序 首先我们Linux中创建目录test1&#xff0c;该目录中包含了makefile文件&#xff0c;和main.c文件&#xff08;该文件是源文件用于编写倒计时程序的代码&#xff09;再进行依赖方法和依赖关系的确定&#xff1a; 利用vim编辑器编辑makefile文件&#xff1a; 注意…

基于react native的图片放大旋转效果二

基于react native的图片放大旋转效果二 const TaskReceiveModal ({ onClick }) > {const spinValue useRef(new Animated.Value(0)).current;const scaleValue useRef(new Animated.Value(0)).current;const spinAnimation useRef(null);const spin spinValue.interpol…

车流量监控系统

1.项目介绍 本文档是对于“车流量检测平台”的应用技术进行汇总&#xff0c;适用于此系统所有开发&#xff0c;测试以及使用人员&#xff0c;其中包括设计背景&#xff0c;应用场景&#xff0c;系统架构&#xff0c;技术分析&#xff0c;系统调度&#xff0c;环境依赖&#xf…

Qt Demo:基于TCP协议的视频传输Demo

目录 1.设计思路 2.Pro文件配置 3.头文件引入 4.界面设计 5.初始化设备函数 6.发起视频链接函数 7.初始化定时器模块函数 8.TCP链接模块函数 9.处理接收的数据线程函数 10.实现功能展示 设计思路 基于TCP协议的视频传输Demo&#xff0c;设计要实现的功能主要是TCP传输还有视频&…

带DSP音效处理D类数字功放TAS5805M中文资料

国产替代D类数字功放中文资料访问下方链接 ACM8628 241W立体声182W单通道数字功放中文寄存器表 内置DSP多种音频处理效果ACM8628M-241W立体声或182W单通道数字功放 1 特性 具有增强处理能力和低功率损耗的 TAS5805M 23W、无电感器、数字输入、立体声、闭环 D 类音频放大器 …

测试:ollama加载羊驼版本llama-3中文大模型

找了一个晚上各种模型&#xff0c;像极了当初找各种操作系统的镜像&#xff0c;雨林木风&#xff0c;深蓝、老毛桃…… 主要是官方的默认7B版本回答好多英文&#xff0c;而且回复的很慢&#xff0c;所以我是在ollama上搜索"chinese"找到了这个羊驼版本的&#xff0c…

代码随想录-Day25

216.组合总和III 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输…