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

news2024/11/23 13:43:40

正态分布(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'] = False
    plt.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.py

autopep8 -in-place normal.py

在这里插入图片描述

非题外话

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

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

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

题外话

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

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

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

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

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

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

相关文章

R语言提取文字(字符串)中的内容--正则式(2)

科学研究中有时候咱们收集到的数据很乱,不能马上进行分析,如SEER数据,用过都知道,咱们需要对数据进行清洗,从数据中提取咱们需要的东西,才能进行分析,这时候有个有用的东西叫正则式,…

iceoryx(冰羚)-简介

概要 RouDi RouDi是Routing and Discovery的缩写。RouDi负责通信设置,但实际上并不参与发布者与订阅者或客户端与服务器之间的通信。鲁迪可以被认为是iceoryx的总机操作员。它的另一个主要任务是设置共享内存,应用程序使用共享内存交换有效负载数据。Ro…

Go语言常用命令详解(一)

文章目录 前言常用命令go build示例参数说明 go test示例参数说明 go run示例参数说明 go clean示例参数介绍 总结写在最后 前言 Go语言是一种开源的编程语言,由Google开发并于2009年首次发布。它以其简洁、高效和并发性能而备受开发者的喜爱。作为一门相对年轻的语…

本地视频AI人脸替换,一键启动,傻瓜式操作

本地无须准备配置和运行环镜,整个压缩包下载后解压,一键启动程序,只需一张照片和一个视频,就可以把视频中的人物替换成您想要的人脸。支持CPU和GPU解码,使用GPU解码速度较快。 所有使用的软件安装包已上传网盘&#x…

提升pip速度!设置pip全局镜像源,速度飞起!

文章目录 💢 问题 💢💯 解决方案 💯🐾 镜像源🐾 镜像全局配置🍄 Windows系统🍄 Linux和macOS系统🍄 添加环境变量的方式💢 问题 💢 由于“某些网络限制”原因,我们在使用pip安装python模块的时候速度会比较慢,这个时候我们就需要用到一些镜像源,本文将…

requests 技术问题与解决方案:解决字典值中列表在URL编码时的问题

本文将探讨 issue 80 中提出的技术问题及其解决方案。该问题主要涉及如何在模型的 _encode_params 方法中处理列表作为字典值的情况。 问题背景 在处理用户提交的数据时,有时需要将字典序列化为 URL 编码字符串。在 requests 库中,这个过程通常通过 par…

点成分享丨如何提高旋转蒸发仪的蒸馏提纯效率

旋转蒸发仪: 主要用于医药、化工和制药等行业的浓缩、结晶、干燥、分离及溶媒回收。其原理为在真空条件下,恒温加热,使旋转瓶恒速旋转,物料在瓶壁形成大面积薄膜,高效蒸发。溶媒蒸气经高效玻璃冷凝器冷却,…

如何修改Hosts文件(Windows、Linux)本机配置域名解析

Hosts文件是一种在计算机网络中存储主机名与IP地址对应关系的文本文件。通过配置Hosts文件,可以避免在网络环境中DNS无法正常解析时,出现无法访问互联网的问题。 Windows修改hosts文件 1 以windows10系统为例,手指同时按住 windows 键和 X 键…

《洛谷深入浅出基础篇》P1536 村村通——并查集

上链接:P1536 村村通 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1536 上题干: 题目描述 某市调查城镇交通状况,得到现有城镇道路统计表。表中列出了每条道路直接连通的城镇。市政府 "村村通工程…

Flutter 3.16 发布,快来看有什么更新吧

参考原文:https://medium.com/flutter/whats-new-in-flutter-3-16-dba6cb1015d1 Flutter 又又又发布新季度更新啦,同时随着而来的还有 Dart 3.2,本次 3.16 开始 Material 3 会成为新的默认主题,另外 Android 也迎来了 Impeller 的…

力扣第797题 所有可能的路径 C++ 深度优先搜索 +java

题目 797. 所有可能的路径 中等 相关标签 深度优先搜索 广度优先搜索 图 回溯 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序) graph[i] 是一个从…

郑州市管城区工信局局长任华民一行莅临中创算力调研指导工作

2023年11月15日,为深入了解企业生产经营情况,解决发展诉求。郑州市管城区工信局局长任华民等领导一行莅临中创算力,中创副总经理杨光、技术总监刘朝阳、行政主管生田等人员陪同调研。 调研期间,双方就生产经营、“算力数据中心”…

零基础学Python怎么学习?我来告诉你

对于IT新手来说,零基础学Python的话,之后可选择的职业方向非常多。Python全栈和爬虫一直以来都是市场的最火的就业岗位之一,它们的薪资回报也算是开发岗里面的顶级了。而且随着大数据和人工智能时代的到来,数据处理和人工智能行业…

Python | 机器学习之逻辑回归

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《人工智能奇遇记》🔖少年有梦不应止于心动,更要付诸行动。 目录结构 1. 机器学习之逻辑回归概念 1.1 机器学习 1.2 逻辑回归 2. 逻辑回归 2.1 实验目的…

通过注释来埋点

目录 开始 插件编写 功能一 功能二 功能三 合并功能 运行代码 总结 这篇文章主要讲如何根据注释,通过babel插件自动地,给相应函数插入埋点代码,在实现埋点逻辑和业务逻辑分离的基础上,配置更加灵活 这篇文章想要达到的效…

idea查看UML类图

idea查看UML类图 一、如何查看UML类图 1.1 选择需要查看的类或者包,鼠标右键,选择Diagrams->Show Diagram 1.2 对于UML类图中的包,选中后点击鼠标右键-> Expand Nodes(展开节点) 展开前 展开后 1.3 展开后分布比较凌乱&#xff…

inner join left join 什么情况效果相同

效果不同的情况 SELECT g.name AS groupName, g.root_code AS rootCode, g.data_sort AS groupDataSort, l.* FROM wise_system_point_group g LEFT JOIN wise_system_point_list l ON g.code l.group_code WHERE g.code "drug" ORDER BY g.data_sort, l.data_s…

DBA_IND_STATISTICS 字段含义

功能 展示数据库中所有索引的优化器统计信息。 字段说明 参考:https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000885743

骨传导式蓝牙耳机值得入手吗?盘点最值得入手的5款骨传导耳机

在骨传导耳机还没有火之前,相信很多朋友都是使用入耳式和头戴式耳机比较多一点,但是慢慢的会发现,这两种耳机都存在很大的问题,比如说入耳式耳机,长时间佩戴会造成耳朵痛等问题,而头戴式耳机因为隔音效果好…

一文解释对比学习

对比学习是一种无监督学习技术,其核心思想是通过比较不同样本之间的相似性和差异性来学习数据的表示(features)。它不依赖于标签数据,而是通过样本之间的相互关系,使得模型能够学习到有意义的特征表示。 在对比学习中…