蒙特卡洛模擬金融衍生產品定價_第1頁
蒙特卡洛模擬金融衍生產品定價_第2頁
蒙特卡洛模擬金融衍生產品定價_第3頁
蒙特卡洛模擬金融衍生產品定價_第4頁
蒙特卡洛模擬金融衍生產品定價_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第8章 蒙特卡洛模擬金融衍生產品定價 本章介紹蒙特卡洛模擬期權定價的內容,要求讀者掌握隨機數生成方式,了解蒙特卡洛定價就是模擬風險中性測度下標的資產的運動過程,學會蒙特卡洛方法模擬歐式期權定價,掌握提高模擬精度的常用方法。8.1 隨機模擬基本原理 1977年,菲力埔伯耶勒(Phelim Boyle)提出了模擬方法求解金融資產定價問題,其想法是假設資產價格分布是隨機波動,如果知道了這個波動過程,就可以通過隨機模擬不同的路徑,每做完一次模擬,就產生了一個最終資產價值,再進行若干次這樣的過程,那么所得到的結果就是一個最終的資產價值分布,從這個分布中我們可以得到期望的資產價格。8.1.1 隨機數生成函

2、數1均勻分布隨機數生成函數MATLAB中的unidrnd函數可以生成1到N的均勻分布隨機數。 調用方式R=unidrnd(N);R=unidrnd(N,m);R=unirnd(N,m,n);其中,N所要生成的隨機數個數,m確定輸出隨機矩陣R的行數,n確定輸出隨機矩陣R的列數2生成服從連續均勻分布的隨機數如果需要生成服從連續分布的隨機數,則需調用unifrnd函數,其調用格式為調用方式1Runifrnd(A,B)生成位于A、B之間的一個隨機數。調用方式2Runifrnd(A,B,m)生成位于A、B之間的隨機數。m=m1,m2表示行數列數。調用方式3Runifrnd(A,B,m,n),m,n分別表

3、示行數、列數unifrnd(1,2,5,6),unifrnd(1,2,5,6)812 生成正態分布隨機數 調用方式R=normrnd(mu,sigma)R=normrnd(mu,sigma,m)R=normrnd(mu,sigma,m,n)813 特定分布隨機數發生器 MATLAB中有統一格式的隨機數發生器,函數名稱為random,可生成許多服從不同分布的隨機數。y=random(name,A1,A2,A3,m,n)表8.1 生成特定分布的隨機數函數參數表beta分布:beta,二項分布:bino,卡方:chi2,指數分布:exp,F-分布:f, Gamma:gamLognormal:logn

4、, uniform:unif;Poisson:poiss,T:t;Normal-norm;Noncentral F -ncf, Noncentral-nct814 蒙特卡洛模擬方差削減技術蒙持卡洛模擬精度與模擬次數密切相關,模擬次數越高其精度越高,但是次數增加又會增加計算量。實踐證明明減少模擬方差可以提高穩定性,減少模擬次數。有很多種方法可以減小方差,如對偶變量技術、控制變量技術、分層抽樣、矩匹配、條件蒙特卡洛模擬等,但最簡單并且應用最為廣泛的是對偶變量技術與控制變量技術。 對偶變量技術就是先隨機抽樣得到一組數據,然后以此為基礎構造出另一組對偶變量。下面以正態分布為例介紹對偶變量技術。首先從正

5、態分布變量中隨機抽取N個樣本值,分別為,由此可以得到個模擬值,那么衍生證券蒙特卡洛估計值為 以為基礎,構造對偶隨機數,是與相互對偶的隨機數,由正態分布的性質知,也是服從正態分布,由對偶隨機數生成的估計值為對和取平均得到新的估計如果隨機抽樣的樣本模擬得到的估計值比較小,那么與之對偶的隨機抽樣樣本得到的估計值可能會偏大,二者的平均值就可能會接近真實值。如果,那么從上面的不等式可以看出,利用對偶技術可以增加估計穩定性,提高了估計精確度。8.1.5 隨機模擬控制變量技術 摔制變量技術就是將與所估計的未知變量密切相關的另一個已知量的真實值和估計值之間的差異作為控制量,以提高估計精度。在定價實踐中,將這兩

6、種衍生證券用相同的隨機抽樣樣本和時間間隔,實施同樣的蒙特卡洛模擬過程,能夠得到兩個模擬估計值,以第二種衍生證券真實值與估計值之間的差異作為控制變量,最后得到第一種衍生證券的蒙特卡洛估計值。 假定是需要估汁的第一種衍生證券的價值,是價值容易估計的第二種衍生證券的價值,第一種證券與第二種證券相似,而和分別是第一種衍生證券和第二種衍生證券在同樣的隨機抽樣樣本的蒙特卡洛估計值,那么利用控制變量技術得到第一種衍生證券的價格估計值為這里就是控制變量,它實際上是第一種衍生證券的蒙特卡洛模擬的估計誤差,且上述方程的方差之間的關系為 如果,一定有因此,當兩種衍生證券的協方差很大時,或者當兩種衍生證券的價格高度相

7、關時,上述關系是成立的,兩種衍生證券的正相關性越強,估計效率越理想。然的從實際應用的角度看,這種控制變量技術的應用十分有限,因此,下面是更一般的控制變量技術,其控制變量的形式為方差為 這是關于控制變量系數的二次三項式,下面的目標是能夠找到特殊的使方差最小.這時只要取就可以保證方差最小,這種控制變量技術的缺點是需要提前知道協方差的信息,而這一般需要靠經驗實現。8.2 蒙持卡洛方法模擬期權定價(編程)考821 蒙特卡洛方法模擬歐式期權定價在期權計算中,我們可以利用風險中性的方法計算期權的價格。風險中性定價形式如下:其中,是期權的價格,是到期日的現金流,是風險中性測度。 如果知道了風險中性測度就可以

8、模擬全路徑,也可模擬終端價格,例如計算障礙期權等路徑依賴型期權時可以模擬全路徑,而歐式期權可模擬終端價格。如果標的資產服從幾何布朗運動 那么風險中性定價的關鍵在于尋找風險中性測度。對于幾何布朗運動,可以證明風險中性測度下,標的資產運動過程如下:對于歐式看漲期權,到期日歐式看漲期權現金流如下:其中,是執行價,是無風險利率,是標準差,是正態分布的隨機變量。對到期日的現金流用無風險利率貼現,就可以知道期權的價格。*(考)【例8-1】假設股票價格服從幾何布朗運動,股票現在價格,歐式期權執行價,無風險利率,股票波動的標準差,期權的到期日,試用蒙特卡洛模擬方法計算該期權價格。下面用MATLAB編寫一個子程

9、序blsmc進行計算function eucall,varprice,ci=blsmc(s0,K,r,T,sigma,Nu)% 蒙特卡洛方法計算歐式看漲期權的價格% 輸入參教% sO:股票價格% K:執行價% r 無風險利率% sigma 股票波動的標準差% Nu 模擬的次數% 輸出參數% eucall: 歐式看漲期權的價格% varprice模擬期權價格的方差% ci 95概率保證的期權價格區間randn(seed,O);%定義隨機數發生器種子是0,這樣可以保證每次模擬的結果相同nuT=(r-0.5*sigma2)*T;sit=sigma*sqrt(T);discpayoff=exp(-r*

10、T)*max0,s0*exp(nuT+sit*randn(Nu,l)-K);%期權到期時的現金流eucall,varprice,ci=normfit(discpayoff)調用子程序可得到歐式看漲期權價格。c,var,ci=blsmc(50,52,0.1,5/12,0.4,1000)c = 5.44452285431324449ci = 4.877583065095581從上面的結果可以看到,蒙特卡洛模擬得到的期權價格為5.4445,樣本正態擬合的方差為9.1361,95的置信區間為4.8776,6.0115,模擬波動的區間還是很大的。我們用了normfit函數對模擬的結果用正態分布函數進行擬

11、合,這不是必需的,主要是為了考察模擬結果的穩定性,如果不需要考察結果是否穩定,也可直接對模擬的結果求均值。此時可將最后一句改為price=mean(discpayoff)。歐式期權的公式解如下:call,put= blsprice(50,52,0.1,5/12,0.4)put = 5.068933121521976公式解5.1911和模擬值5.4445二者之間還是存在較大的差距,增加模擬的次數為10000次時結果如下:c,var,ci=blsmc(50,52,0.1,5/12,0.4,10000)var = 8.933464757068791ci = 4.958672541451405 5.3

12、08900319557867模擬結果入5.1338,可以看到期權模擬精度有了顯著提高,95%的的置信區間為4.9587,5.3089,置信區間較1000時大大縮小,模擬可靠性增加。下面用對偶方法計算歐式看漲期權的價格。function eucall,varprice,ci=dul_blsmc(s0,K,r,T,sigma,Nu)% 蒙特卡洛方法計算歐式看漲期權的價格(對偶法)% 輸入參教% sO:股票價格% K:執行價% r 無風險利率% sigma 股票波動的標準差% Nu 模擬的次數% 輸出參數% eucall: 歐式看漲期權的價格% varprice模擬期權價格的方差% ci 95概率保

13、證的期權價格區間randn(seed,O);%定義隨機數發生器種子是0,這樣可以保證每次模擬的結果相同nuT=(r-0.5*sigma2)*T;sit=sigma*sqrt(T);rand=randn(Nu,1);discpayoff=exp(-r*T)*max(0,s0*exp(nuT+sit*rand)-K);discpayoff1= exp(-r*T)*max(0,s0*exp(nuT+sit*(-1)*rand)-K);%期權到期時的現金流duleucall,dulvarprice,dulci=normfit(discpayoff;discpayoff1)調用子程序可得到歐式看漲期權價

14、格。c,var,ci=dul_blsmc(50,52,0.1,5/12,0.4,10000);結果如下c =var = 8.902468445392321ci = 5.086032462943382 5.332806699308480模擬的結果為5.2094,離精確值5.19l1非常接近,說明對偶技術還是非常有效的822 蒙特卡洛方法模擬障礙期權定價障礙期權是特殊形式的期權,例如確定一個障礙值,在期權的存續期內有可能超過該價格,也有可能低于該價格,對于敲出期權而言,如果在期權的存續期內標的資產價格觸及障礙值時,期權合同可以提前終止執行;相反地對于敲入期權麗言,如果標的資產價格觸及障礙值時,期權

15、合同開始生效。注意障礙值可以低于標的資產現在的價格,也可以高于。如果稱為上漲期權,反之稱為下跌期權。對于下跌敲出看跌期權,該期權首先是看跌期權,股票價格是,執行價是,買入看跌期權就首先保證以執行價賣掉股票,下跌敲出障礙期權相當于在看跌期權的基礎上附加提前終止執行的條款,內容是當股票價格觸及障礙值時看跌期權就提前終止執行。因為該期權對于賣方有利,所以其價格應低于看躍期權的價格。下面考慮下跌敲入看跌期權,同樣地該期權首先是看跌期權,下跌敲入期權相當于在看跌期權的基礎上,附加何時生效的條款,內容是當股票的價格觸及障礙值時,看跌期權開始生效,綜合地看,標準的看跌期權合同可以拆分為兩份產品,分別是下跌敲

16、出看跌期權與下跌敲入看躍期權,用公式表示如下其中,是標準看跌期權價格,與分別表示下跌敲入看跌期權與下跌敲出看跌期權的價格。如果下跌敲出看跌期權提前終止時賣方補償一些費用給買方,上述公式表示的平價義系就就不再有效。當障礙值確定時,障礙期權存在公式解,其形式如下:其中,是股票價格,是障礙值,是看跌期權執行價,是存續期,是無風險利率,是波動率的標準差,其他參數如下:a=(Sb/S0)(-1+2*r/sigma2); b=(Sb/S0)(1+2*r/sigma2);d1=(log(S0/K)+(r+sigma2/2)*T)/(sigma*sqrt(T);d2=(log(S0/K)+(r-sigma2/

17、2)*T)/(sigma*sqrt(T);d3=(log(S0/Sb)+(r+sigma2/2)*T)/(sigma*sqrt(T);d4=(log(S0/Sb)+(r-sigma2/2)*T)/(sigma*sqrt(T);d5=(log(S0/Sb)-(r-sigma2/2)*T)/(sigma*sqrt(T);d6=(log(S0/Sb)-(r+sigma2/2)*T)/(sigma*sqrt(T);d7=(log(S0*K/Sb2)-(r-sigma2/2)*T)/(sigma*sqrt(T);d8=(log(S0*K/Sb2)-(r+sigma2/2)*T)/(sigma*sqrt(

18、T);利用上面的公式編寫下跌敲出障礙期權價格的程序如下 function P=DownOutPut(S0,K,r,T,sigma,Sb)a=(Sb/S0)(-1+2*r/sigma2); b=(Sb/S0)(1+2*r/sigma2);d1=(log(S0/K)+(r+sigma2/2)*T)/(sigma*sqrt(T);d2=(log(S0/K)+(r-sigma2/2)*T)/(sigma*sqrt(T);d3=(log(S0/Sb)+(r+sigma2/2)*T)/(sigma*sqrt(T);d4=(log(S0/Sb)+(r-sigma2/2)*T)/(sigma*sqrt(T);

19、d5=(log(S0/Sb)-(r-sigma2/2)*T)/(sigma*sqrt(T);d6=(log(S0/Sb)-(r+sigma2/2)*T)/(sigma*sqrt(T);d7=(log(S0*K/Sb2)-(r-sigma2/2)*T)/(sigma*sqrt(T);d8=(log(S0*K/Sb2)-(r+sigma2/2)*T)/(sigma*sqrt(T);P=K*exp(-r*T)*(normcdf(d4)-normcdf(d2)-a*(normcdf(d7)-normcdf(d5).-S0*(normcdf(d3)-normcdf(d1)-b*(normcdf(d8)-

20、normcdf(d6);【例8-2】我們考慮一個歐式看跌股票期權。股票的價格為50,看跌期權執行價為50,無風險利率為0.1,時間為5個月,股票年波動率的標準差為0.4。首先公式的解如下:S0=50;K=50;r=0.1;T=5/12;sigma=0.4;call,put=blsprice(S0,K,r,T,sigma)call =put = 4.075980984787780 看跌期權價格為4.076. 對于上述看跌期權,進一步地,我們考慮障礙值等于40時下跌敲出期權的價格:P=DownOutPut(S0,K,r,T,sigma,40)P = 由于該下跌敲出看跌期權提供的條件過于優厚,買方承

21、受大量風險,作為回報價格較看跌期權便宜許多。 下面用蒙特卡洛方法模擬下跌敲出看跌期權價格,在模擬中我們給出了模擬次數為NRep1,每次模擬時間分為NSteps步離散,障礙值為變量Sb,其現金流如下: 當時,CashFlow=0。我們可以先模擬路徑,然后讓小于Sb的路徑的現金流為0,程序如下:% DOPutMC(s0,k,r,T,sigma,sb,NSteps,NRep1)function P,aux,CI= DOPutMC(s0,k,r,T,sigma,sb,NSteps,NRep1)% 利用蒙特卡洛方法對歐式下跌敲出期權定價% 輸入參數% sO:股票價格% k:執行價% r 無風險利率% T

22、:期權存續期 % sigma 股票波動的標準差% Sb 障礙值% NSteps 時間離散數目% NRepl: 歐式看漲期權的價格% varprice模擬期權價格的方差% ci 95概率保證的期權價格區間% 輸出參數% P 下跌敲出看跌期權價格% CI 蒙特卡洛摩尼的方差% NCrossed 價格的95%-置信區間% 用蒙特卡洛方法模擬風險中性下股價路徑dt=T/NSteps;nudt=(r-0.5*sigma2)*dt;sidt=sigma*sqrt(dt);randn(seed,0);rand=randn(NRep1,NSteps);rand1=nudt+sidt*rand;rand2=cu

23、msum(rand1,2);% 沿列方向逐列累加path=s0*exp(rand2);% 利用路徑進行定價payoff=zeros(NRep1,1);for i=1:NRep1ax=path(i,:); if min(ax)sb payoff(i)=0; %如果路徑中的任意一點價格低于障礙值,現金流為0 else payoff(i)=max(0,k-ax(NSteps); endendP,aux,CI=normfit(exp(-r*T)*payoff);%P為期權價格運行程序:s0=50;k=50;r=0.1;T=5/12;sigma=0.4;sb=40;NSteps=600;NRep1=10

24、000;P,aux,CI=DOPutMC(s0,k,r,T,sigma,sb,NSteps,NRep1)P = 0.592069149986891aux = 1.668695291705626CI = 0.559359363792887 0.624778936180894該期權模擬的價格為0.5594,和前面的公式解0.5424尚存在差距,增加模擬次數,代碼如下:s0=50;k=50;r=0.1;T=5/12;sigma=0.4;sb=40;NSteps=600;NRep1=20000;P,aux,CI=DOPutMC(s0,k,r,T,sigma,sb,NSteps,NRep1)aux =

25、1.602236168134015CI =結果和公式解比較接近,如果將存續期改為2/12年,再考察其價格變化,代碼如下:P,aux,CI=DOPutMC(s0,k,r,2/12,sigma,sb,60,50000)P = 1.352650569271812aux = 2.366421196429638CI = 1.3733932865983958.2.3 蒙特卡洛方法模擬亞式期權定價亞式期權是一種路徑依賴型期權,它的收益函數依賴于期權存續期內標的資產的平均價格。平均價格分算術平均和幾何平均兩種,對于離散算術平均價格定義為 (8.1)其中是離散時間樣本點。 離散幾何平均價格定義為 (8.2)亞式

26、看漲期權到期現金流為其中,是執行價,是時刻的股價。【例8-3】股票價格為50,亞式看漲期權執行價為50,存續則為5個月,期權到期現金流是每月均價與執行價之差,股票波動率的標準差為0.4,無風險利率為0.1,下面用蒙特卡洛方法計算該亞式期權價格:該期權定價程序為:% DOPutMC(s0,k,r,T,sigma,sb,NSteps,NRep1)function P,aux,CI= AsianMC(s0,k,r,T,sigma,NSteps,NRep1)% 利用蒙特卡洛方法對亞式期權定價% 輸入參數% sO:股票價格% k:執行價% r 無風險利率% T:期權存續期 % sigma 股票波動的標準

27、差% NSteps 時間離散數目% NRepl:模擬路徑數% 輸出參數% P 下跌敲出看跌期權價格% CI 蒙特卡洛模擬的方差% NCrossed 價格的95%-置信區間% 用蒙特卡洛方法模擬風險中性下股價路徑dt=T/NSteps;nudt=(r-0.5*sigma2)*dt;sidt=sigma*sqrt(dt);randn(seed,0);rand=randn(NRep1,NSteps);rand1=nudt+sidt*rand;rand2=cumsum(rand1,2);% 沿列方向逐列累加path=s0*exp(rand2);% 利用路徑進行定價payoff=zeros(NRep1,

28、1);for i=1:NRep1 payoff(i)=max(0,mean(path(i,:)-k);endP,aux,CI=normfit(exp(-r*T)*payoff); 運行程序s0=50;k=50;r=0.1;T=5/12;sigma=0.4;NSteps=5;NRep1=50000;P,aux,CI= AsianMC(s0,k,r,T,sigma,NSteps,NRep1)P =aux = 5.966879973484831CI = 3.909871203577914這是一個比較粗糙的估計,我們可以用控制變量(control variable)技術提高估計精度。構造顯然它和收益函

29、數是相關的,而,這樣用控制變量法可以將前面的程序改為% AsianMCCV.mfunction P, CI= AsianMCCV(S0,X,r,T,sigma,NSamples,NRep1,NPilot)% 利用蒙特卡洛方法對亞式期權定價% 輸入參數% sO:股票價格% X:執行價% r 無風險利率% T:期權存續期 % sigma 股票波動的標準差% NSample 取樣數目% NRepl:模擬路徑數% Npilot: 路徑數目% 輸出參數% P 下跌敲出看跌期權價格% CI 蒙特卡洛模擬的方差% 用蒙特卡洛方法模擬風險中性下股價路徑 TryPath=AssetPaths1(S0,r,sig

30、ma,T,NSamples,NPilot);%生成路徑StockSum=sum(TryPath,2);PP=mean(TryPath(:,2:(NSamples+1),2);TryPayoff=exp(-r*T)*max(0,PP-X);MatCov=cov(StockSum,TryPayoff);c=-MatCov(1,2)/var(StockSum);dt=T/NSamples;ExpSum=S0*(1-exp(NSamples+1)*r*dt)/(1-exp(r*dt);% MCControlVars=zeros(NRep1,1);for i=1:NRep1 StockPath=Asse

31、tPaths1(S0,r,sigma,T,NSamples,1); Payoff(i)=exp(-r*T)*max(0,mean(StockPath(2:(NSamples+1)-X); ControlVars(i)=Payoff(i)+c*(sum(StockPath)-ExpSum);end P,aux,CI=normfit(ControlVars);function Spaths=AssetPaths1(S0,mu,sigma,T,NSteps,NRep1)dt=T/NSteps;nudt=(mu-0.5*sigma2)*dt;sidt=sigma*sqrt(dt);Increments

32、=nudt+sidt*randn(NRep1,NSteps);LogPaths=cumsum(log(S0)*ones(NRep1,1),Increments,2);Spaths=exp(LogPaths);下面是控制變量模擬的結果:randn(seed,0);P,CI=AsianMCCV(50,50,0.1,5/12,0.4,5,45000,50000)計算結果為P = 3.980870822887436CI = 4.003607140229710根據前面蒙特卡洛模擬的結果有randn(seed,0);P,aux,CI=AsianMC(50,50,0.1,5/12,0.4,5,50000)a

33、ux = 5.966879973484831CI = 3.909871203577914可以看出控制變量使得估計的置信區間縮小了。8.2.4 蒙特卡洛模擬經驗等價勒測度等價鞅理論是金融衍生品定價的重要方法,衍生品價格就是在等價鞅測度下對衍生品現金流用無風險利率貼現,可以用下面方程表示:其中,表示股票價格,為無風險利率,表示0時刻信息,表示等價敬測度下的期望算子。 Duan和simonate(1998)提出了乘數調整法,該方法可以保證等價鞅性質,當標的資產服從幾何布朗運動時,等價鞅下的資產運動滿足下列條件:其中,這樣模擬的第條路徑為這時我們可以構造一個等價鞅測度測度實際上在第條路徑的權重上乘以,當樣本容量趨于無窮大時有是風險中性測度下的新樣本。對于例8-1我們重新編寫程序如下%function Emseucall,Var,CI=Emsmc(s0,K,r,T,sigma,Nu)% 蒙特卡洛經驗等價鞅方法計算歐式看漲期權的價格% 輸

溫馨提示

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

評論

0/150

提交評論