R语言做复杂金融产品的几何布朗运动的模拟
幾何布朗運動(GBM)是模擬大多數(shù)依賴某種形式的路徑依賴的金融工具的標準主力。
最近我們被要求撰寫關(guān)于GBM的研究報告,包括一些圖形和統(tǒng)計輸出。雖然GBM基于有根據(jù)的理論,但人們永遠不應(yīng)忘記它的最初目的 - 粒子運動的建模遵循嚴格的正態(tài)分布脈沖。基本公式由下式給出:
標準維納過程代表創(chuàng)新。在對氣體進行建模時效果很好,在財務(wù)建模方面存在一些嚴重的缺陷。問題是維納過程有兩個非常嚴格的條件:
a)創(chuàng)新通常是分布式的,平均零和方差為tb)創(chuàng)新是獨立的
現(xiàn)在,至少有一些金融市場數(shù)據(jù)暴露的人都知道股票回報不滿足第一個條件,有時甚至不滿足第二個條件。普遍的共識是,股票收益是扭曲的,是有效的,并且尾巴不均勻。雖然股票收益趨于收斂于正常分布且頻率遞減(即月收益率比日收益率更正常),但大多數(shù)學(xué)者會同意t分布或Cauchy分布更適合收益。
然而,在實踐中,大多數(shù)人在模擬布朗運動時只是采用正態(tài)分布,并接受由此產(chǎn)生的資產(chǎn)價格不是100%準確。另一方面,我不滿足于這種半解決方案,我將在下面的例子中展示盲目信任GBM的成本是多少。我提出了一種偽布朗方法,其中隨機創(chuàng)新是從經(jīng)驗回報的核密度估計而不是假設(shè)的正態(tài)分布中采樣的。這種方法的好處在于它產(chǎn)生的結(jié)果更接近于過去觀察到的結(jié)果而沒有完全復(fù)制過去(這將是直接從過去的創(chuàng)新中抽樣隨機創(chuàng)新的結(jié)果)。
介紹性例子
在我們進入有趣的部分之前,我們展示了市場上浪費了多少錢,我們從一個簡單的例子開始。我們需要加載三個包及其依賴項(您可以在頁面底部下載此帖子的R-)
require(quantmod)對于我們的第一個例子,我們將嘗試模擬AT&T的回報。以下命令允許我們從雅虎財經(jīng)下載價格信息并計算每月日志回報為了確定我在開始時所做的觀點,我們將比較回報分布與正態(tài)分布。
att <- getSymbols plot rug(jitter(attr))即使沒有藝術(shù)史碩士學(xué)位,大多數(shù)人也會同意這兩行不匹配。對于那些不依賴于這種視覺方法的人來說,可靠的Kolmogorov-Smirnov測試提供了一種更正式的方法。
set.seed(2013) ks.test測試返回的p值為0.027,這遠遠不夠(p值越小,我們必須得出的結(jié)論是兩個分布不同)。接下來我們設(shè)置標準GBM功能。我完全清楚各種GBM函數(shù)作為眾多包的一部分存在。盡管如此,我還是決定創(chuàng)建自己的函數(shù),以使內(nèi)部工作更加透明。
m((mu * dt * x) + #drift rnorm(1, mean = 0, sd = 1) * sqrt(dt) * sigma * x) #random innovation x }在這個簡單的函數(shù)中(我知道有更優(yōu)雅的方法來實現(xiàn)這一點,但結(jié)果保持不變)rnorm函數(shù)充當(dāng)Wiener進程驅(qū)動程序。毋庸置疑,這并不尊重我們上面所看到的。相比之下,我的偽布朗函數(shù)從過去經(jīng)驗回報的核密度估計中抽樣隨機創(chuàng)新。
pseBM <- function(x, rets, n, ...) { N < y[[i]] <- x + x * (mean(rets) + samp[i]) x <- y[[i]] } return(y) }不可否認,這個函數(shù)有點簡潔,因為它假設(shè)靜態(tài)增量(即dt = 1)并且?guī)缀醪恍枰脩糨斎搿K恍枰粋€起始值(x),一個過去返回的向量(rets)和指定的路徑長度(n)。...輸入允許用戶將其他命令傳遞給密度函數(shù)。這使用戶可以通過添加帶寬命令(bw =)來控制核密度估計的平滑度。沒有任何進一步的麻煩,讓我們開始使用上述功能進行模擬。在第一個例子中,我們僅使用起始值x中的兩個函數(shù)來模擬一個價格路徑,即系列中的最后一個價格。 要查看兩個方法的執(zhí)行情況,我們計算模擬序列的回報并將它們的分布與經(jīng)驗分布進行比較。
x <- as.numericattPGBMr <- diff[-1] d1 <- density d2 <- density d3 <- density plot顯然,我們看到PGBM函數(shù)(藍線)在產(chǎn)生接近經(jīng)驗回報分布(黑線)的回報時優(yōu)于標準GBM函數(shù)(紅線)。同樣,關(guān)鍵(或視覺上無能)的讀者可以查看KS測試的結(jié)果。
ks.test(attr, attPGBMr)我們再次看到PGBM函數(shù)(p值= 0.41)遠遠優(yōu)于GBM函數(shù)(p值= 0.02)。
高級示例
正如所承諾的那樣,我們的第二個例子將展示當(dāng)一個人在不能代表基礎(chǔ)數(shù)據(jù)時錯誤地假設(shè)正態(tài)分布時,在線上有多少錢。自從金融黑暗時代醒來以來,歐洲特別表現(xiàn)出對結(jié)構(gòu)性金融產(chǎn)品的渴望,這些產(chǎn)品可以參與股票市場,同時限制或消除下行風(fēng)險。此類證券通常依賴于路徑,因此通常使用GBM進行建模。
我們將使用Generali Germany提供的一種特定產(chǎn)品 - Rente Chance Plus - 這是我開發(fā)PGBM功能的最初原因。當(dāng)我在私人銀行工作時,我的任務(wù)是評估這個特定的安全性,從基于GBM的標準蒙特卡羅模擬開始,但很快意識到這還不夠。Rente Chance Plus提供20%參與EUROSTOXX 50指數(shù)上限至15%的上限,初始投資和實現(xiàn)收益均無下行。安全性在每年年底評估。盡管Generali可以在20年的投資期內(nèi)自由改變參與率和資本化率,但為了論證,我們將假設(shè)這些因素保持不變。
從上面反映我們的程序,我們首先從雅虎財經(jīng)下載EUROSTOXX 50價格信息。
eu <- getSymbols接下來,我們看看數(shù)據(jù)與正態(tài)分布的擬合程度如何,或者說多么糟糕。
plot(density(er)ks.tst(er從嚴格的視角來看,這看起來比AT&T分布更糟糕。EUROSTOXX的回報顯然是負面偏差,有點leptokurtic。KS測試返回p值為0.06,確認視覺不匹配。現(xiàn)在我們已經(jīng)確定正態(tài)分布不是最合適的,我們可以看看錯誤地假設(shè)它的后果。我們將使用標準GBM和我的PGBM函數(shù)運行10,000次迭代的模擬并比較結(jié)果(如果您正在復(fù)制以下代碼,請在等待時給自己喝杯咖啡。這將花費一些時間來運行)。
x <- as.numerSIM1 <- as.data.frameSIM2 <- as.data.frame(sim2 <- ts(as.matri當(dāng)然,我們對EUROSTOXX 50的價格水平不感興趣,而是在參與率和上限率的約束下評估的回報。好消息是最困難的部分就在我們身后。計算回報和應(yīng)用約束非常簡單。對結(jié)果進行調(diào)整并不容易。
s1.r <-(sim2))S1<-colSumsS2<-colSum rug(jitks.test我們可以清楚地看到,PGBM函數(shù)(藍色)模擬的累積回報表現(xiàn)出負偏差,并且范圍比標準GBM函數(shù)(紅色)模擬的回報更寬。請注意,由于安全性沒有下行限制,分布在下尾區(qū)看起來并不相同。KS測試以極其確定的方式證實兩種分布是不同的(然而,小的p值主要是由大樣本量引起的)。現(xiàn)在回答這個百萬美元的問題(實際上非??常字面)。線路上有多少錢?好吧,如果Generali使用正態(tài)分布來預(yù)測回報并相應(yīng)地重新投保,他們會......
均值(S1)-mean(S2)
...低估了累計回報率約0.6%。這可能看起來并不多,但如果我們假設(shè)安全數(shù)量為10億歐元,那么Generali就達不到600萬歐元 - 相當(dāng)多的錢只是假設(shè)錯誤的分配。
結(jié)論和局限
那么我們從中學(xué)到了什么呢?用于對任何依賴路徑的安全定價模型中的創(chuàng)新進行建模的分布可能會產(chǎn)生重大影響。雖然這個陳述本身就很明顯,但分布差異的程度令人驚訝。當(dāng)然,在Generali和其他機構(gòu)工作的人可能比我更聰明,他們非常清楚正常分布并不總是最佳選擇。但是,大多數(shù)人會使用更正式的(但可能只是不準確的)分布,如t分布或Cauchy分布。使用核密度分布是一種聞所未聞的方法。這是有原因的。
首先,不能保證核密度估計比未回避的正態(tài)分布更準確地表示未知的基礎(chǔ)分布。使用過去的數(shù)據(jù)預(yù)測未來總是讓任何數(shù)據(jù)科學(xué)家的口味都不好,但不幸的是我們別無選擇。然而,標準GBM固有的正態(tài)分布確實過于依賴過去的信息(即歷史均值和標準偏差),但在形式化解決方案方面具有巨大的優(yōu)勢,因為其核心作用(雙關(guān)語僅用于后見之明)概率論。
其次,內(nèi)核密度估計對使用的帶寬非常敏感。如果帶寬太大,您將獲得平滑的分布,但是,與正態(tài)分布沒有區(qū)別。如果帶寬太小,您將獲得一個非常強調(diào)極值的分布,特別是如果您估計內(nèi)核密度的數(shù)據(jù)樣本相當(dāng)小。在上面的例子中,我們使用了密度函數(shù)中固有的自動帶寬選擇器,但幾乎沒有辦法知道最佳帶寬是什么。
上述方法還有其他局限性,因為我們做了許多非常不切實際的假設(shè)。在Generali的例子中,我們假設(shè)Generali沒有改變參與率和上限率,這是不太可能的。然而,更一般地說,我們對金融市場做出了一些基本假設(shè)。知情(希望)我們假設(shè)資本市場是有效的。因此,我們假設(shè)回報中沒有自相關(guān),這是維納過程的第二個條件,但這是否代表了基礎(chǔ)數(shù)據(jù)?
acf(eu.r總結(jié)
以上是生活随笔為你收集整理的R语言做复杂金融产品的几何布朗运动的模拟的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知识表示的方法(1)——产生式表示法
- 下一篇: 安装protobuf可能遇到的问题