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