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

news/2023/12/1 1:49:13

正态分布(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.ppmy.cn/news/1223618.html

相关文章

C语言求0—7所能组成的奇数个数

完整代码&#xff1a; // 求0—7所能组成的奇数个数 //根据题意&#xff0c;应该是没有重复数字的&#xff0c;所以最大只能为八位数 //如果可以重复的话&#xff0c;那么位数就限制不了&#xff0c;然后奇数的个数就是无穷大了 #include <stdio.h>int main() {int coun…

【Shell实战】Linux多节点分发文件

多节点分发文件 通过shell脚本将跳板机或者软件中转机上的文件&#xff0c;分发至一组目标机器中。 使用前提&#xff1a; 跳板机或者软件中转机与目标集群均配置免密。目标机器的接收目录拥有足够的大小。 脚本使用说明&#xff1a; sh distributing_packages.sh /data/g…

阿里达摩院开源DAMO-YOLO

1.简介 DAMO-YOLO是一个兼顾速度与精度的目标检测框架&#xff0c;其效果超越了目前的一众YOLO系列方法&#xff0c;在实现SOTA的同时&#xff0c;保持了很高的推理速度。DAMO-YOLO是在YOLO框架基础上引入了一系列新技术&#xff0c;对整个检测框架进行了大幅的修改。具体包括…

自动驾驶-BEV感知综述

BEV感知综述 随着自动驾驶传感器配置多模态化、多源化&#xff0c;将多源信息在unified View下表达变得更加关键。BEV视角下构建的local map对于多源信息融合及理解更加直观简洁&#xff0c;同时对于后续规划控制模块任务的开展也更为方便。BEV感知的核心问题是&#xff1a; …

faiss-gpu安装失败

pip install faiss-gpu1.7.2 --no-cachefaiss-gpu版本需要与python版本相对应&#xff0c;而且python3.9以上版本大概率用不了faiss-gpu&#xff0c;如果自己的python版本过高请降低python版本试试。

合璧之光,共创辉煌|明道云伙伴大会2023圆满结束

2023年11月3日至11月4日&#xff0c;“合璧之光明道云伙伴大会2023”在上海星河湾酒店顺利举行&#xff0c;报名参会人数超过1800人。大会邀请到明道云标杆客户及合作伙伴分享组织落地零代码的经验及各行业领域解决方案&#xff0c;包括越秀集团、豫园股份、远大医药&#xff0…

kotlin--3.集合操作

目录 一.list集合 二.Set集合 三.Map集合 迭代遍历Map集合&#xff1a; 8.hashMap 四.Stream流 1.map 2.filter 3.reduce 4.forEach 5.sorted 6.distinct 7.综合案例 一.list集合 在Kotlin中&#xff0c;常见的List集合类型有以下几种&#xff1a; listOf&…

总结 CNN 模型:将焦点转移到基于注意力的架构

一、说明 在计算机视觉时代&#xff0c;卷积神经网络&#xff08;CNN&#xff09;几十年来一直是主导范式。直到 2021 年 Vision Transformers (ViTs) 出现&#xff0c;这个领域才开始发生变化。现在&#xff0c;是时候采用受 Transformer 架构启发的基于注意力的模型了&#x…

torch - 张量Tensor常见的形式

1.Scalar 通常就是一个数值 x tensor(42.) 输出x&#xff1a; 2.Vector 特征向量 例如&#xff1a;[-5., 2., 0.]在深度学习中通常表示特征&#xff0c;如词向量特征&#xff0c;某一维度特征等 3.Matrix 一般计算的都是矩阵&#xff0c;通常都是多维的。 可以做矩阵的…

【Redis】springboot整合redis(模拟短信注册)

要保证redis的服务器处于打开状态 上一篇&#xff1a; 基于session的模拟短信注册 https://blog.csdn.net/m0_67930426/article/details/134420531 整个流程是&#xff0c;前端点击获取验证码这个按钮&#xff0c;后端拿到这个请求&#xff0c;通过RandomUtil 工具类的方法生…

【Python 千题 —— 基础篇】输出列表平均值

题目描述 题目描述 输出列表的平均值。题中有一个包含数字的列表 [19, 39, 130, 48, 392, 101, 92]&#xff0c;使用 for 循环输出这个列表中所有项的平均值。 输入描述 无输入。 输出描述 输出列表的平均值。 示例 示例 ① 输出&#xff1a; 列表的平均值是&#xf…

操作系统:输入输出管理(二)磁盘调度算法

一战成硕 5.3 磁盘固态硬盘5.3.1 磁盘5.3.2 磁盘的管理5.3.3 磁盘调度算法 5.3 磁盘固态硬盘 5.3.1 磁盘 磁盘是表面涂有磁性物质的物理盘片&#xff0c;通过一个称为磁头的导体线圈从磁盘存取数据。在读写操作中&#xff0c;磁头固定&#xff0c;磁盘在下面高速旋转。磁盘盘…

互联网上门预约洗衣洗鞋店小程序;

拽牛科技干洗店洗鞋店软件&#xff0c;方便快捷&#xff0c;让你轻松洗衣。只需在线预约洗衣洗鞋服务&#xff0c;附近的门店立即上门取送&#xff0c;省心省力。轻松了解品牌线下门店&#xff0c;通过列表形式展示周围门店信息&#xff0c;自动选择最近门店为你服务。简单填写…

【Ubuntu】Ubuntu20.04下安装视频播放器vlc和录屏软件ssr

【Ubuntu】Ubuntu20.04下安装视频播放器vlc和录屏软件ssr 文章目录 【Ubuntu】Ubuntu20.04下安装视频播放器vlc和录屏软件ssr1. 安装视频播放器vlc2. 安装录屏软件ssr 1. 安装视频播放器vlc sudo apt-get install vlcvlc是一款比较简洁的视频播放器&#xff0c;如下所示 2. 安…

创邻科技亮相ISWC 2023,国际舞台见证知识图谱领域研究突破

近日&#xff0c;第22届国际语义网大会 ISWC 2023 在雅典希腊召开&#xff0c;通过线上线下的形式&#xff0c;聚集了全球的顶级研究人员、从业人员和行业专家&#xff0c;讨论、发展和塑造语义网和知识图谱技术的未来。创邻科技CEO张晨博士作为知识图谱行业专家受邀参会&#…

redis运维(十)列表

一 列表 强调&#xff1a; 知道原生redis具备的能力,以便后续API调用 ① 基础概念 备注&#xff1a; 单个list最多2^32-1个元素 列表操作常用命令,涉及&#xff1a;CURD ② lpush 左插入 说明&#xff1a; 如果key不存在就会初始化,否则就是插入元素备注&#xff1a; l…

VB.net webbrowser 自定义下载接口实现

使用《VB.net webbrowser 如何实现自定义下载 IDownloadManager》中的控件ExtendedWebBrowser&#xff08;下载控件&#xff09;&#xff0c;并扩展了NewWindow2。 使用ExtendedWebBrowser_1过程中&#xff0c;遇到很多问题&#xff0c;花了几天时间&#xff0c;终于解决了所有…

竞赛 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测

文章目录 0 简介1 基于 Keras 用 LSTM 网络做时间序列预测2 长短记忆网络3 LSTM 网络结构和原理3.1 LSTM核心思想3.2 遗忘门3.3 输入门3.4 输出门 4 基于LSTM的天气预测4.1 数据集4.2 预测示例 5 基于LSTM的股票价格预测5.1 数据集5.2 实现代码 6 lstm 预测航空旅客数目数据集预…

【部署篇】Docker配置MySQL容器+远程连接

一、前言 上篇文章在部署nestjs时&#xff0c;由于docker访问不了主机的localhost&#xff0c;所以无法连接主机数据库。所以我们只能在docker中额外配置一个数据库&#xff0c;映射到主机上&#xff0c;然后可以通过ip地址访问。 在本篇文章我们会在docker中创建一个mysql&a…

【SpringMvc】SpringMvc +MyBatis整理

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理 Java 框架 中 SpringMVC的知识点和值得注意的地方 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关…
最新文章