R語言收益率和波動性模擬股票價格COMP226帶自測題
全文鏈接:tecdat.cn/?p=29581
在本工作表中,我們將研究價格、收益率和波動性。波動性通常用收益率的均方差來衡量,例如夏普比率的分母,它被用作風(fēng)險的衡量標(biāo)準(zhǔn)。我們將使用股票價格的平均對數(shù)收益率和波動性(對數(shù)回報的均方差)來模擬股票價格。
價格和收益率
library(quantmod) getSymbols("AAPL") price_AAPL <- Ad(AAPL) plot(price_AAPL, main = "AAPL prices") 復(fù)制代碼
我們注意到的第一件事是,這個價格序列似乎不是平穩(wěn)的,也就是說,沒有明顯的平均價格(因此談?wù)搩r格的均方差實(shí)際上沒有意義)。使用這種非平穩(wěn)時間序列是非常有問題的——時間序列分析的大部分集中在平穩(wěn)時間序列上;在實(shí)詞時間序列中使用時間序列的第一步通常是導(dǎo)出平穩(wěn)時間序列,也就是說,一個隨時間變化具有恒定均值和均方差的時間序列。由于價格不是平穩(wěn)的,我們將注意力轉(zhuǎn)向股票的收益率。
returns_AAPL <- diff(log(price_AAPL)) ?plot(returns_AAPL, main = "AAPL % returns") ?復(fù)制代碼
請注意,在收益率圖中有一些聚類,不是在收益率的符號中(這對交易AAPL股票直接有用),而是在收益率的幅度中,也就是說,明天的收益率可能在幅度上與今天的收益率相似(無論是正的還是負(fù)的)。除此之外,收益率比價格穩(wěn)定得多。讓我們看看它們的柱狀圖。
hist(returns_AAPL, breaks = 100, col="brown") ?復(fù)制代碼
練習(xí)
檢查當(dāng)我們使用簡單收益率而不是對數(shù)收益率時,我們剛才看到的兩個數(shù)字是否非常相似
解答
library(TTR) dev.off() 復(fù)制代碼
請注意,簡單的收益率直方圖非常相似,但不完全相同。
收益率的分布似乎有點(diǎn)像正態(tài)(高斯)分布。像布萊克-斯科爾斯期權(quán)定價公式這樣的模型是基于收益率實(shí)際上是對數(shù)正態(tài)分布的假設(shè)。事實(shí)上,這只是對現(xiàn)實(shí)的近似——實(shí)際股價收益率比正態(tài)分布所暗示的更有可能出現(xiàn)極值(也就是說,實(shí)際回報分布有肥尾)。
獨(dú)立性怎么樣?
這些收益率在時間上是相互獨(dú)立的嗎?這里有一個快速的方法來部分回答這個問題:
acf(returns_AAPL[-1], main = "Autocorrelation of returns") ?復(fù)制代碼
該自相關(guān)檢查給定周期與未來周期之間的相關(guān)性。
請注意,連續(xù)收益率之間似乎沒有任何自相關(guān)。然而,我們已經(jīng)注意到收益率幅度的一些聚類,這通常被稱為波動率聚類。使用acf重復(fù)上面的圖表,但使用收益率的絕對值(使用函數(shù)abs()獲得)。你現(xiàn)在將觀察到自相關(guān)。
解答
acf(abs(returns_AAPL[-1]), main = "Autocorrelation of absolute returns") dev.off() 復(fù)制代碼
請注意下面新圖中的自相關(guān)。
這些回報的平均值和均方差是多少?
> mu [1] 0.001369495 > sigma [1] 0.02572958 復(fù)制代碼
什么是波動性?
定義
波動率是收益率的年化均方差。20的波動率意味著一年后資產(chǎn)價格從現(xiàn)值下跌或上漲超過20%的可能性約為三分之一。這是基于收益率是對數(shù)正態(tài)分布的假設(shè),這不是真的,但它仍然是一個有用的建模假設(shè),至少作為起點(diǎn)。在R中,給定一系列每日價格,對數(shù)回報的年化均方差的計算如下:
sqrt(252) * sd(diff(log(priceSeriesDaily))) * 100 復(fù)制代碼
使用收益率模擬股票價格
似乎對數(shù)收益率有一個穩(wěn)定的均值和均方差。讓我們假設(shè)它們實(shí)際上是正態(tài)分布的,所以模擬股票價格的目的。假設(shè)對數(shù)收益率正態(tài)分布為均方差μ和均方差sigma。那么我們?nèi)绾文M價格?回想一下對數(shù)收益率的定義:
重新安排我們得到
因此,我們將使用以下方法來模擬股票價格:
1.設(shè)置一個初始化價格(在下面的代碼中是100)。2.從正態(tài)分布中繪制一個隨機(jī)數(shù),平均μ和均方差sigma是模擬的參數(shù)。這個數(shù)字將代表日志返回。3.對日志返回進(jìn)行指數(shù)運(yùn)算,并將其與之前的價格相乘以獲得新的價格。4.重復(fù)步驟2.和3.進(jìn)行許多模擬步驟。
練習(xí)
執(zhí)行上述步驟以模擬價格過程并生成單個模擬價格軌跡,并繪制它以生成如下圖的圖形:
解答
plot(p, type = "l" dev.off() 復(fù)制代碼
練習(xí)
將上一個練習(xí)中的模擬代碼包裝在一個函數(shù)中,并使用它來產(chǎn)生6種不同的模擬價格軌跡。使用
par(mfrow=c(3,3)) ?復(fù)制代碼
將它們放在3×3的網(wǎng)格中,以便可以直觀地比較。它們可能會產(chǎn)生如下內(nèi)容:
解答
par(mfrow=c(3,3)) for (i in 1:6) dotion(simNumber=i) dev.off() 復(fù)制代碼
最受歡迎的見解
1.R語言對S&P500股票指數(shù)進(jìn)行ARIMA + GARCH交易策略
2.R語言改進(jìn)的股票配對交易策略分析SPY—TLT組合和中國股市投資組合
3.R語言時間序列:ARIMA GARCH模型的交易策略在外匯市場預(yù)測應(yīng)用
4.TMA三均線期指高頻交易策略的R語言實(shí)現(xiàn)
5.r語言多均線量化策略回測比較
6.用R語言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實(shí)例
7.r語言預(yù)測波動率的實(shí)現(xiàn):ARCH模型與HAR-RV模型
8.R語言如何做馬爾科夫轉(zhuǎn)換模型markov switching model
9.matlab使用Copula仿真優(yōu)化市場風(fēng)險