R語言探索與分析17-股票題目

Value at Risk(VaR)是一種統計技術,用于量化投資組合在正常市場條件下可能遭受的最大潛在損失。它是風險管理和金融領域中一個非常重要的概念。VaR通常以貨幣單位表示,用于估計在給定的置信水平和特定時間范圍內,投資組合可能遭受的最大損失。例如,一個1%的一日VaR為$1百萬意味著在任何給定的日子里,只有1%的概率投資組合的損失會超過100萬美元。

VaR的主要特點和考慮因素包括:

置信水平:這是VaR計算中的一個關鍵參數,表示損失不會超過VaR估計的概率。常見的置信水平有95%、99%等。

時間范圍:VaR估計的另一個關鍵方面是時間范圍,比如一天、一周或一個月。時間范圍越長,潛在損失的估計通常越大。

損失的估計:VaR提供了一個損失估計,但并不預測損失會發生的確切時間點。

方法論:計算VaR的方法有多種,包括歷史模擬法、方差-協方差法和蒙特卡洛模擬法。每種方法都有其優缺點,適用于不同類型的投資組合。

局限性:雖然VaR是一個有用的風險度量工具,但它也有局限性。它不考慮超過VaR估計值的極端損失,且對于非線性和復雜的金融工具可能不夠精確。

VaR在金融領域廣泛應用,特別是在風險管理、資產管理和資本要求計算方面。銀行、投資公司和其他金融機構使用VaR來監控和管理其暴露在市場、信用和其他風險中的資產組合。盡管它是一個有力的工具,但專業人士和監管機構都認識到,依賴單一風險度量標準是不足夠的,需要結合其他風險管理技術和工具。

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

# 計算股票的日度收益率  # 計算對數收益率
returns <- dailyReturn(GOOGL)
returns
# 繪制收益率時序圖
plot(returns, main = "Daily Returns of Alphabet (GOOGL) in the Last Year", ylab = "Daily Returns")# 計算收益率的均值、方差和標準差
mean_return <- mean(returns, na.rm = TRUE)
variance <- var(returns, na.rm = TRUE)
std_deviation <- sd(returns, na.rm = TRUE)# 輸出均值、方差和標準差
print(paste("Mean of returns:", mean_return))
print(paste("Variance of returns:", variance))
print(paste("Standard deviation of returns:", std_deviation))

???????????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 時序圖

# 自定義 Weibull 分布的估計函數
weibull_func <- function(data) {fit <- suppressWarnings(tryCatch(fitdistr(data, densfun = "weibull",start = list(shape = 1, scale = 1),  # 自定義合適的初始參數值method = "BFGS"),  # 自定義擬合方法error = function(e) NULL))return(fit)
}# 進行 Weibull 分布的擬合
fit_weibull <- weibull_func(positive_returns)# 使用擬合的 Weibull 分布計算 VaR
confidence_level <- 0.9
VaR_90 <- qweibull(1 - confidence_level, shape = fit_weibull$estimate[1], scale = fit_weibull$estimate[2])

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

接下來分別計算各個特征并且最終合并文件:

# 計算日度收益率
returns <- dailyReturn(AAPL$AAPL.Close)
returns
# 計算VaR
var_70 <- quantile(returns, 0.3)  # 70%分位數即為VaR
default_event <- ifelse(returns < var_70, 1, 0)
default_event# 計算交易量
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指標
Hi <- AAPL$AAPL.High
Lo <- AAPL$AAPL.Low
Cl <- AAPL$AAPL.Close
# 假設N=9天
N <- 9# 計算RSV值
RSV <- (Cl - rollapplyr(Lo, width = N, min, align = "right")) / (rollapplyr(Hi, width = N, max, align = "right") - rollapplyr(Lo, width = N, min, align = "right")) * 100# 計算K值、D值和J值
K <- D <- J <- rep(NA, length(Cl))
for (i in N:length(Cl)) {if (i == N) {K[i] <- 50  # 初始K值為50D[i] <- 50  # 初始D值為50} else {K[i] <- (RSV[i] + (N - 1) * K[i - 1]) / ND[i] <- (K[i] + (N - 1) * D[i - 1]) / N}J[i] <- 3 * K[i] - 2 * D[i]
}# 將計算結果添加到數據框中
KDJ_data <- data.frame(Date = index(AAPL), K = K, D = D, J = J)
KDJ_data

最終數據合并如下:

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

# 建立邏輯回歸模型

# 建立 Logit 模型
model <- glm(default_event ~ ., data = train, family = binomial)
model
# 在測試集上進行預測
predicted <- predict(model, newdata = test, type = "response")
predicted

?

理想情況下,ROC 曲線會向左上角彎曲,靠近左上角的(0,1)點,這表明模型具有很高的真正例率和很低的假正例率。在這張圖中,曲線開始時沿著 y 軸急劇上升,表明在低假正例率下模型能夠實現相對較高的真正例率。總體而言,這個 ROC 曲線表明模型在某些閾值設置下對正類的預測有一定的準確性。

Area under the curve: 0.9074

曲線下面積(AUC)為 0.9074 表示模型具有很高的區分能力。

# 繪制 CAP 曲線
cap_curve <- function(actual, predicted) {total <- length(actual)num_positive <- sum(actual == 1)# 確保排序后的實際值和預測值長度一致actual_sorted <- actual[order(predicted, decreasing = TRUE)]# 計算累積正例的比例cum_positive <- cumsum(actual_sorted == 1) / num_positive# 生成 x 和 y 值x_values <- c(0, (1:total) / total)y_values <- c(0, cum_positive)# 確保 x_values 和 y_values 長度一致if (length(x_values) != length(y_values)) {stop("Lengths of x_values and y_values are not equal.")}# 繪制 CAP 曲線plot(x_values, y_values, type = "l", col = "red", xlab = "Population", ylab = "Positive", main = "CAP Curve")abline(0, 1, col = "blue") # 隨機預測線lines(c(0, sum(actual == 1) / total, 1), c(0, 1, 1), col = "green") # 理想曲線
}# 調用函數繪制 CAP 曲線
cap_curve(test_data$default_event, predictions)

基于這些指標,以下是一些改進模型性能的策略:

數據重新采樣:如果數據集不平衡,即違約和非違約的案例數量有很大差異,可以嘗試過采樣少數類別或欠采樣多數類別。也可以使用合成數據生成技術,如 SMOTE,來合成新的正例。

特征工程:檢查是否有可能從現有數據中創建更有信息量的特征。評估并可能移除對預測不具有統計顯著性的特征。使用特征選擇技術來識別和保留最重要的特征。

模型調整:調整模型超參數,使用網格搜索或隨機搜索確定最佳參數。嘗試不同的模型算法,比如隨機森林、支持向量機或梯度提升機,并與當前的邏輯回歸模型比較。

閾值調整:改變分類的決策閾值,可能會提高正類別的預測準確性。

使用成本敏感學習,并為錯誤分類的類別分配不同的權重。

模型集成:使用集成方法如 Bagging 或 Boosting,這些方法可以提高模型的穩定性和性能。

考慮堆疊不同的模型來利用各自的優勢。

評估指標選擇:依據業務目標,選擇更合適的評估指標,例如利潤曲線,以確保模型優化方向與業務目標一致。

題目和代碼和數據

創作不易,希望大家多多點贊收藏和評論!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23401.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenCV的小部件最基本范例

OpenCV也有與PYQT類似的小部件&#xff0c;例如滑塊slider。OpenCV可以用與PYQT類似的“信號與槽”方法&#xff0c;也可以在函數中直接查詢小部件的值。 import cv2 import numpy as npcv2.namedWindow(Show1) image np.zeros((100, 400, 3), np.uint8) # 創建一個空白內容…

JavaScript基礎知識4(數組、函數、參數、作用域、具名和匿名函數、邏輯運算符短路、轉化布爾類型)

JavaScript基礎知識4&#xff08;數組、函數、參數、作用域、具名和匿名函數、邏輯運算符短路、轉化布爾類型&#xff09; 數組數組是什么&#xff1f;數組的基本使用定義數組和數組單元訪問數組和數組索引數據單元值類型數組長度屬性 操作數組 函數聲明和調用聲明&#xff08;…

(面試官問我微服務與naocs的使用我回答了如下,面試官讓我回去等通知)微服務拆分與nacos的配置使用

微服務架構 正常的小項目就是所有的功能集成在一個模塊中&#xff0c;這樣代碼之間不僅非常耦合&#xff0c;而且修改處理的時候也非常的麻煩&#xff0c;應對高并發時也不好處理&#xff0c;所以 我們可以使用微服務架構&#xff0c;對項目進行模塊之間的拆分&#xff0c;每一…

前端傳參數后端變量類型能夠接受到List卻無法接收到值

問題描述 今天寫了個接口&#xff0c;下圖所示 ReqVO里是這樣的&#xff1a; 然后前端去請求&#xff0c;從請求結果中看發現這里值是在的&#xff08;有經驗的可能就看出來了otherInfo.id: 這樣以參數后端是接收不到的&#xff0c;但是當時沒發現&#xff09; 傳進來后端…

維納運動的概念

維納運動&#xff08;Wiener Process&#xff09;&#xff0c;也稱為標準布朗運動&#xff0c;是一種重要的隨機過程&#xff0c;廣泛應用于數學、物理學和金融學等領域。它是一個連續時間的隨機過程&#xff0c;具有一些特殊的性質&#xff0c;使其成為描述隨機動態系統的經典…

GAT1399協議分析(8)--批量圖像查詢

一、請求消息定義 視頻圖像包含視頻片段、 圖像、 文件、 人員、 人臉、 機動車、 非機動車、 物品、 場景和視頻案事件、 視頻圖像標簽等對象 在消息體中,可以包含其中一種類,加上Data字段即可。 ImageInfo對象 二、請求消息實例 wireshark 抓包實例 請求: 文本化: /V…

制造執行MES系統在光伏行業的應用

全球對可再生能源的需求不斷增長&#xff0c;光伏能源作為一種清潔、可持續的能源形式&#xff0c;已經在廣泛應用中受到了廣泛關注。為滿足工業領域的光伏能源需求&#xff0c;光伏制造執行系統(MES)作為一種集成化的技術解決方案&#xff0c;提供了更高效、更可靠的解決方案。…

WPS的JSA算國產編程語言,IDE,腳本工具嗎?javascript代替VBA

現在wps用javascript代替VBA&#xff0c;應該算很成功了吧。 如果可以獨立出來變成一個腳本語言&#xff0c;簡單的IDE(本身也有類似VBA&#xff0c;不要寄宿在WPS里面運行&#xff0c;這樣就可以變成VBS一樣執行腳本了&#xff0c;用來開發按鍵精靈,LUA一樣的腳本很不錯 以下…

Activity->Activity中動態添加Fragment->Fragment回退棧BackStack

Fragment回退棧 Fragment回退棧用于管理Fragment的導航歷史(添加、刪除、替換)。每個Activity都有一個包含其所有Fragment的FragmentManager&#xff0c;調用其addToBackStack方法時&#xff0c;這個事務就會被添加到FragmentManager的回退棧中當用戶按下返回鍵時&#xff0c;…

MySQL報ERROR 2002 (HY000)解決

今天在連接客戶服務器時MySQL的時候報: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql/mysql.sock’ (2) [rootXXX ~]# mysql -uroot -p Enter password: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket…

rman恢復后,少部分數據文件狀態為MISSING000**

客戶有套一體機&#xff0c;每天晚上21點開始做rman完全備份&#xff0c;大約第2天上午9點多完成備份&#xff0c;rman備份保留策略保留一份完全備份 6月1日晚21點自動發起備份&#xff0c;6月2日上午10點15分完成備份&#xff0c;并生成了一個控制文件備份 c-4063271871-2024…

前端圖片在切換暗黑模式時太亮該怎么辦?

通過css中的filter屬性來實現&#xff0c;進行圖片的色系反轉、亮度、對比度調整等 1、invert 反轉輸入圖像&#xff0c;值為 100% 則圖像完全反轉&#xff0c;值為 0% 則圖像無變化 filter: invert(1); 2、blur 給元素應用高斯模糊效果。 filter: blur(5px); 3、brightnes…

如何解決網絡問題?

組織和 IT 管理員盡其所能完善他們的網絡&#xff0c;但是&#xff0c;不同程度的網絡問題仍然可能出現&#xff0c;這些網絡問題需要立即響應和解決&#xff0c;如果這些問題在不合理的時間內得不到解決&#xff0c;網絡和組織的損害可能會付出高昂的代價。這就是為什么 IT 管…

【漏洞復現】銳捷校園網自助服務系統 login_judge.jsf 任意文件讀取漏洞(XVE-2024-2116)

0x01 產品簡介 銳捷校園網自助服務系統是銳捷網絡推出的一款面向學校和校園網絡管理的解決方案。該系統旨在提供便捷的網絡自助服務&#xff0c;使學生、教職員工和網絡管理員能夠更好地管理和利用校園網絡資源。 0x02 漏洞概述 校園網自助服務系統/selfservice/selfservice…

css移動端開發

1.視口 視口標簽 視口元標簽&#xff08;Viewport Meta Tag&#xff09;用于控制網頁在移動設備上的視口行為&#xff0c;確保頁面能夠正確縮放和調整。通常在HTML的<head>部分添加如下代碼&#xff1a; <meta name"viewport" content"widthdevice-…

《大道平淵》· 玖 —— 把高深的道理講的通俗,這是一門藝術。

《平淵》 玖 "化繁為簡, 點石成金。" 把高深的道理講得通俗&#xff0c;這是一門藝術&#xff01; 講述者能夠站在群眾的角度&#xff0c;用盡可能簡單通俗的語言來解釋復雜的概念。 講述者需要對概念有深刻的理解&#xff0c;還要有靈活的表達能力。 群眾愿意接受…

從當當網批量獲取圖書信息

爬取當當網圖書數據并保存到本地&#xff0c;使用request、lxml的etree模塊、pandas保存數據為excel到本地。 爬取網頁的url為&#xff1a; http://search.dangdang.com/?key{}&actinput&page_index{} 其中key為搜索關鍵字&#xff0c;page_index為頁碼。 爬取的數據…

15- Redis 中的 整數集合 數據結構

整數集合是 Set 對象的底層實現之一。當一個 Set 對象只包含整數值元素&#xff0c;并且元素數量不大時&#xff0c;就會使用整數集合這個數據結構作為底層實現。 1. 整數集合結構設計 整數集合本質上是一塊連續內存空間&#xff0c;它的結構定義如下&#xff1a; typedef s…

Chrome DevTools 使用攻略

Chrome DevTools是谷歌瀏覽器提供的一套強大的開發工具&#xff0c;對于前端開發人員來說是不可或缺的利器。下面將從多個方面介紹Chrome DevTools的使用攻略&#xff1a; 一、啟動方式 通過快捷鍵&#xff1a; 在Windows/Linux上&#xff0c;按下 F12、Ctrl Shift I 或 C…

集成學習筆記

集成學習 簡介 決策樹 GBDT 擬合殘差 一般 GBDT XGBOOST 弓 1 能表達樣本落入的子節點&#xff0c;但是不能把表示結構 2 3.正則項 – 懲罰 防止過擬合&#xff0c;比如一個值總共有10顆樹都是由同一顆樹決定的&#xff0c;過擬合 5 找到一種方式不依賴于損失函數 …