广义双曲分布、KS检验与抄底沪指

news2024/11/26 23:23:49

上一篇笔记我们抛出一个问题,沪指大跌 4%时,能不能抄底?今天的笔记,我们就通过 KS 检验,找出沪指的概率分布,进而回答这个问题。在后面的笔记中,我们还将换一个方法继续回答这个问题。

K-S 检验

第一个方法,是通过 K-S 检验,来碰碰运气,看看沪指涨跌是否刚好符合某个已知的分布。如果能找到,我们就可以轻松地由其连续密度分布函数 CDF,来计算出继续下跌的概率,即:

P = c d f ( − 0.04 ) P = cdf(-0.04) P=cdf(0.04)


K-S 是一种非参数检验,是统计检验中的一种。它可以用来检验一组样本是否来自某个概率分布 (one-sample K-S test),或者比较两组样本的分布是否相同 (two-sample K-S test)。K-S 检验是以它的两个提出者,俄国统计学家 (Kolmogorov 和 Smirnov) 的名字来命名的。

我们可以通过 scipy.stats.kstest 来执行 k-S 检验。该方法的签名如下:

kstest(rvs, cdf, args=(), N=20, alternative='two-sided', method='auto')

这里 rvs 是随机变量状态,在我们接下来的示例中,我们将传入沪指 1000 个交易日的涨跌幅。在 cdf 参数中,我们传入要测试的随机分布名称。

返回结果为一个 KstestResult 类,它包括 statistic, pvalue 等重要属性。

现在,我们就通过 kstest,对 scipy.stats 中已实现的分布模型,逐一进行 One-Sample test,看看能否有通过检验的:

pct = close[:-1]/close[1:] - 1
dist_names = ['burr12', 'dgamma', 'dweibull', 'fisk', 'genhyperbolic', 
              'genlogistic', 'gennorm', 'hypsecant', 'johnsonsu', 
              'laplace', 'laplace_asymmetric', 'logistic', 'loglaplace',
              'nct', 'norminvgauss']

xmin, xmax = min(pct), max(pct)
dist_pvalue = []

for name in dist_names:
    dist = getattr(scipy.stats, name)
    if getattr(dist, 'fit'):
        params = dist.fit(pct)
        ks = scipy.stats.kstest(pct, name, args=params)
        dist_pvalue.append(round(ks.pvalue, 2))
        
df = pd.DataFrame({
    "name": dist_names,
    "pvalue": dist_pvalue
})

df.sort_values("pvalue", ascending=False).transpose()

我们将得到以下输出:

图可能有点宽,导致手机上没法看清楚。不过我们只要知道,这里的第一行,genhyperbolic,即广义双曲分布的 pvalue 最高,达到了 0.97。

注意 scipy.stats.kstest 中的 pvalue 可能跟我们在别处理解的 pvalue 不太一样,在它的说明和示例中,p 值大于 0.95,则可以认为在 95%的置信度下,认同原假设:即 rvs 来自于 CDF 所表明的那个分布


因此,上述输出表明,genhyperbolic,即广义双曲分布,是所有假设中,沪指最接近的分布。

我们可以通过绘图来验证一下这个结论是否正确:

from scipy.stats import genhyperbolic

params = genhyperbolic.fit(pct)
rv = genhyperbolic(*params)

fig, ax = plt.subplots(1,1)
x = np.linspace(rv.ppf(0.01), rv.ppf(0.99), 100)
ax.plot(x, rv.pdf(x), label = 'genhyperbolic pdf', color="#EABFC7")

ax2 = ax.twinx()
_ = ax2.hist(pct, bins=50)

75%


不能说十分相似,简直是一模一样。pdf 函数曲线刚好框住了实际分布直方图的外轮廓。

L50

实际上,并非只有沪指符合广义双曲分布。根据 Souto 发表在《金融数学》(2023年2月)杂志上的文章,《Distribution Analysis of S&P 500 Financial Turbulence》, 标普 500 也是最接近这个分布


!!! warning
Satou 没有使用 scipy.stats 中的 ks-test,而是自己实现了一个。证据之一就是,尽管他得出了标普接近于 GH 分布这一结论,但此时他计算出的 p-value 为零,而不是接近 1。细心的读者应该注意到,我们前面指出过,即 scipy 中的 ks-test 中的 pvalue,与其它地方看到的可能不一致。

类似的不一致还发生在对凸函数的定义上。一部分人(包括我)总是把图形看起来像凸字的函数叫成凸函数,但有些人认为它应该是凹函数,因为它的二阶导是负的。我曾经失去过一位既美丽又聪明的女同事,不知道是否就因为这个分歧。总之,既然你知道了,不妨今后也注意下,不要因小失大。

现在,我们就来求广义双曲分布下,跌幅小于-4%的累积概率,也就是继续下跌的概率:


from scipy.stats import genhyperbolic

params = genhyperbolic.fit(pct)
rv = genhyperbolic(*params)
print(f"继续下跌的概率为:{rv.cdf(-0.04):.2%}")

结果表明,继续下跌的概率仅为 0.16%。所以,结论是:本答案仅依据历史数据,仅为演示和说明量化算法,不构成任何投资建议!

!!! tip
看不太懂为什么 cdf(-0.04) 代表继续下跌的概率?我们的课程会从直方图讲起,直到你看懂为止。

Revisit Connor’s RSI

如果你对我们的 Connor’s RSI 的笔记还有印象,可能还记得,Connor’s RSI 的三因子之一,是当天涨跌幅在近 20 天里的排名(prank)。这个排名,实际上就是经验 CDF 函数的一个线性映射。看来,发明一个伟大的指标,其实也只需要掌握简单的统计学原理即可。

原文发表在大富翁量化,排版会更好一些。

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

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

相关文章

Xshell 上传文件到服务器

Liunx 上传文件 rz //回车,从本地选择文件上传 ll //查看文件 pwd //查看当前目录 mkdir filename //创建文件如果遇到错误信息“bash: rz: command not found” 安装 lrzsz sudo yum install lrzsz操作 mv //移动文件或目录 tar //解压文件vim //文本编辑器&am…

【技巧】一招让雷电模拟器快如闪电!

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 本教程默认你已经开启了Hyper-V功能了。如果没开启,那卡顿很正常。 1、打开雷电多开器 2、点击左下角设置 3、勾选这几项后保存 该配置只需设置一次,下次自动生效。 4、重新启动模拟器 5、…

Python-CSV文件的存储

CSV文件存储 CSV其文件以纯文本形式存储表格数据。CSV文件是一个字符序列,可以由任意数目的记录组成,各种记录由某种换行符分隔开。它比Excel文件更加简洁,XLS文本是电子表格,包含文本、数值、公式和格式等内容,CSV中则…

Qt中图片旋转缩放操作

在我们开发过程中,难免会遇到加载图片的问题,在上一个开发项目里我就遇到了图片缩放的问题,所以,我决定将这一部分好好研究,记录下来,希望对大家有帮助哟~ 在讲解之前,我们先看一看具体的展示效…

docker 部署来自Hugging Face下机器翻译模型

机器翻译模型(Hugging Face官网) 模型翻译api服务代码 # 离线翻译服务代码 # -*-coding:utf-8-*-import os import json import logging from logging.handlers import RotatingFileHandler from datetime import datetime from flask import Flask, request,jsonify from geve…

【LMM 009】MiniGPT-4:使用 Vicuna 增强视觉语言理解能力的多模态大模型

论文描述:MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models 论文作者:Deyao Zhu∗ Jun Chen∗ Xiaoqian Shen Xiang Li Mohamed Elhoseiny 作者单位:King Abdullah University of Science and Techn…

2023-我的CSDN创作之旅

1.博客内容与数量 2023年共发表博客59篇,内容主要集中在GIS,空间分析等领域 主要内容有: networkx学习 Geospatial Data Science Geocomputation ESDA in PySal SHAP Spatial Data Analysis BikeDNA 以下是对这几个章节主要内容的简…

行业模型与场景落地新样本,网易有道发布多款“子曰”教育大模型落地应用与产品

距离2023年7月正式发布教育大模型“子曰”不到半年时间,教育科技公司网易有道近日再次分享了“子曰”教育大模型创新和落地成果,宣布推出国内首个教育大模型“子曰”2.0版本,同时还发布了基于大模型研发的三大创新应用——AI家庭教师“小P老师…

快速、准确地检测和分类病毒序列分析工具 ViralCC的介绍和详细使用方法, 附带应用脚本

介绍 viralcc是一个基因组病毒分析工具,可以用于快速、准确地检测和分类病毒序列。 github:dyxstat/ViralCC: ViralCC: leveraging metagenomic proximity-ligation to retrieve complete viral genomes (github.com) Instruction of reproducing resul…

Gin 项目引入热加载

Gin 项目引入热加载 文章目录 Gin 项目引入热加载一、什么是热加载二、Air2.1 介绍2.2 特性特性:2.3 相关文档2.4 安装推荐使用 install.sh使用 go install 2.5 配置环境变量2.6 使用 三、Fresh3.1 介绍3.2 相关文档3.3 安装与使用 四、bee4.1 介绍4.2 相关文档4.3 …

2024年PMP考试新考纲-【人员领域】真题解析(3)

今天华研荟继续为您分享PMP新考纲下的【人员People领域】近年真题,帮助大家举一反三,一次性通过2024年的PMP考试。 这两天有读者朋友和我探讨,做机构提供的模拟题是否有必要。华研荟的态度是:完全没必要,做模拟题是浪费…

学而时习之---状态模式

在软件系统中,有些对象也像水一样具有多种状态, 这些状态在某些情况下能够相互转换, 而且对象在不同的状态下具有不同的行为。 为了更好地对这些具有多种状态的对象进行设计。 使用一种被称为状态模式的设计模式。 状态模式用于解决系统中复…

天翼云搭建CUDA开发环境综合教程

一、英伟达环境安装主要流程 1、下载安装对应系统版本nVidia驱动程序安装验证 2、CUDA开发套件安装验证 3、深度学习框架安装验证 4、容器化CUDA环境安装验证 5、制作天翼云主机私有镜像 6、分享镜像给其他用户,实现天翼云A10显卡英伟达驱动环境共享 二、详细…

01第一个Mybatis程序+引入Junit+引入日志文件logback

Mybatis MyBatis本质上就是对JDBC的封装,通过MyBatis完成CRUD。而对于JDBC,SQL语句写死在Java程序中,不灵活。改SQL的话就要改Java代码。违背开闭原则OCP。对于事务机制,MyBatis支持 或managed模式,JDBC模式中MyBatis…

element-ui Tree 树形控件 过滤保留子级并获取过滤后的数据 多选改单选

本示例基于vue2 element-ui element-ui 的官网demo是只保留到过滤值一级的,并不会保留其子级 目标 1、Tree 树形控件 保留过滤值的子级 2、在第一次过滤数据的基础上进行第二次过滤 3、Tree 树形控件 多选改为单选,且只有最末端子级可以选择 不足…

「解析」Windows 如何优雅使用 Terminal

所谓工欲善其事必先利其器,对于开发人员 Linux可能是首选,但是在家学习的时候,我还是更喜欢使用 Windows系统,首先是稳定,其次是习惯了。当然了,我还有一台专门安装 Linux系统的小主机用于学习Linux使用&am…

八、QLayout 用户基本资料修改(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 在很多应用程序中会有用户注册或用户编辑信息等界面。本文就设计一个用户信息编辑界面。要求包含用户名、姓名、性别、部门、年龄、头像、个人说明等信息。 二、实现代码 #ifndef DIALOG_H #define D…

MySQL数据管理(一)

一、列类型 列类型指规定数据库中该列存放的数据类型 列类型分类 数值类型字符串类型日期和时间型数值类型 数值类型 字符串类型 日期和时间类型 MySQL允许“不严格”语法,任何标点符号都可以作为日期部分之间的间隔符,如“24-01-03”、“24.01.03”…

第二百四十五

我们在上一章回中介绍了"修改页面导航中遇到的问题"沉浸式状态样相关的内容,本章回中将介绍如何修改Avatar的大小.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在正常使用CirCleAvatar组件时可以通过该组件的radius属性来修改它的…

Git 对项目更新的时候提示错误 repository not owned by current user

遇到 Git 提示的错误信息为:repository not owned by current user 上图显示的是错误的信息。 问题和解决 出现上面错误信息的原因是当前文件夹的权限和 Git 的执行权限不一直导致的。 我们的问题是我们希望在网盘上使用 Git 更新克隆后的代码,但登录…