Matlab软件进行金融时间序列数据的描述性统计代码

news2024/10/22 13:04:50

1、数据S&P500的收盘价格,return=100*log(pt/pt-1)

方法1:用python代码

import numpy as np
import pandas as pd

def calculate_log_returns(prices):
    """
    计算价格序列的对数收益率。

    参数:
        prices (numpy.array): 价格序列。

    返回:
        log_returns (numpy.array): 对数收益率序列。
    """
    # 确保输入是NumPy数组
    prices = np.array(prices)

    # 计算连续价格之间的比率
    price_ratios = prices[1:] / prices[:-1]

    # 计算对数收益率
    log_returns = 100 * np.log(price_ratios)
    return log_returns


# 读取CSV文件
df = pd.read_csv('sp500.csv')

# 假设第二列的名字是"closing"(根据你的描述)
closing_prices = df['closing']

# 计算对数收益率
log_returns_np = calculate_log_returns(closing_prices)
# 因为这个对数收益率直接输出是numpy数组,没办法直接用to_csv

# 将NumPy数组转换为Pandas Series
log_returns_series = pd.Series(log_returns_np)

# 如果需要将这一列保存到新的CSV文件中
log_returns_series.to_csv('Sp500-return.csv', index=False, header=["Log_Returns"])

方法2:用matlab软件,关于return的计算在lbtest.m代码里面。这里不重点说。

2、matlab的一些基本描述性代码

x=[ ] 里面粘贴上SP500的收盘价格时间序列,其实就是下面的SP500.mat

命令行窗口输入:

最小值:min(x)

最大值:max(x)

平均值:mean(x)

标准差:std(x)

峰度:skewness(x)

偏度:kurtosis(x)

例子:

S&P500描述性统计表
S&P500
Min-0.0947
Max 0.1096
Mean0.00022728
Std0.0123
Skewness-0.2295
Kurtosis10.6859

3、matlab进行Jarque-Bera、Q(20)=Ljung-Box Q-test、ARCH、KPSS、ADF检验的代码

3.1 matlab进行Jarque-Bera test

目的总体分布的正态性检验

返回值:h=0 接受x服从正态分布的假设;h=1 拒绝该假设

jbtest - Jarque-Bera test - MATLAB - MathWorks 中国

以alpha (默认0.05)显著水平对数据x进行Jarque-Bera检验

[h,pValue,jbstat,cValue]=jbtest (x,alpha)
Function描述
jbtest测试样本是否来自均值和方差未知的正态分布,而不是来自正态分布。

这个表格来自于Matlab官网搜索“Available Hypothesis Tests”里。

https://ww2.mathworks.cn/help/stats/jbtest.html

对于结果的输出情况:

(1) h — Hypothesis test result
        1 | 0
    假设检验结果,返回1或0。

    如果h=1,则表示在α显著性水平上拒绝了零假设。
    如果h=0,则表示在α显著性水平上未能拒绝零假设。


(2)pValue:范围(0,1)内的标量值

    测试的p值,以(0,1)范围内的标量值返回。p是观察到检验统计量与零假设下的观察值一样极端或更极端的概率。较小的p值使人们对零假设的有效性产生怀疑。

     当p不在表列范围[0.001,0.50]内时,jbtest会发出警告,并返回最小或最大的表列值。在这种情况下,您可以使用mctol来计算更准确的p值。

(3)jbstat--测试统计
    非负标量值

    Jarque-Bera检验的检验统计量,以非负标量值返回。

(4) crival——临界值
    非负标量值

    在α显著性水平上,Jarque-Bera检验的临界值以非负标量值返回。如果alpha在[0.001,0.50]范围内,并且样本量小于或等于2000,则jbtest会在预计算值表中查找测试的临界值。
    如果使用mctol,jbtest将使用蒙特卡洛模拟确定测试的临界值。当jbstat>crival时,零假设被拒绝。

关于更多Jarque-Bera Test的知识

蒙特卡罗标准误差(Monte Carlo Standard Error)
           蒙特卡洛标准误差是由于模拟p值而产生的误差。

蒙特卡洛标准误差计算如下:

SE=\sqrt{(\frac{(\hat{p})(1-\hat{p})}{mcreps})}
其中,\hat{p}是假设检验的估计p值,mcreps是执行的蒙特卡洛复制次数。jbtest选择足够大的蒙特卡洛复制次数(mcreps),以使蒙特卡洛标准误差\hat{p}小于为mctol指定的值。

例子

[h,pValue,jbstat,cValue]=jbtest (returns,0.05)


[h,pValue,jbstat,cValue]=jbtest (returns)

这两个的结果是一样的,说明默认alph=0.05

S&P500描述性统计表
S&P500
Jarque-Bera12521.37***

3.2 matlab进行Ljung-Box Q-test

目的:检验残差自相关

返回值:h=1拒绝了零假设,并表明XX残差序列中滞后1到20中至少有一个显著自相关的证据是强有力的。

官网解释Ljung-Box Q-test (lbqtest) 
# https://ww2.mathworks.cn/help/econ/lbqtest.html

[h,pValue,stat,cValue] = lbqtest(res)

# 返回测试的 p值,测试统计值,临界值
# 一般表格里面记录 测试统计值和p值就可以

p<0.1, *
p<0.05, **
p<0.01, ***

例子

  1. 创建一个新的文件夹,自行命名
  2. 创建一个SP500.mat

    3.然后是新建SP500.m,代码如下:

%%对数据向量进行Ljung Box Q检验

load SP500;
%-load('SP500.mat');

plot(SP500);
title('\bf SP500 Closing price');
ylabel('Closing Price');
xlabel('S&P500 Price Since January 3, 1997');

%% 每次运行代码之前,命令行窗口clear

补充:这个图的横坐标、纵坐标的刻度都是可以调整的,有需要可留言。

4.新建lbtest.m,代码如下:

%%按照以下步骤对数据进行预处理:
%通过计算每日回报来稳定该系列。
%计算与平均回报的偏差。

load SP500;

returns = price2ret(SP500);
residuals = returns - mean(returns);

%%测试残差序列是否存在1到20个滞后的显著自相关。返回测试决策、p值、测试统计量和临界值。

[h,pValue,stat,cValue] = lbqtest(residuals);

运行出来的结果:

h=1和pValue=4.3887e-13拒绝了零假设,并表明S&P500收益残差序列中滞后1到20中至少有一个显著自相关的证据是强有力的。

S&P500描述性统计表
S&P500
Q(20) 就是 Ljung-Box 检验102.5521***

我最终出来的结果,和原论文的值不是完全一样,有轻微的差异。但是,学会怎么做,才是我们的目的。

3.3 matlab进行ARCH(10) 检验

目的:剩余异方差的恩格尔检验

[h,pValue,stat,cValue] = archtest(res)

例子(ARCH的10怎么设定?未解决)

S&P500描述性统计表
S&P500
ARCH(10)219.4485***

了解更多archtest - Engle test for residual heteroscedasticity - MATLAB - MathWorks 中国

3.4 matlab进行KPSS 检验

KPSS(Kwiatkowski-Phillips-Schmidt-Shin)test 为了稳定性检验。

[h,pValue,stat,cValue] = kpsstest(x)

例子

命令行窗口

clear
load returns
[h,pValue,stat,cValue] = kpsstest(returns)

S&P500描述性统计表
S&P500
KPSS0.0766

不知道为什么和图中的结果不一样,而且不能拒绝原假设。

Function描述
kruskalwallis测试多个样本是否都来自同一人群(或等效地,来自具有相同分布的不同人群),而不是都来自同一群人。

解释来自:Available Hypothesis Tests - MATLAB & Simulink - MathWorks 中国

3.5 matlab进行ADF 检验

ADF(Augmented Dickey-Fuller)对输入单变量时间序列中的单位根进行增强Dickey-Fuller检验,返回拒绝决定。

目的:稳定性检验

返回值:值1表示拒绝单位根零模型,支持替代模型。值0表示无法拒绝单位根空模型。

[h,pValue,stat,cValue] = adftest(x)


alpha默认:0.05

例子

命令行窗口

clear
load returns
[h,pValue,stat,cValue] = adftest(returns)

S&P500描述性统计表
S&P500
ADF-76.2071***

了解更多:adftest - Augmented Dickey-Fuller test - MATLAB - MathWorks 中国

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

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

相关文章

Mongodb基础用法【总结】

关系型数据库和非关系型数据库的区别 关系型数据库 1.在关系型数据库中&#xff0c;数据都是存储在表中的&#xff0c;对存储的内容有严格的要求 2.因为我们在创建表的时候久已经规定了表中的字段 存储的数据类型 是否为空 唯一标识等规则 3.由于操作的都是结构化的数据&#…

家政小程序搭建,数字化市场发展下的意义

家政服务行业作为当下社会生活中不可或缺的行业&#xff0c;需求量在逐渐增加&#xff0c;行业发展也趋向多样化。 随着数字化的浪潮&#xff0c;家政行业逐渐向数字化、智能化升级发展&#xff0c;推动行业高质量发展&#xff0c;迎合现代化发展趋势&#xff0c;这一转型为行…

83.【C语言】数据结构之顺序表的尾部插入和删除

目录 3.操作顺序表 2."伪"插入顺序表的元素 分析尾部插入函数SLPushBack 代码示例 SeqList.h main.c free(指针)出错的几种可能的原因 3."伪"删除顺序表元素 2.分析尾部删除函数SLPopBack 代码示例 错误检查 两种解决办法 1.判断size是否为负…

004-按照指定功能模块名称分组

按照指定功能模块名称分组 一、说明1.现在有一个需求&#xff1a;2.具体做法 二、代码案例三、效果展示 一、说明 1.现在有一个需求&#xff1a; 需要把一个功能模块的几个功能点放在同一个文档目录下&#xff0c;这几个功能点分布在不同的 Controller 2.具体做法 需要把他…

如何将markdown文件转换为pdf

最近笔者在用vscode写markdown&#xff0c;但是提交时往往需要交pdf。所以就涉及到如何将markdown转化为pdf格式。 首先&#xff0c;需要在vscode上安装插件 markdown Preview Enhanced 之后在vscode的右上角即可看到下述图标&#xff0c;点击&#xff0c;vscode右半面就会显示…

C++数据结构-图的存储及邻接矩阵的代码实现

1. 什么是图 图论&#xff08;graph theory&#xff09; 是数学的一个分支&#xff0c;它以 图 为研究的对象。 图论本身是应用数学的一部分&#xff0c;历史上图论曾经被很多数学家各自独立建立过。关于图论的最早文字记载最早出现在欧拉 1736 年的论著中&#xff0c;也就是…

2024年有哪些开放式耳机值得入手?开放式耳机排行榜10强

随着技术的不断进步与消费者需求的日益多样化&#xff0c;开放式耳机凭借其独特的优势——如保持对周围环境的感知、减少对耳道的压力等&#xff0c;逐渐成为市场上的一大热点。尤其是在健康意识不断提升的今天&#xff0c;开放式耳机不仅为音乐爱好者提供了全新的聆听体验&…

【C++语言】全面掌握const的用法

一、const 需要怎么理解&#xff1f;&#xff1f; const修饰的变量不能够再作为左值&#xff0c;初始化完成之后&#xff0c;值不能被修改 1.1 C语言的const const 修饰的量&#xff0c;可以不用初始化&#xff0c;不叫常量&#xff0c;叫做常变量。 void main() {const int…

Windows git 配置

需要在git-bash的目录下,配置.ssh 的配置文件 要 .ssh 目录下的配置无法使用

Modbus TCP报错:Response length is only 0 bytes

问题描述&#xff1a; 使用modbus_tk库&#xff0c;通过Modbus tcp连接PLC时&#xff0c;python中的一个报错信息&#xff1a; Response length is only 0 bytes报错原因&#xff1a; 与Modbus TCP 服务端建立连接后没有断开&#xff0c;继续作为长连接使用&#xff0c;客户端…

一文掌握Cephadm部署Ceph存储集群

&#x1f4da; 博客主页&#xff1a; StevenZeng学堂 &#x1f389; 本文专栏: 一文读懂Kubernetes一文读懂Harbor云原生安全实战指南云原生存储实践指南 ❤️ 摘要&#xff1a;随着企业数据量的增长和存储需求的复杂化&#xff0c;Ceph因其高可扩展性和灵活性&#xff0c;能…

AI劳动力崛起:人将面临失业危机?

场景 第一眼看到这个网站的时候&#xff0c;AI员工官网&#xff08;好像是部署在美国&#xff09;&#xff0c;我觉得很好奇&#xff0c;真的可以让AI替代人类完成工作吗&#xff1f;替代到什么程度呢&#xff1f;能以自然语言直接驱动吗&#xff1f; 正好手上在做爬虫项目&am…

HCIP-HarmonyOS Application Developer 习题(十六)

&#xff08;判断&#xff09;1、HiLink通过分布式软总线的方式连接所有设备&#xff0c;强能力设备可对弱能力设备进行设备虚拟化&#xff0c;将弱设备当做本机设备直接调用。 答案&#xff1a;错误 分析&#xff1a;HiLink 主要针对的是应用开发者与第三方设备开发者&#xf…

医院排队叫号系统

医院分诊排队叫号系统是一种广泛应用于服务行业的智能化管理系统&#xff0c;系统可有效地解决病人就诊时排队的无序、医生工作量的不平衡、就诊环境嘈杂等问题&#xff0c;它主要用于改善服务流程&#xff0c;提高服务效率&#xff0c;优化客户体验。这种系统通常包括以下几个…

HarmonyOS Next应用开发——多种方式实现图片解码

【高心星出品】 图片解码 图片处理就是将设备中保存的图片进行编辑处理然后再存储下来&#xff0c;整个过程需要先图片解码&#xff0c;图片处理&#xff0c;最后在图片编码保存。 图片解码指将所支持格式的存档图片解码成统一的PixelMap&#xff0c;以便在应用或系统中进行…

【贝加莱PLC基础教学】2.1 搜索并连接到对应的PLC(1)

【贝加莱PLC基础教学】目录大全_贝加莱plc p23 1361-CSDN博客 PLC其实和单片机差别不大&#xff0c;无非就是大一点的单片机。另外多加了一点点计算机网络和通讯知识&#xff0c;然而就是这一点点计算机网络知识让大家望而却步。 0.基础知识 在计算机网络中&#xff0c;我们通…

Notepad++通过自定义语言实现日志按照不同级别高亮

借助Notepad的自定义语言可以实现日志的按照不同级别的高亮&#xff1b; 参考&#xff1a; https://blog.csdn.net/commshare/article/details/131208656 在此基础上做了一点修改效果如下&#xff1a; xml文件&#xff1a; <NotepadPlus><UserLang name"Ansibl…

深度学习--CNN实现猫狗识别二分类(附带下载链接, 长期有效)

1. 代码实现(包含流程解释) 样本量: 8005 # # 1.导入数据集(加载图片)数据预处理# 进行图像增强, 通过对图像的旋转 ,缩放,剪切变换, 翻转, 平移等一系列操作来生成新样本, 进而增加样本容量, # 同时对图片数值进行归一化[0:1] from tensorflow.keras.preprocessing.image …

Altair官方教程——HyperMesh视觉控制

在HyperMesh中&#xff0c;模型视角控制可通过标准视图&#xff08;Standard Views&#xff09;工具栏、三维视图控制&#xff08;3D View Controls&#xff09;工具栏以及鼠标实现。 (1) 标准视图工具栏图标。 (2) 鼠标控制- 显示控制的推荐操作方法是使用鼠标。配合键盘上的 …

Lfsr32

首先分析 Lfsr5 首先要理解什么是抽头点&#xff08;tap&#xff09;&#xff0c;注意到图中有两个触发器的输入为前级输出与q[0]的异或&#xff0c;这些位置被称为 tap position.通过观察上图&#xff0c;所谓抽头点指的就是第5个&#xff0c;第3个寄存器的输入经过了异或逻辑…