参数估计_随机微分方程的参数估计(一)
隨機(jī)微分方程,俗稱SDE,相信點(diǎn)進(jìn)來的同學(xué)們肯定對(duì)這個(gè)概念不感到陌生。SDE呢,是對(duì)現(xiàn)實(shí)生活中一些隨機(jī)波動(dòng)的事物的建模,比如可以用幾何布朗運(yùn)動(dòng)(GBM)來模擬股價(jià)變化,用CIR模型來模擬利率波動(dòng)。
然而一個(gè)很現(xiàn)實(shí)的問題就是,如何對(duì)SDE進(jìn)行參數(shù)估計(jì)?就是,對(duì)于一個(gè)給定的含有參數(shù)的SDE,給出一些軌道,然后想要估計(jì)出參數(shù)的值來。比如已知一只股票的歷史價(jià)格數(shù)據(jù),假定它服從GBM,怎么近似求出它的期望收益率
和波動(dòng)率 呢?知乎上還沒有人專門討論過這個(gè)問題,最近看了幾篇這個(gè)主題的論文,所以我來拋磚引玉了。
問題的標(biāo)準(zhǔn)形式
對(duì)于含參的擴(kuò)散方程:
設(shè)
是擴(kuò)散過程的初值, 是標(biāo)準(zhǔn)布朗運(yùn)動(dòng), 是待估計(jì)的參數(shù)。漂移項(xiàng) 和擴(kuò)散項(xiàng) 函數(shù)已知;參數(shù)向量 ,其中參數(shù)空間 是緊集。為保證解的唯一性,進(jìn)一步還要求漂移函數(shù)和擴(kuò)散函數(shù)是Lipschitz連續(xù)的。擴(kuò)散問題參數(shù)估計(jì)的標(biāo)準(zhǔn)形式是:已知過程
的一系列觀察點(diǎn) ,且 ,根據(jù) 的值,得到參數(shù) 的估計(jì)。擴(kuò)散過程一定滿足馬爾科夫性,這給研究參數(shù)估計(jì)帶來了便利性。極大似然估計(jì)法
面對(duì)參數(shù)估計(jì)的問題自然就會(huì)想到極大似然法,在矩估計(jì)不好用的時(shí)候,極大似然估計(jì)是點(diǎn)估計(jì)比較好的選擇。
由于給出的觀測點(diǎn)都是離散的,設(shè)
是在給定 時(shí)刻的位置 和參數(shù) 的條件下的轉(zhuǎn)移概率密度函數(shù),從而我們有似然函數(shù):現(xiàn)在麻煩的事情是這個(gè)轉(zhuǎn)移概率密度怎么計(jì)算,有了它才能求似然解對(duì)不對(duì)!?
EML
事實(shí)上,轉(zhuǎn)移概率密度滿足如下PDE:
這個(gè)拋物PDE叫做Fokker-Planck方程,證起來比較麻煩。這個(gè)方程可是在物理學(xué)有廣泛的應(yīng)用的。(你看大名鼎鼎的 Planck 普朗克)
這么看,對(duì)于某些特殊的SDE,是可以從理論上求出轉(zhuǎn)移密度的解析解的,繼而可以精確求解極大似然函數(shù)。比如說對(duì)于CIR過程就是可以寫出解析形式的轉(zhuǎn)移概率密度。但是對(duì)于大多數(shù)SDE,根本沒有辦法解得這樣一個(gè)復(fù)雜的PDE的解析解,但是退一步,可以數(shù)值求解該P(yáng)DE,或者求出一個(gè)近似的解析解來代替真正的解。硬剛一個(gè)PDE確確實(shí)實(shí)可以解決咱們的問題,在一些論文里邊,這種方法叫做EML(exact maximum likelihood)。
但是硬剛PDE這種方法不好操作啊,理論艱深,操作困難,關(guān)鍵是咱學(xué)不會(huì)。那有沒有容易一點(diǎn)的方法?
DML
回憶一下SDE的兩種模擬方法:
- Euler-Maruyama方法:
- Milstein方法:
其中
是標(biāo)準(zhǔn)正態(tài)分布。當(dāng)擴(kuò)散項(xiàng) 是常數(shù)的時(shí)候,這兩種方法是一樣的。這兩種方法其實(shí)都是對(duì)SDE在一個(gè)區(qū)間上的離散近似,借助這種近似(Euler方法),我們可以認(rèn)為,從
到 轉(zhuǎn)移概率密度是均值為 ,方差 的正態(tài)分布密度函數(shù),這里 ,也就是:看樣子問題已經(jīng)有點(diǎn)眉目了,現(xiàn)在我們可以把這個(gè)轉(zhuǎn)移概率密度代入到似然函數(shù)去求解似然方程啦!
這種方法借助SDE模擬的離散形式近似估計(jì)轉(zhuǎn)移概率密度,因此稱作DML(discret maximum likelihood)。
下面以CIR模型來說明一下如何用DML來進(jìn)行估計(jì)和DML方法的效果,代碼全部是用MATLAB寫的。
一個(gè)生動(dòng)的參數(shù)估計(jì)的例子
CIR模型:
這里面有三個(gè)參數(shù),
和 。記 ,通過解上面提到的似然方程可以得到三個(gè)參數(shù)應(yīng)該滿足的方程為:一般來說,先通過第二、三個(gè)方程組得到
和 的估計(jì)量再代入到第一個(gè)式子得到 的估計(jì)??偠灾?#xff0c;給到咱們一條軌道數(shù)據(jù)就可以求出相應(yīng)參數(shù)的估計(jì)值!!!我們用MATLAB自帶的函數(shù)來生成軌道,MATLAB對(duì)CIR模型還是有一定的支持的:
model = cir(2, 1, 0.5, 'StartState', 1); [X, T] = model.simByEuler(100,'DeltaTime',0.01);以上第一行代碼創(chuàng)建了一個(gè)cir類,三個(gè)參數(shù)分別是2, 1, 0.5并且起始點(diǎn)是1。第二行調(diào)用了這個(gè)類的simByEuler方法,以0.01s為時(shí)間間隔得到100個(gè)點(diǎn),等于我們得到了一條[0,1]上以0.01為時(shí)間間隔的軌道!
接下來我寫了一個(gè)用DML方法給定一條軌道求CIR模型參數(shù)估計(jì)的函數(shù):
% DML.m function [alpha, beta, sigma] = DML(X, T) % 使用DML方法根據(jù)采樣時(shí)間 T 和 位置 X 來估計(jì) CIR 模型的三個(gè)參數(shù)% 別看這里符號(hào)亂,其實(shí)就是解上面那個(gè)方程組,你自己也可以寫一個(gè) d = diff(T); A = sum(d); B = sum(X(1: end-1) .* d); C = X(end) - X(1); D = sum(d ./ X(1: end-1)); E = sum(diff(X) ./ X(1: end-1));beta = (B - C / E * A) / (A - C / E * D); alpha = E / (beta * D - A);sigma = sqrt( mean( (...(diff(X) - alpha * (beta - X(1: end-1)) .* d ) .^ 2 ./ (X(1: end-1) .* d)))); endok,三個(gè)參數(shù)的真實(shí)值還是取為2, 1, 0.5,我們用上面的那個(gè)cir類來模擬200條軌道,然后對(duì)結(jié)果求平均數(shù):
DML_a = []; % alpha DML_b = []; % beta DML_s = []; % sigma for i = 1 : 200[X, T] = model.simByEuler(100,'DeltaTime',0.01);[alpha, beta, sigma] = DML(X, T);DML_a = [DML_a alpha];DML_b = [DML_b beta];DML_s = [DML_s sigma]; end200條軌道得到了200個(gè)參數(shù)的估計(jì)值,其結(jié)果的分布如圖:
一開始看到這個(gè)結(jié)果我以為我代碼敲錯(cuò)了,因?yàn)?
的估計(jì)有不小的偏差,其真實(shí)值只有2,但是估計(jì)出來的結(jié)果很明顯不是以2為中心的,但是 和 的求解都需要依賴 ,而后面這兩個(gè)參數(shù)估計(jì)的效果還是不錯(cuò)的,尤其是 ,可以看到它的方差還很小。DML估計(jì)法其實(shí)是個(gè)有偏估計(jì),從上面的
是可以看出一點(diǎn)端倪的。Conclusion
本文提出了一般形式的隨機(jī)微分方程的參數(shù)估計(jì)問題,對(duì)于其參數(shù)的極大似然估計(jì)方法提出了EML和DML兩種思路,并針對(duì)比較好實(shí)現(xiàn)的DML方法給出了CIR模型參數(shù)估計(jì)的代碼和示例。
接下來一篇文章我會(huì)分析DML方法的不足之處,并介紹一些能夠改進(jìn)DML方法的思路。
總結(jié)
以上是生活随笔為你收集整理的参数估计_随机微分方程的参数估计(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器虚拟化相关技术介绍,虚拟化技术介绍
- 下一篇: NSString 字符串 操作 常用