第七章二叉樹和三叉樹的期權定價方法_第1頁
第七章二叉樹和三叉樹的期權定價方法_第2頁
第七章二叉樹和三叉樹的期權定價方法_第3頁
第七章二叉樹和三叉樹的期權定價方法_第4頁
第七章二叉樹和三叉樹的期權定價方法_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第七章 期權定價的二叉樹和三叉樹方法 在這一章中,我們利用二叉樹和三叉樹方法為期權定價。在第2.1節中我們已經介紹了利用基礎途徑的二叉樹方法解決期權價格不確定性的模型。二叉樹方法依賴于對相關隨機過程的離散化并利用計算和內存的結合以滿足易于管理的要求。我們也在節中看到在一個單步二叉樹格定價中利用無套利進行期權定價更為簡便。為了獲得一個實用的定價程序,我們必須把原來的單步格方法擴展到多步格方法,但是我們必須校對格使它能夠反映出相關模型,且這個模型是連續時間、連續狀態的隨機微分方程。然后我們就可以推廣到多步的二叉樹格和三叉樹格。 在7.1節中,我們從如何利用在離散概率分布的時刻下隨機價格波動校準簡單

2、的二叉樹格。從這點來看,弄清楚網格技術和蒙特卡洛模擬之間的聯系是非常重要的,而利用時刻匹配技術縮減方差可以看作一種快捷的抽樣排序。然后我們討論內存效率的實現是如何設計的,美式期權定價是7.2節的主題。同時,還是要注重它和其他技術方法的聯系。現在我們要做的本質上是一個非常簡單滿足動態規劃原則的程序,我們將在第10章程序中進一步拓展。在7.3節中,我們把上述方法推廣到雙標的資產的情形,雖然這是一個最簡單的情形,但是我們可以從這個情形中看出內存控制是這一情形的基礎。另一種一般化的代表是三叉樹格方法,三叉樹格方法可以作為一種更普遍的有限差分方法(具體將在中敘述),最后,我們在7.5節中具體討論網格化方

3、法的優勢和劣勢。期權定價的二叉樹和三叉樹格方法 圖7.1 單時期二叉樹格7.1 二叉樹定價方法 在節中,我們已經考慮過單步二叉樹方法在無套利情況下的期權定價,這里我們為了方便直接利用圖7.1。其主要思想是復制兩個資產,一個是無風險資產,另一個是相關股票。利用這兩項資產,我們可以通過它們的組合塑造任何收益率的資產。如果我們令和為任意兩個價格的角標,我們可以看到期權的價格應該為則, (7.1)在公式7.1中和是標的資產在漲跌兩種情況的期權價格,是風險中性前提下相關資產升值的概率。為了尋找一個更好的不確定性模型,我們可以增加分類的情況,復制期權收益,甚至我們可以使用更多的資產,或允許中間日期交易。第

4、二種可能性更為實際,并且也是必不可少的,例如,對于在期權的存續期內可以隨時執行的美式期權來說。對其求極限,就會得到連續時間模型,并且其最后收斂于Blacksholes方程。當Blacksholes方程沒有解析解的時候,我們必須采取一些離散化的途徑,比如說可以通過蒙特卡洛模擬從而估計出風險中性條件下預期收益,或者建立一個自適應網格的有限差分方法去解決相應的PDE模型。就像我們在圖7.2中展示的一樣,多級二叉樹格方法就是一種可以選擇的離散化方法。我們也可以考慮利用樹圖,但是要注意使計算方法易于控制。二叉樹格定價圖7.2 新生成的二叉樹圖這里我們為了方便令。雖然這個不是必須的,但是在后面我們可以看到

5、,這個假設令模型簡化了很多即每上一步緊接著下一步都會得到相同的初始價格。正如我們從圖中看到的一樣,我們僅用了有限個價格步。這個有可能就是實施該方法的優勢。但是,我們該怎么恰當的確定和的值呢,我們應該利用近似相關的連續過程去校對網格。二叉樹格的校對二叉樹格方法應該是風險中性過程一個良好的相似。因此,我們應以這樣的方式參數設置晶格,即保持著連續時間模型的一些基本屬性,這一過程就叫做校準。從開始,經過一個小的時間步,從2.5節我們可以看到新價格是一個隨機變量,且利用對數正態對數分布的特性,我們得到 (7.2)和 (7.3)一個合理的要求是這些離散的動態點必須和它們的時刻相匹配。要注意的是,我們只有兩

6、個個等式,卻有3個參數,p,u和d,所以三個變量有一個為自由變量,我們令,這樣做是為了計算簡便,但不是必須的。在網格點上,我們有:,和(7.2)聯立得 注意,是風險中性條件下的概率,它不依賴于真實浮動,為了和方差匹配,在晶格上我們看到從(7.3)中我們也可以看到把最后兩個等式聯立可得最終得到將帶入最后一個等式的右側,化簡得最后我們得到這樣的等式其中,利用,可以轉化為二次方程:方程的一個跟為利用一階條件拓展,只受的影響,我們可以簡化表達式,對平方根近似化簡可得因此但是對于二階條件,我們對拓展,最終獲得參數 , , , (7.4)這就是著名的CRR公示這里強調一下:這個方法以及文獻中所用的參數都不

7、是唯一的,例如我們可以取,經計算可得:, , 這就是杰諾-拉德參數,此外,我們一直在努力結束涉及計算以及線性方程組的計算,通過對數轉換的方法,我們盡量的避免這些困難。在以后,我們都將采用這個方法。 假設無風險利率和波動是時間常數,我們所得的結果適用于整個晶格參數,為一個期權定價,我們需要對標的資產制定一個網格,然后從以往的時間倒推。事實上,期權價格在到期日的時候已經知道了,那時已經給出了期權的收益。因此,我們利用方程(7.1)按每一個時間步倒推遞歸,直到到達我們的初始節點。二叉樹格方法在歐式看漲期權得到最佳的應用。例7.1假設我們假設為一個歐式看漲期權定價,存續期為5個月,利用B-S模型,我們

8、知道結果是:>>>>如果我們想用二叉樹格方法逼近結果的話,我們首先就要定義格參數,假定每個時間步為一個月,然后對股票價格產生的格和選項值顯示在圖7.3,在晶格的最右面是期權的價格,為了便于計算,讓我們考慮如何從最后一層至第二層逐層倒推:在遞歸后,我們看到,由此計算出的期權價格大約為6.36,結果不太接近確切價格,一個更好的改進近似就是縮小時間步長。為了更好的在MATLAB中實現這一方法,我們需要一個向前倒推的代數式。令為在節點的期權的價值,其中j為第j個時期 ,i表示為在j時期內上升了i。我們利用倒推思想,N是我們考慮的時間步,因此總共有N+1格,即整個期權存續期。在這

9、樣的定義下,晶格點的標的資產價格即為,在存續期內,我們有: , 時間逆推(下降時間標j),我們得到 (7.5)這些工作在MATLAB中生成非常簡單,代碼在圖7.4給出,唯一要注意的一點是,矩陣索引在MATLAB中要從一開始,這需要一個微小的調整。7.3 歐式看漲期權的二叉樹格 function price, lattice = LatticeEurCall(SO,K,r,T,sigma,N) deltaT = T/N; u=exp(sigma * sqrt (deltaT) ; d=l/u; p=(exp(r*deltaT) - d)/(u-d) ; lattice = zeros(N+l,N

10、+l); for i=O:N end for j=N-1 : -1 : 0 for i=O:j lattice(i+l,N+l)=max(O , SO*(u-i)*(d-(N-i) - K); lattice(i+l,j+l) = exp(-r*deltaT) * . (p * lattice(i+2,j+2) + (1-p) * lattice(i+l,j+2); end end price = lattice(1,l) ; 圖7.4 MATLAB代碼為歐式看漲期權定價歐式看漲期權接收到通常我們所定義的參數和在此情況下的時間步N,通過增加最后一個參數,我們得到了更為精確的價格(同一計算時間的

11、增加)。>>>> 6.3595>>>> 6.1140更有趣的是探討二叉樹方法計算的價格如何收斂于正確價格的。我們可以通過圖7.5的代碼和圖7.6的結果輸出來看出。在這種情況下,我們看到隨著時間步的增加的震蕩情況。我們剛才討論的執行結果也有一些缺陷。首先,它使用的是一個大型的矩陣存儲格,但是其中近一半為空,我們把返回的整個存儲格作為一個輸出參數,這個也許對與之相關的圖7.3非常有用,但是可能在實際運用中毫無作用,實際上為我們只需要連續的兩個存儲層存儲所需資料就能有所改善。在內循環中,我們用貼現系數乘以時間的風險中性概率,我們可以通過循環外計算節省時

12、間。我們將努力在7.3節中進行改進,在下一節中,我們將把二叉樹方法運用到其它非標準型期權定價中。 C0mpLatticeBLS.m SO = 50; K = 50; r = 0.1; sigma = 0.4; T = 5/12; N=50 ; BlsC = blsprice (SO,K,r ,T, Sigma) ; LatticeC = zeros(1,N); for i=(l:N) end plot(l:N, ones(l,N)*BlsC); hold on; plot(l:N, LatticeC); Latt iceC (i) = Latt iceEurCal1 (SO, K , r ,

13、T, sigma, i) 圖7.5 腳本檢查減少的二叉樹格的精確性圖7.6 二叉樹方法中精確價格和增加了時間步后相似價格的差距 把倆者結合起來,為后付費期權定價在這里,我們無紅利股票的付費后期權 這個例子是建立在(參考文獻5 第13章 練習11)。后付費期權的特點是預先不支付擔保金,當合約成立以后,將在以后支付。如果期權的存期滿后,則期權必須執行,并歸還擔保金,否則期權就毫無價值可言,因為沒有擔保金。請注意,期權持有者的凈盈利可以是負數,當期權的收益小于擔保金的時候就會出現凈盈利為負。在無套利的情況下,如果凈回報總是為負,我們不能擁有一份在時刻價值為0的合約,我們怎么樣才能找到公平的擔保金價值

14、呢?給出一個擔保金為,則回報是:對于每一個給定的價格,我們都可以利用二叉樹方法算出期權價格,現在我們必須尋找到一個值,使得在風險中性的前提下,于相關的期望回報為0:注意這里的貼現因子,因為利率是恒定的,因此貼現因子并沒有任何作用。為了解決這個含的方程,我們對晶格利用二分法解決非線性方程組(見節)。首先,我們建立一個函數對給定條件下的期望進行估計;MATLAB代碼在圖7.7中給出。讓我們考慮一個標的資產為股票的期權,股票的價格為12美元,波動率為20%;無風險利率為10%;執行價格為14美元;存續期為10個月。我們用二叉樹方法為其定價,取時間步長為一個月,所以總共有10個時間步。當給定的時候,我

15、們可以建立匿名函數返回貼現后的回報。然后我們利用二分法,以fzero為出發點進行探討。>>f = (PI Lll(P,12,14,0.1, 0.2, 10/12, 10) f = (P) Lll(P,l2,14,0.1, 0.2, 10/12, 10) >> fzero(f ,2) ans 2.0432 exercise 11 chapter 13 from Luenberger, Investment Science % exercise 11, chapter 13, from Luenberger, Investment Sciencefunction ExpPa

16、yoff = L11(premium,S0,K,r,sigma,T,N)deltaT = T/N;u=exp(sigma * sqrt(deltaT);d=1/u;p=(exp(r*deltaT) - d)/(u-d);lattice = zeros(N+1,N+1);for i=0:N if (S0*(ui)*(d(N-i) >= K) lattice(i+1,N+1)=S0*(ui)*(d(N-i) - K - premium; endendfor j=N-1:-1:0 for i=0:j lattice(i+1,j+1) = p * lattice(i+2,j+2) + (1-p)

17、 * lattice(i+1,j+2); endendExpPayoff = lattice(1,1); 圖7.7 用二叉樹方法為后支付期權定價的MATLAB代碼 二叉樹方法的一個執行改進我們原來使用過的改進后的二叉樹方法現在也可以改進了(從CPU運行時間和內存要求上)。首先,循環中沒有必要重復計算貼現的概率,我們可以乘以貼現因子和概率一次來計算。此外,我們可以看到,隨著對二叉樹晶格的校準,即令ud=1,我們可以使用向量而不是二維矩陣來記憶資產價格從而節約存儲。例如在圖7.3中,我們看到只有11個不同的值用于標的資產價格。用此種格校準,如果有N個時間步,則我們就有了2N+1個不同的價格。因此,

18、他們可以存儲在單一列中,可以節省相當大的存儲空間。如果我們需要1000步來準確估計,那么1000*1000的矩陣就和2001項的向量有了很大的差距。一個可行性方案存儲價格的方法可以見圖7.8。這些數字如圖所示是在矢量的位置。1是存儲中的最小值,造成步驟序列是下跌序列。我們可以看到奇數項對應的是最后一層,偶數項對應的是倒數第二層。在格上是奇數還是偶數取決于時間步。圖7.8 節省存儲的二叉樹格 同樣方法可以用來存儲期權價值。原則上,我們應該使用倆個向量對應時間的連續倆個層。但是,我們可以利用讓偶數的元素一層,奇數的元素另一層,這樣就可以使用含有2N+1個元素的向量了。由此產生的代碼可以看圖7.9。

19、下面是我們上述工作的一些評論。 *我們預先計算的,包括貼現概率等等的數量不變(在代碼第一部分)。 *當我們編寫標的資產價格的載體SVals時,我們從最小的元素開始,即;然后乘以u;為了更好的準確性,最好把存到中間元素SVals(N+1)中,然后繼續正推或者倒推。 *注意的是我們在與調用值(通過索引)計算的時候分為2步,其數額為交替奇數和偶數索引值連續對應層。 *當到期時間為T的時候,我們只須考慮CVals數組中的2(N-T)+1個核心元素。期權的價格是儲存在格中的,它對應的是與之相對應的格位置。我們可以檢查一下一個計算上更有效率的版本。 blsprice(50,50,0.1,5/12,0.4)

20、 ans = function price = SmartEurLattice(S0,K,r,T,sigma,N)% Precompute invariant quantitiesdeltaT = T/N;u=exp(sigma * sqrt(deltaT);d=1/u;p=(exp(r*deltaT) - d)/(u-d);discount = exp(-r*deltaT);p_u = discount*p;p_d = discount*(1-p);% set up S valuesSVals = zeros(2*N+1,1);SVals(1) = S0*dN;for i=2:2*N+1 S

21、Vals(i) = u*SVals(i-1);end% set up terminal CALL valuesCVals = zeros(2*N+1,1);for i=1:2:2*N+1 CVals(i) = max(SVals(i)-K,0);end% work backwardsfor tau=1:N for i= (tau+1):2:(2*N+1-tau) CVals(i) = p_u*CVals(i+1) + p_d*CVals(i-1); endendprice = CVals(N+1);SVals(i) = u*SVals(i-l); CVals(i) = max(SVals(i)

22、-K,O) ; for i= (tau+l):2: (2*N+l-tau) end CVals(i) = p-u*CVals(i+l) + p-d*CVals(i-l) ; end price = CVals(N+l);6.1165 >> tic,LatticeEurCa11(50,50,0.1,5/12,0.4,2000,toc)ans = 6.1159 Elapsed time is 0.262408 seconds. >> tic,SmartEurLattice(50,50,0.1,5/12,0.4,2000),toc ans = 6.1159 Elapsed t

23、ime is 0.069647 seconds. 圖7.9 歐式看漲期權二叉樹方法的改進代碼 我們可以通過矢量代碼尋求進一步的改善,或者采取不同的方法。我們不會追求這樣的方法以避免模糊的代碼,但是我們把握容易的方法以尋求進一步改進。也許在節省CPU處理時間上效果并不明顯,但是當處理多維期權定價的時候對內存的節省就顯得非常必要。7.2 用二叉樹方法對美式期權定價 利用二叉樹技術為美式期權定價我們已經在上一節講過,是相當簡單的。唯一個關鍵點就是如何解釋早期的運動 相對應的看漲期權我們不敢興趣,因為我們可以證明,美式看漲期權提前執行時沒有意義的,除非在期權存續期內存在股息支付。在這里,我們解決的是標

24、的資產為無紅利支付股票的普通美式看跌期權的定價問題。考慮在最后一個晶格層的點(1,N)。如果期權獲利,這顯然是最佳的執行點。因此,在最后一層我們有:是該節點的標的資產價格。現在我們考慮一個在倒數第二層的點。如果期權沒有獲利即,我們就不執行。如果期權已經盈利,我們就想知道是現在立即執行好,還是將來在某個機會執行獲取更大的收益更好。換句話說,我們必須解決一個最優停止問題,在每個時間步上,我們必須觀察這個動態系統,從而決定是否應該立即執行,以保持現有收益,或者繼續存有期權。解決這個問題有個簡單的方法,就是通過比較直接的回報(期權的內在價值)和繼續持有的價值。如果我們繼續持有資產,我們擁有的資產價值為

25、:(備注:相應的看漲期權我們不感興趣,因為可以證明,提前執行是從來沒有最優選擇的,除非股息在期權的存續期支付。)這里和都是風險中性概率,我們應該執行,如果內在價值大于繼續持有的價值。因此期權在從第二到最后一層節點上的價值為同樣的事情會在任意層的遞歸過程中發生。這意味著,我們應該從最后一層開始,在那里期權的價值就是期權的收益。然后我們應該對時間倒推通過對通常期望稍加修改的方程(7.5) (7.6)這種想法看似簡單,但它是一個所謂動態規劃原則的普遍運用。我們將會在第10章看到動態規劃原則在理論上多么的有效,但是有時卻由于”維數災”而很難運用。在二叉樹格中,我們使用了一個對相關隨機過程的簡單離散化,

26、動態規劃看起來微不足道。事實上,我們的推理有些誤導,因為我們已經采取了期權持有的觀點是愿意行使其期權的最佳狀態。但我們要問為什么我們只注重預期價值,而忽略風險厭惡。一個嚴謹的理由其實沒那么簡單,它應該包括無套利理論和期權賣方應該也關系他最糟糕的情況,就是期權持有人最優化執行他的期權。撇開理論的問題,其實很容易采用我們已經做出來的歐式看漲期權和美式看跌期權。結果代碼顯示在圖7.10.我們以不同的方式輕微初始化晶格,但唯一顯著的變化就是后面的時間步長,我們比較了持有價值和內在價值。金融工具箱為我們提供了一個binprice函數,利用該函數可以給普通美式看漲和看跌期權定價且允許連續紅利。我們可以通過

27、比較美式看跌期權格定價和binprice去檢驗我們的實現:>> SO = 50; >> K = 50; >> r = 0 . 0 5 ; >> T = 5/12; >> sigma = 0.4; >> N = 1000; >> price = AmPut Lattice (SO, K, r , T , sigma, N) price = >> p, 01 = binprice(SO,K,r,T,T/N,sigma,O); 4.6739 416 OPTION PRICING BY BINOMIAL A

28、ND TRINOMIAL LATTICES function price = AmPutLattice(SO,K,r,T,sigma,N) % Precompute invariant quantities deltaT = T/N; u=exp(sigma * sqrt(de1taT) ; d=l/u; p=(exp(r*deltaT) - d)/(u-d) ; discount = exp(-r*deltaT); p-u = discount*p; p-d = discount*(l-p) ; % set up S values SVals = zeros (2*N+1,1> ; S

29、Vals(N+l) = SO; for i=l:N SVals(N+l+i) = u*SVals(N+i); SVals (N+l-i) = d*SVals (N+2-i) ; end % set up terminal values PVals = zeros (2*N+1,1) ; for i=1:2:2*N+1 end % work backwards for tau=l:N PVals(i) = max(K-SVals(i) ,O) ; for i= (tau+l) :2: (2*N+l-tau) hold = p-u*PVals(i+l) + p-d*PVals(i-l); PVal

30、s(i) = max(hold, K-SVals(i); end end price = PVals(N+l); 圖7.10 二叉樹方法為美式看跌期權定價的matlab代碼。>> o ( l , l ) ans = 4.6739該函數binprice需要一個標志,表明如果選擇看跌(標志設置為0)或選擇看漲(標志設置為1)。此條件為上面條件的一個快速反應。這里計算函數binprice需要期權的存續期T和時間步長,令。我們忽略了可用于分紅比例的期權參數。輸出的binprice是倆個價格,一個是標的資產的價格,一個是期權的價值;重要的一點是當時間步很小的時候,利用分號控制屏幕上的輸出。7

31、.3 利用二叉樹方法為雙標的期權定價為了說明晶格技術擴展到多維期權,這里我們考慮兩種資產的美式利差期權。這種期權的回報為:基本方法可以推廣到許多種期權,但是不包括強依賴路徑的期權。為了進一步推廣,我們也考慮持續股息收益率和。其實我們并沒有對問題進行很大的改變,因為我們只是調整了風險中性的動態,這里我們關于它的方程(2.42)。這里兩個維納過程是相互關聯的,且(見節)為了避免我們在校準過程中涉及到非線性問題所遇到的困難,我們對資產價格進行對數化處理。令 ,利用伊藤引理,我們得到兩個隨機微分方程:這里現在,作為典型的二叉樹格,我們假設這兩個資產上升或者下降在價格方面的對數數額為,校準格。我們對一

32、,二階的距進行匹配。這兩只股票可能上行或者低走。因此每個節點有4個數值和4個概率,。我們首先需要一個關于增量預期的匹配條件:這里我們要區別隨機變量和他們的現值。然后我們需要一個相似的二階條件: ,這里我們用到了常用恒等式,我們也忽略了高階無窮小的。當概率趨近于1的時候,這些方程將被極大的簡化:, 我們還應該說明協方差,以及與它等價的交叉向量:現在我們對4個未知概率有4個等式:這些方程可以通過反轉矩陣解決,或者通過適當的線性方程組組合。得出:這些條件有個直觀的解釋。就是當相對波動較大的時候,與其正相關的概率也跳躍較大。例如在向上浮動,向下浮動的概率下,即成為一個負標志(即向上浮動越大,就越向下跳

33、),并呈負相關關系,使得這一聯動成為可能,類似的考慮也適合于p, d ,u 。即當p,d,u越小,正相關的浮動就越大。二叉樹格方法的需要仔細的內存管理控制,因為我們不能隨意的存儲一個多維矩陣。由于上線倆個資產的浮動的絕對值是相同的,我們就可以利用我在已在中相同的方法。由此產生的代碼將顯示在圖7.1.1中(參數不言自明)。首先我們計算不變的量。注意,在二叉樹方法中,我們運用的是價格,不是價格的對數。因此,上升的價格為:這里。概率的百分號在主循環之外。兩個相關資產的價值存儲在兩個向量S1val和S2vals,這個定價的方法完全相似于對普通期權的定價。期權的價格將存儲于二叉樹格矩陣中,這個矩陣經過期

34、權收益的初始化,這里令i指資產1,j指資產2。我們可以用兩個連續的一次矩陣,因此奇數層和偶數層都是連續層且交替使用。因為這是一個美式期權,我們在風險中性的前提下計算出來的繼續持有的價值要和與期權的內在價值進行比較。為了檢測執行的具體情況,我們用下面這個例子 該例子引用于(藏考文獻一 p47-51)>> s10 = 100; >> s20 = 100; >> K = 1; >> r = 0 . 0 6 ; >> sigmal = 0.2; >> sigma2 = 0.3; >> rho = 0.5; >&g

35、t; q l = 0.03; >> q2 = 0.04; >> AmSpreadLattice (S10 ,S20 ,K,r ,T, sigmal , sigma2,rho ,ql .q2,N) >> T = 1; >> N = 3 ; ans = 10.0448 function price = AmSpreadLattice 610, S20 ,K ,r ,T, sigma1 , sigma2 ,rho ,ql, q2, N) 1 Precompute invariant quantities deltaT = T/N; nu1 = r -

36、ql - 0.5*sigmal-2; nu2 = r - q2 - 0.5*sigma2-2; ul = exp(sigmal*sqrt(deltaT) ; dl = l / u l ; u2 = exp(sigma2*sqrt(deltaT); d2 = l/u2; discount = exp(-r*deltaT) ; p-uu = discount*O.25*(1 + sqrt(deltaT)*(nul/sigmal + nu2/sigma2) + rho); p-ud = discount*O.25*(1 + sqrt(deltaT)*(nul/sigmal - nu2/sigma2)

37、 - rho); p-du = discount*0.25*(1 + sqrt(deltaT)*(-nul/sigmal + nu2/sigma2) - rho); p-dd = discount*O.25*(1 + sqrt(deltaT)*(-nul/sigmal - nu2/sigma2) + rho); % set up S values Slvals = zeros(2*N+l,l); S2vals = zeros(2*N+1,1) ; Slvals(1) = SlO*dl-N; S2vals(l) = S20*d2-N; for i=2:2*N+1 Slvals(i) = ul*S

38、lvals(i-l) ; S2vals(i) = u2*S2vals(i-l) ; end % set up terminal values Cvals = zeros(2*N+1,2*N+i); for i=1:2:2*N+1 for j=1: 2 : 2*N+1 end end % roll back for tau= 1 : N Cvals(i, j) = max(Slvals(i)-S2vals(j)-K,O); for i= (tau+l) :2: (2*N+l-tau) for j= (tau+l) :2: (2*N+l-tau) hold = p-uu * Cvals(i+l,j

39、+l) + p-ud * Cvals(i+l,j-1) + . p-du * Cvals(i-l,j+l) + p-dd * Cvals(i-1,j-1); Cvals(i,j) = max(ho1d. Slvals(i) - S2vals(j) - K); end end end price = Cvals(N+l,N+l); 圖7.11 利用二叉樹方法給美式利差期權定價的matlab代碼 顯然,三個步驟是不夠獲得可以接受的近似結果的,但是通過層與層檢查,并通過這個例子了解矩陣Cvals管理存儲格。在matlab中,我們可以逐步調試,就可以顯示我們得到的基本信息。最初的晶格是為清晰度準備的,

40、我們用一個星號標記其中無關的數據(當顯示與調試你會看到一些數字有Cvals):經過一次循環,一次次逼近結果,相關數據是:請注意,新的價值是作為臨近4個值的平均值獲得的,其中存儲的數據在下一時間層,然后回到一個步驟,我們有:格中最后的結果為:我們可以看到,我們正在處理一個金字塔結構的遞歸排序工作,我們經歷了一個比較小的可以接受的內存浪費。圖7.12單時段三叉樹7.4 三叉樹方法定價在二叉樹上衍生三叉樹想法是十分自然的。每個節點有3個下節點,即價格向上,向下和保持不變(這只是一種可能的選擇)。晶格的校準以這樣一種方式以便重組和匹配基本連續隨機變量的前兩個時刻。增加的新自由度,可用于改善銜接或提出額

41、外條件。這種方法的最大作用是對障礙期權,我們可以在晶格中求障礙值。這里非常方便的處理隨機微分過程。經過一個小的時間步,我們有3個方向移動,相對應的價格對數增量形式為,0, 三種,與之相應的價格本身的乘法。這三種等價的方向對應的風險中性概率為,和。樹圖的結構見圖7.12。這里給出一般方程: ,這里,我們寫出這時刻相對應的方程為:求解得:圖7.12 單步三叉樹圖7.13 三叉樹方法的全例 我們看到更多的自由度來決定。事實上,這證明了我們可以獨立的選擇和。通常我們取。這種關系在我們處理有限差分的時候非常好用。我們也應該注意到,一個隨意的取值會導致負的概率。作為一個例子,我們考慮給一個標的資產為無紅利

42、支付股票的偶是看漲期權定價:,,以及。如果我們建一個的三叉樹格,我們得到圖7.13,這里:, , 實現這一三叉樹算法的MATLAB代碼見圖7.14.像往常一樣,概率的百分比不計入主循環。這里我們有個觀察數據是必需的,不像二叉樹,我們必須儲存倆個連續的時間層,因為在奇數列和偶數列之間沒有互換。從此,我們使用的是兩列數組有2n + 1行,其中的列的作用可能在現在或將來。我們利用增量模2交換的作用兩個層次:是由變量索引了解和kthen,對值1和2交替。下面是改進后格計算:>> S O =100 ; >> K=100; >> r=0.06; >> T =

43、 l ; >> sigma=0.3; >> deltaX = 0.2; >> EuCallTrinomial(SO,K,r,T,sigma,N,deltaX) ans = >> N=3; 14.6494 function price = EuCallTrinomial(SO,K,r,T,sigma,N,deltaX) % Precompute invariant quantities deltaT = T/N; nu = r - 0.5*sigma-2; discount = exp(-r*deltaT) ; p-u = discount*0.5

44、*(sigma2*deltaT+nu2*deltaT-2)/deltaX2 + . nu*deltaT/deltaX) ; p-rn = discount*(l - (sigma2*deltaT+nu2*deltaT-2)/deltaX-2); p-d = discount*0.5*(sigma2*deltaT+nu2*deltaT2)/deltaX2 - . . . % set up S values (at maturity) Svals = zeros(2*N+l, 1) ; Svals(1) = SO*exp(-N*deltaX); exp-dX = exp(de1taX); for

45、j=2: 2*N+1 Svals(j) = exp-dX*Svals(j-1) ; end % set up lattice and terminal values Cvals = zeros(2*N+1,2); t = mod(N,2)+1; for j=1:2*N+1 end for t=N-1 : -1 : 0 ; nu*delt aT/delt ax) ; Cvals(j ,t) = rnax(Svals(j)-K,O); know = mod(t.2)+1; knext = mod(t+l,2)+1; for j = N-t+l:N+t+l Cvals(j ,know) = p-d*

46、Cvals(j-l,knext)+p-m*Cvals(j,knext)+. . . p-u*Cvals(j+l,knext); end end price = Cvals(N+1,1); 圖7.14 利用三叉樹為歐式看漲期權定價的MATLAB代碼我們注意到對的選擇是為了方便應用。如下看到的經驗法則有一定的道理:>> blspr ice (SO, K , r , T, sigma) ans = 14.7171 >> N=100; >> deltaX = 0.2; >> EuCallTrinomial(SO,K,r,T,sigma,N,delta)() ans = 14.0715 >

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論