#[量化投资-学习笔记018]Python+TDengine从零开始搭建量化分析平台-正态分布与收益率

正态分布(Normal Distribution)又叫高斯分布、常态分布。通常用来描述随机变量的概率分布。

自然界的数据分布通常是符合正态分布规律的,比如说人的身高、体重。但是非自然界数据就不一定了。尤其是经过人为加工过的数据。

金融领域大量使用正态分布来计算收益率和风险,虽然因为金融数据厚尾性而不断被人诟病,但是确实也没啥其他的统计方法。

在上一章节《MACD金死叉策略回测》,已经将回测的结果存入了数据库。本章节将对回测结果进行进一步分析。

目录

    • 获取历史回测数据
    • 计算正态分布
    • 绘制图形
    • 进阶
    • TIPs
    • 非题外话
    • 题外话

获取历史回测数据

通过查询 TDengine 数据库,我们可以轻松的获取到历史回测数据。

数据结构请参考上一章节,本次不再赘述。

查询回测记录:

taos> select last(*) from records;ts            |             record             |
===========================================================2023-11-12 19:17:39.339 | MACD-13_21                     |
Query OK, 1 row(s) in set (0.001534s)

查询对应的回测记录

taos> select count(*) from btdata where ts='2023-11-12 19:17:39.339';count(*)        |
========================9037 |
Query OK, 1 row(s) in set (0.010254s)

通过 Restful 查询获取数据

    rt = request_post(url, sql, username, password)ec = check_return(rt)log_write.handler_control.setLevel('INFO')if ec == 'error':log_write.logger.error(rt)else:returns = request_get(rt)
# 计算正态分布log_write.logger.debug(returns)

计算正态分布

直接使用 numpyscipy 中函数进行计算。

    mean = np.mean(returns)log_write.logger.debug(f"均值:{mean}")std = np.std(returns)log_write.logger.debug(f"标准差: {std}")x = np.linspace(min(returns), max(returns), 200)y = norm.pdf(x, mean, std)log_write.logger.debug(f"x={x}, y={y}")return x, y

绘制图形

def plot_normal_distribution(x, y):matplotlib.rcParams['font.sans-serif'] = ['SimHei']matplotlib.rcParams['font.family'] = 'sans-serif'matplotlib.rcParams['axes.unicode_minus'] = Falseplt.plot(x, y)plt.xlabel("Profit")plt.ylabel("Probability density")plt.title("收益率正态分布曲线")plt.grid()plt.show()

进阶

为了方便对比,我们可以将不同类型的股票的收益率正态分布曲线放到1个图形里面。
相关绘图功能接受见 Python知识点汇总

    plt.figure(figsize=(12, 8))plt.subplot(3, 1, 1)plt.plot(x1, y1)plt.xlabel("Profit")plt.ylabel("Probability density")plt.title("上证")plt.grid()plt.subplot(3, 1, 2)plt.plot(x2, y2)plt.xlabel("Profit")plt.ylabel("Probability density")plt.title("深证")plt.grid()plt.subplot(3, 1, 3)plt.plot(x3, y3)plt.xlabel("Profit")plt.ylabel("Probability density")plt.title("创业")plt.grid()plt.tight_layout()plt.show()

在这里插入图片描述

TIPs

有两个非常使用的包可以帮助规范代码: pycodestyleautopep8,前者会检查程序是否符合 PEP8 规范,
后者可以直接进行修改。

安装包

pip install pycodestyle
pip install autopep8

检查并修改程序

pycodestyle normal.pyautopep8 -in-place normal.py

在这里插入图片描述

非题外话

从上图可以明显的看出,正态曲线存在明显的偏离,这并不是坏现象。如果真是标准的正态分布图形,那就真的有问题了。

上图说明了使用 MACD 金死叉策略在所有的股票池中收益率众数和均值均在正数区间。

而且上证和创业板的表现均好于深证。

题外话

有个小段子:
几个人做电梯上楼,有人在电梯里做俯卧撑,有人在电梯里扇自己嘴巴,有人大瞌睡,有人在唱歌。

到了登楼,记者采访问这几个是怎么上楼的。

有人说靠自己不断的锻炼,有人说靠自虐,有人说靠躺平,有人说靠多才多艺。

大家都忽略了电梯。听起来很可笑,但实际情况确实如此。很多时候不错的收益率并不是因为出色的策略,还有可能是整个大盘都涨了。

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

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

相关文章

《白帽子讲web安全》笔记

第八章 文件上传漏洞 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力 文件上传后导致的常见安全问题一般有: ❍ 上传文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本&#xf…

【Apache Doris】审计日志插件 | 快速体验

【Apache Doris】审计日志插件 | 快速体验 一、 环境信息1.1 硬件信息1.2 软件信息 二、 审计日志插件介绍三、 快速 体验3.1 AuditLoader 配置3.1.1 下载 Audit Loader 插件3.1.2 解压安装包3.1.3 修改 plugin.conf 3.2 创建库表3.3 初始化3.4 验证 一、 环境信息 1.1 硬件信…

vscode文件夹折叠问题

今天发现一个vscode的文件夹显示的问题,首先是这样的,就是我的文件夹里又一个子文件夹,子文件夹里有一些文件,但是我发现无法折叠起这个子文件夹,总是显示全部的文件,这让我备份很难,具体参考 h…

C51--PC通过串口(中断)点亮LED

B4中的:REN允许 / 禁止串行接收控制位 REN 1为允许串行接收状态。 接收数据必须开启。所以SCON:0101 0000 ;即0x50 如何知道数据已经接收 RI位:当收到数据后 RI 1(由硬件置一) 硬件置一后必须用软件…

【广州华锐互动】VR居家防火逃生模拟演练增强训练的真实性

VR软件开发公司广州华锐互动在消防培训领域已开发了多款VR产品,今天为大家介绍VR居家防火逃生模拟演练系统,这是一种基于虚拟现实技术的消防教育训练设备,通过模拟真实的火灾场景,让使用者身临其境地体验火灾逃生过程,…

搭建成功simulink-stm32硬件在环开发环境

本次实验所使用的软件版本和硬件平台参数如下: Matlab版本: 2021b STM32硬件平台:YF_STM32_Alpha 1R4(参考自STM32 Nucleo F103RB官方开发板) YF_STM32_Alpha开发板 STM32 Nucleo F103RB 开发板 2.1 STM32硬件支持包下载 读者朋友平时使用的是和谐版M…

在vue项目里面使用index.ts进行统一导出

目录 一、概述 二、具体实践 2.1创建目录 2.2index.ts文件内容展示 2.2在需要的vue文件里面import 2.3vue全代码 三、实际效果 一、概述 一般我们在做项目的时候会发现vue文件里面没有export default 转而替代的是使用同目录下index.ts进行统一导出 好处:能…

Flutter有状态组件StatefulWidget生命周期

StatefulWidget是Flutter中的一个有状态的组件,它的生命周期相对复杂一些。下面是StatefulWidget的生命周期方法及其调用顺序: 1. createState(): 当StatefulWidget被插入到Widget树中时,会调用createState()方法来创建与之关联的State对象。…

【开源】基于Vue.js的校园二手交易系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目详细录屏 二、功能模块2.1 数据中心模块2.2 二手商品档案管理模块2.3 商品预约管理模块2.4 商品预定管理模块2.5 商品留言板管理模块2.6 商品资讯管理模块 三、实体类设计3.1 用户表3.2 二手商品表3.3 商品预约表3.4 商品预定表3.5 留言表3.6…

如何正确使用GPT工具

引言 在快速发展的数字时代,人工智能(AI)已成为科研领域的一个不可或缺的工具。特别是像ChatGPT这样的AI聊天机器人,它通过高效的语言模型和深度学习算法,为科研工作者提供了前所未有的辅助。从文献搜索到数据分析&…

sqlmap requires ‘python-pymysql‘ third-party library

使用sqlmap进行udf提权报错: [14:06:04] [CRITICAL] sqlmap requires python-pymysql third-party library in order to directly connect to the DBMS MySQL. You can download it from https://github.com/PyMySQL/PyMySQL. Alternative is to use a package pyt…

asp.net core mvc之 过滤器

过滤器允许我们在Action执行之前和执行之后去执行一下业务代码 一、过滤器的作用域 1、全局过滤器, 在Startup.cs文件中注册 2、控制器过滤器, 在控制器类上面使用标注 3、action过滤器 二、全局过滤器使用 1、在 core 目录,添加 TestA…

MySQL(18):MySQL8.0的其它新特性

MySQL从5.7版本直接跳跃发布了8.0版本。 MySQL8.0 新增特征 1.更简便的NoSQL支持。 NoSQL泛指非关系型数据库和数据存储。随着互联网平台的规模飞速发展,传统的关系型数据库已经越来越不能满足需求。从5.6版本开始,MySQL就开始支持简单的NoSQL存储功能…

Servlet 常见的API

文章目录 写在前面Smart Tomcat 插件Servlet 中常见的API1. HttpServletinit 方法destroy 方法service 方法Servlet 的生命周期 使用 postman 构造请求使用 ajax 构造请求2. HttpServletRequest3. 前端给后端传参1). GET, query string2). POST, form3). json 4. HttpServletRe…

11_聚类算法

文章目录 1 聚类1.1 什么是聚类1.2 相似度/距离公式1.3 聚类的思想 2 K-means算法2.1 K-means算法步骤2.2 K-means算法思考2.3 K-means算法优缺点 3 解决K-Means算法对初始簇心比较敏感的问题3.1 二分K-Means算法3.2 K-Means算法3.3 K-Means||算法3.4 Canopy算法3.4.1 Canopy算…

Postman实现接口的加密和解密

近期在复习Postman的基础知识,在小破站上跟着百里老师系统复习了一遍,也做了一些笔记,希望可以给大家一点点启发。 1、目前市面上的加密的方式 对称式加密:DES,AES,Base64加密算法 非对称加密&#xff1a…

elasticsearch+canal增量、全量同步

目录 一、搭建环境: 1.1 下载软件上传到linux目录/data/soft下 1.2 把所有软件解压到/data/es-cluster 二、单节点(多节点同理)集群部署elasticsearch 2.1 创建es用户 2.2 准备节点通讯证书 2.3 配置elasticsearch,编辑/d…

城市内涝对策,万宾科技内涝积水监测仪使用效果

随着城市化进程的加速,城市道路积水问题明显越来越多,给人们的出行和生活带来更多的不便。内涝积水监测仪作为高科技产品能够实时监测道路积水情况,为城市排水系统的管理和维护提供重要的帮助。 在城市生命线的基础设施规划之中,地…

【Spring】Spring中的DI(依赖注入)Dependence Import

由之前的IoC可以知道,我们写在具体对象后面的new方法肯定不能要了,这时候就要通过依赖注入的形式将Dao配置到Service中 Dependence Import的步骤如下: 1. 在Service类中给Dao提供setter方法 原本我们是直接给bookDao new了一个对象 public …

【AI视野·今日Sound 声学论文速览 第三十四期】Thu, 26 Oct 2023

AI视野今日CS.Sound 声学论文速览 Thu, 26 Oct 2023 Totally 9 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Dynamic Processing Neural Network Architecture For Hearing Loss Compensation Authors Szymon Drgas, Lars Bramsl w, Archontis Poli…