R语言数据分析案例-股票题目分析

Value at Risk(VaR)是一种统计技术,用于量化投资组合在正常市场条件下可能遭受的最大潜在损失。它是风险管理和金融领域中一个非常重要的概念。VaR通常以货币单位表示,用于估计在给定的置信水平和特定时间范围内,投资组合可能遭受的最大损失。例如,一个1%的一日VaR为$1百万意味着在任何给定的日子里,只有1%的概率投资组合的损失会超过100万美元。

选取一支你感兴趣的股票,画出最近一年的收益率时序图,并用R语言求该股票最近一年收益率的均值,方差和标准差
数据和BG

这里我选取的是googel的股票,使用dailyReturn函数算出它的收益率,前五行如下:

           daily.returns

2023-08-15 -0.0100686499

2023-08-16 -0.0083217753

2023-08-17  0.0094794095

2023-08-18 -0.0189347291

2023-08-21  0.0071394947

接下来可视化:

接下来分别使用mean,var,sd函数进行算出结果:

Mean of returns: 0.000487064370016916

Variance of returns: 0.000277345687220339

Standard deviation of returns: 0.0166536989050583

对该股票采用Weibul1分布法估计其180天周期90%置信水平的VaR序列(用前180天历史数据预测未来180天的日度VaR,并画出Va 时序图

90% 置信水平的 VaR: 0.0023112336283049

计算所有日期的 VaR并画图

另选一只股票,采用排序法计算其一年期 70%置信度的日度 VaR,若回测时次日跌幅超过 VaR 预测的闯值,则判定为一次“违约’。采用交易量、拆幅(最高价减最低价)和收益率MACDKDJOBVCCI等来预测违约估计 logit 模型,然后评价你的模型效果 (NP、ROC、CAP),并提出些可行改进方案。

这里选取的是APPLE的股票数据,设置API接口获取:

同样也是计算日度收益率,前5行如下:

           daily.returns

2023-08-15  0.0000000000

2023-08-16 -0.0049591434

2023-08-17 -0.0145551339

2023-08-18  0.0028160920

2023-08-21  0.0077368331

计算采用排序法计算其一年期 70%置信度的日度 VaR,若回测时次日跌幅超过 VaR 预测的闯值,则判定为一次“违约’。写成相应的代码:

var_70 <- quantile(returns, 0.3)  # 70%分位数即为VaR

default_event <- ifelse(returns < var_70, 1, 0)

default_event

default_event输出示例如下:

           daily.returns

2023-08-15             0

2023-08-16             0

2023-08-17             1

2023-08-18             0

2023-08-21             0

接下来分别计算各个特征并且最终合并文件:

# 计算交易量

volume <- AAPL$AAPL.Volume

Volume

# 计算拆幅

range <- AAPL$AAPL.High - AAPL$AAPL.Low

Range

# 计算收益率

returns <- dailyReturn(AAPL$AAPL.Close)

returns

# 计算MACD指标

macd_data <- MACD(AAPL$AAPL.Close)

macd_data

# 将计算结果添加到数据框中

KDJ_data <- data.frame(Date = index(AAPL), K = K, D = D, J = J)(具体见源代码)

KDJ_data

# 计算OBV指标

AAPL$OBV <- OBV(AAPL$AAPL.Close, AAPL$AAPL.Volume)

AAPL$OBV

# 计算CCI,AAPL 是一个有效的时间序列对象,包含高、低、收盘价数据列

Hi <- AAPL$AAPL.High

Lo <- AAPL$AAPL.Low

Cl <- AAPL$AAPL.Close

cci_data <- CCI(cbind(Hi, Lo, Cl), n = 20, constant = 0.015)

cci_data

在特征处理完成之后,包括每个特征的缺失值、数据不平衡等等问题,将这几个特征合并到一个csv文件

最终数据合并如下:

macd

signal

K

D

J

OBV

2023-08-15

0.502

0.607

56.791

56.537

57.299

43622593

2023-08-16

0.502

0.607

56.791

56.537

57.299

-3342264

2023-08-17

0.502

0.607

56.791

56.537

57.299

-69405146

2023-08-18

0.502

0.607

56.791

56.537

57.299

-8232996

2023-08-21

0.502

0.607

56.791

56.537

57.299

38078883

2023-08-22

0.502

0.607

56.791

56.537

57.299

80163128

CCI

Returns

macd.1

macd_data

Volume

default_event

2023-08-15

15.587

0.000

0.502

0.607

43622593

0

2023-08-16

15.587

-0.005

0.502

0.607

46964857

0

2023-08-17

15.587

-0.015

0.502

0.607

66062882

1

2023-08-18

15.587

0.003

0.502

0.607

61172150

0

2023-08-21

15.587

0.008

0.502

0.607

46311879

0

2023-08-22

15.587

0.008

0.502

0.607

42084245

0

# 建立逻辑回归模型

model <- glm(default_event ~ ., data = train_data, family = "binomial")

model

Coefficients:这里列出了模型的系数估计值,每个变量对应一个。例如,macd 变量的系数估计值为 1.256e+01,而 signal 的系数为 7.701e+01。系数的正负号表示了该变量对响应变量的影响方向。正系数表示随着特征值的增加,响应变量的对数几率也增加(在二项逻辑回归中,对数几率是成功概率与失败概率的比值的自然对数),而负系数则表示对数几率减小。注意,有些变量旁边标有 NA,这通常表示这些变量因为多重共线性或其他原因从模型中被排除了。

# ROC 曲线和 AUC

理想情况下,ROC 曲线会向左上角弯曲,靠近左上角的(0,1)点,这表明模型具有很高的真正例率和很低的假正例率。在这张图中,曲线开始时沿着 y 轴急剧上升,表明在低假正例率下模型能够实现相对较高的真正例率。总体而言,这个 ROC 曲线表明模型在某些阈值设置下对正类的预测有一定的准确性。

Area under the curve: 0.9074

曲线下面积(AUC)为 0.9074 表示模型具有很高的区分能力。

# 调用函数绘制 CAP 曲线

基于这些指标,以下是一些改进模型性能的策略:

数据重新采样:如果数据集不平衡,即违约和非违约的案例数量有很大差异,可以尝试过采样少数类别或欠采样多数类别。也可以使用合成数据生成技术,如 SMOTE,来合成新的正例。

特征工程:检查是否有可能从现有数据中创建更有信息量的特征。评估并可能移除对预测不具有统计显著性的特征。使用特征选择技术来识别和保留最重要的特征等....

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

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

相关文章

嵌入式开发场景下怎么防止源代码泄密

在当今数字化时代&#xff0c;嵌入式系统在各行各业中扮演着至关重要的角色&#xff0c;从智能家居到工业自动化&#xff0c;都离不开这些嵌入式设备的支持。然而&#xff0c;随之而来的是对嵌入式代码安全的日益关注。在嵌入式开发场景下&#xff0c;代码的保护至关重要&#…

《建筑抗震设计规程》DB62/T 3055-2020下载

本规程适用于抗震设防分类为乙类、丙类&#xff0c;抗震设防烈度为6度(0.05g)、7度(0.10g、0.15g)、8度(020g、030g)、9度(0.40g)的多高层钢筋混凝土结构及钢-混凝土混合结构、中等跨度钢屋盖结构、门式刚架钢结构、多低层砖砌体结构房屋建筑的抗震设计。 关于甘肃省地方标准《…

Alist + RaiDrive-Nas挂载云盘(Quark)

Alist RaiDrive-Nas挂载云盘(Quark) Alist download Alist document RaiDriver download — https://www.raidrive.com/ nssm download nssm document nssm specification 配置 Alist 下载适合的Alist版本后&#xff0c;启动服务&#xff1b; 需使用命令符。 在完成解…

Pytorch 与 Tensorflow:深度学习的主要区别(1)

引言 目前&#xff0c;Python 深度学习领域已经涌现出多个由科技界巨头如 Google、Facebook 和 Uber 等公司公开发布的框架&#xff0c;这些框架旨在帮助开发者构建先进的计算架构。对于刚接触这一领域的你来说&#xff0c;深度学习是计算机科学中的一个分支&#xff0c;它通过…

业绩复苏,第二座12英寸晶圆厂预计年底投产 | 百能云芯

在经历了2023年四季度的业绩波动后&#xff0c;华虹半导体终于在2024年一季度展现了业绩的复苏迹象。根据华虹半导体最新公布的财报&#xff0c;今年一季度的销售收入和毛利率均实现了环比增长&#xff0c;尽管与去年同期相比仍有下滑&#xff0c;但市场对公司前景的乐观预期正…

后端项目开发笔记

Maven打包与JDK版本不对应解决方法 我这里使用jdk8。 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configurat…

【数据结构】有关栈和队列相互转换问题

文章目录 用队列实现栈思路实现 用栈实现队列思路实现 用队列实现栈 Leetcode-225 用队列实现栈 思路 建立队列的基本结构并实现队列的基本操作 这部分这里就不多说了&#xff0c;需要的可以看笔者的另一篇博客 【数据结构】队列详解(Queue) 就简单带过一下需要实现的功能 …

1070: 邻接矩阵存储简单路径

解法&#xff1a; #include<iostream> #include<vector> using namespace std; int arr[100][100]; int n; int sta, des; vector<int> path; vector<vector<int>> res; void dfs(vector<int> &a,int i) {a[i] 1;path.push_back(i);…

Request请求数据 (** kwargs参数)

目录 &#x1f31f;前言&#x1f349;request入门1. params2. data3. json4. headers5. cookies6. auth7. files8. timeout9. proxies10. allow_redirects11. stream12. verify13. cert &#x1f31f;总结 &#x1f31f;前言 在Python中&#xff0c;发送网络请求是一项常见的任…

秋招算法题——怪盗基德的滑翔翼

文章目录 题目描述思路分析思维误区 实现代码思路总结 题目描述 思路分析 注意点 只能从高到低方向一旦选择了&#xff0c;就确定了 问题转换 一旦确定了方向和起点后&#xff0c;就变为求以出发点为结尾的最长上升子序列是多少相当于同时确定两遍最长上升子序列&#xff0…

动画图片怎么在线做?简单三步轻松上手

在现在的广告营销中&#xff0c;我们经常会看到带有动态效果的gif格式图片。它的效果能够吸引大众的目光有效的传递信息、随性。而通过使用在线动画制作&#xff08;https://www.gif.cn/&#xff09;工具&#xff0c;不用下载软件手机、pc均可在线操作。只需要上传jpg、png格式…

HR招聘面试测评,如何判断候选人的职业价值观?

在企业的招聘过程中&#xff0c;如何判断候选人的职业价值观&#xff0c;尤其是和公司的企业文化&#xff0c;以及价值观高度相符的员工。这将直接决定了候选人能否在岗位上高效率工作&#xff0c;也可能决定员工的离职率&#xff0c;职业成就感和幸福感。 对候选人的价值观分…