Python 算法交易实验71 QTV200数据流设计

2024-06-11 04:44

本文主要是介绍Python 算法交易实验71 QTV200数据流设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说明

结构作为工程的基础,应该在最初的时候进行合理设计。这一次版本迭代,我希望最终实现的效果,除了在财务方法可以达到预期,在工程方面应该可以支持长期的维护、演进。

内容

1 财务表现期待

假设初始为60万资金作为主动资金(追求短期效益,交易频次为1天到7天),40万资金作为被动资金(追求长期利益,交易频次为周,月)。之前对qtv102的估计是月利率3%左右,翻倍期是24个月。

从风控考虑,一个月最多允许1/3的主动资金交易,因此可参与计算复利的资金是20万。在24个月之后,收益20万,对于主动资金来说,利润率大约是33%,年化利率大约15%。被动资金大约也可以参考这个水平。整体上可认为QTV102的获利水平大约处于勉强及格的状态。

QTV200在架构上、算法上会有较大的突破。架构上可以确保足够量的交易(以支持统计)以及足够方便的交易提示(手工交易)。算法上会将双刃剑升级到大砍刀,并开发风险模型:修正学习目标,提供多一个种类的策略模式。所以,月利润率有希望达到5%,当然,关于实测月利润率会在后续进行更多的实验修正估计。如果是5%的话,还是非常客观的。

24个月和72个的利润为40万和600万,年化利润率 29%, 49%。
在这里插入图片描述
让后再放一张长点的图:我一直认为,一个大的目标如果可以分摊到很长的时间上,就会变得简单。难的是在于找到那个正确的规律,然后慢慢坚持下来。
在这里插入图片描述

2 数据流

要能做的足够长久,或者换一个角度,确保这事能够搞成,首先是在架构上。架构的作用是保持整个项目在长期运转的过程中保持清晰:这样在任何时候想要增加内容都不会乱。而且由于某些流转过程的标准化,会使得整体运行效率更高,也更简单(在配置新的流时)。

今年和去年比起来,工具更完善了。去年做的时候还是ADBS,采用APS方式,在一个周期内把多个流程运行一遍:数据获取、数据入Stream、到Mongo,中间还使用了APIFunc。虽然后面对ADBS项目的快速初始化做了改进,但一个个的ADBS之前还是独立的。总之,上一版做的较为零散,手工。

现在增加了新的数据库(ClickHouse、Milvus),特别是前者,在进行数据读取的时候比Mongo要快很多,几乎可以等于内存;然后(再次)搭好了Flask-APS-Celery。过去存在一些误解,想使用Celery来执行所有任务,然而这是不太可能的。但是执行通用任务,例如数据流转,这完全是可行的。而复杂的任务会被抽象到API里,celery只要发起API调用就好了,这恰恰也是celery擅长的(异步调用)。未来,在各种数据库Agent中,在读取方面应该都改为异步会更合理。(写入方面我觉得阻塞就阻塞,问题不大)。无论如何,我觉得这些改进会使得这个版本的调度和吞吐能力大幅增强。

对下图的解释如下:

  • 1 首先在Mongo里设定好计划,这个目前用IPython+ MongoEngine操作,之后可以很容易拓展为前端
  • 2 这些计划将会通过FlaskAPS进行定时执行,然后调用Celery Worker。
  • 3 行情数据会随着Worker的执行,被写入Stream In。
  • 4 另一个负责清洗的Worker会把Stream In中的数据处理完放到Stream Out。【这里有一个新约定,worker只和stream或RabbitMQ挂钩,一个入,一个出。】
  • 5 行情数据将会通过固定的任务流,类型为s2ch(Stream To ClickHouse)自动同步。到这里,原始数据的获取完成。
  • 6 接下来,如果是在生产状态下,一个特定的Worker将会定时将行情数据的Block数据取出,存在Redis中。
  • 7 另一个worker,会将新的行情数据取出,放到RabbitMQ中。
  • 8 负责处理特征的worker将会因此触发处理,读取最新的Block数据,调用特征处理接口,和计算评分,结果存于Stream
  • 9 Steram中的向量通过固定s2mv(Stream To Milvus)保存于Milvus。
  • 10 Stream中的评分将会通过另一负责决策的worker,通过调用模型参数给出。结果放在决策数据Stream中。
  • 11 决策数据Stream将通过s2ch,自动同步到ClickHouse中。
  • 12 负责操作的worker将从决策数据中提取数据,结果送到操作消息Stream中。
  • 13 负责实时强化的worker将提取决策数据,在另一个体系中进行模拟计算,返回强化消息。
  • 14 操作消息和强化消息将同时存在操作数据中,有些操作在过一段时间后可能会被强化消息中的控制字段阻断。
  • 15 前端通过操作数据 ,将信息反馈给人操作,或未来交给交易接口。

在训练/回测过程中,将会有回测计划,目前也是通过手工发送一次性指令。这个过程分为两个阶段:数据准备和运行回测。

在数据准备阶段,取数Worker将会遍历执行到最新 ,每次将数据写入历史行情数据Stream。然后某个标的的取数worker将会再次取出,结果送到某个标的的stream out(里面的行情数据只是起到元数据作用).特定的worker将会拉取(pull)相关的历史块数据,然后进行批量的特征成成和决策数据生成。结构上,开发和实时worker都是采用相同的接口,所以数据是高度一致的。

决策数据全部写完后,回测开始启动,在过程中将会按照回测时段和策略,将模拟交易写到交易明细表中,在回测结束时,会进行相应的汇总,写入交易汇总表中。

在这里插入图片描述

实操时,这个体系自然会横向扩充为对个标的的计算,多策略的实施,以及结果的汇聚统计。从而使得一个技术栈,最终表现为对业务的支持:我们可以关注在不同分支下,各策略的动态表现,从而形成一个认知:当前系统可达到的水平(1~5%的月利率)。

这篇关于Python 算法交易实验71 QTV200数据流设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050231

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费