您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python怎么利用蒙特卡羅模擬期權(quán)定價的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python怎么利用蒙特卡羅模擬期權(quán)定價文章都會有所收獲,下面我們一起來看看吧。
期權(quán)是一種合約,它賦予買方在未來某個時間點以特定價格買賣資產(chǎn)的權(quán)利。 這些被稱為衍生品的合約的交易有多種原因,但一種常見的用法是來對沖當(dāng)資產(chǎn)價格以不利方式變動,所產(chǎn)生的風(fēng)險敞口。
期權(quán),即買入或賣出的權(quán)利,也是有價格的。 Black Scholes 模型描述了一種確定期權(quán)公平價格的方法,但還有許多其他方法可以確定價格。
歐式期權(quán)只有在未來達到預(yù)定日期(稱為到期日)后才能使用(或行使),可以用字母 T 表示。
看漲期權(quán)賦予期權(quán)持有人以已知價格購買的權(quán)利。 如果資產(chǎn)的到期價格(用 ST 表示)高于執(zhí)行價格 K ,則看漲期權(quán)會賺錢,否則就一文不值。
CT=max(0,ST−K)
同樣,看跌期權(quán)是出售資產(chǎn)的權(quán)利。 當(dāng)資產(chǎn)在到期日價格ST低于執(zhí)行價格K時,看跌期權(quán)會賺錢,否則就一文不值。
PT=max(0,K−ST)
以下是到期時看跌期權(quán)和看漲期權(quán)的收益圖。 我們的資產(chǎn)價格是 x 軸,收益是 y 軸。
為了使用蒙特卡羅模擬為期權(quán)定價,我們使用風(fēng)險中性估值,其中衍生品的公允價值是其未來收益的預(yù)期價值。
因此,在到期前的任何日期,用 t 表示,期權(quán)的價值是其到期收益預(yù)期的現(xiàn)值 T 。
Ct=PV(E[max(0,ST−K)])
Pt=PV(E[max(0,K−ST)])
在風(fēng)險中性估值下,我們假設(shè)標(biāo)的資產(chǎn)將平均獲得無風(fēng)險利率。 因此,要計算任何時間 t 的期權(quán)收益,我們要按該利率對收益進行貼現(xiàn)。 現(xiàn)在我們有一種計算現(xiàn)值 PV 的方法。
上面的公式中,除了St ,所有這些變量都是已知的,因此St是我們的模擬將提供的。
為了給期權(quán)定價,我們將創(chuàng)建一個模擬,為資產(chǎn) St 最終價格提供許多觀察結(jié)果。 通過平均所有的回報,我們得到了對回報的期望值。
Black Scholes 模型中使用的股票價格行為模型假設(shè)我們有一個已知的波動性,我們有一個無風(fēng)險利率,并且資產(chǎn)的價格遵循幾何布朗運動。
幾何布朗運動是一個隨機過程,其中隨機變量的對數(shù)服從正態(tài)分布。 這種類型的過程通過對數(shù)正態(tài)分布來分配價格。
所以現(xiàn)在我們有一個計算時間 T 時刻資產(chǎn)價格的方法:
為此,我們需要知道:
r 是我們要貼現(xiàn)的無風(fēng)險利率。 σ 是波動率,即股票回報的年化標(biāo)準(zhǔn)差。 (T-t) 給了我們年化的到期時間。 例如,對于 30 天選項,這將是 30/365=0.082... S 是在時間 t 標(biāo)的資產(chǎn)的價格。 ? 是我們的隨機值。 它的分布必須是標(biāo)準(zhǔn)正態(tài)(均值為 0.0,標(biāo)準(zhǔn)差為 1.0)
為了在模擬過程中為期權(quán)定價,我們生成資產(chǎn)可能在到期時的許多價格,計算每個生成價格的期權(quán)收益,將它們平均,然后對最終價值進行貼現(xiàn)。
在創(chuàng)建完整模擬之前,我們將通過一個包含10次運行的小示例。假設(shè)我們有一個具有以下價值的資產(chǎn):S = 100.00 美元和 σ = 20%,我們想為半年到期的看漲期權(quán)定價,執(zhí)行價為 110.00 美元,我們的無風(fēng)險利率是 1%。
隨機變量 | 資產(chǎn)價格 | 收益 | 貼現(xiàn)收益 |
---|---|---|---|
1.3620 | 120.64 | 10.64 | 10.58 |
-0.7784 | 89.13 | 0.00 | 0.00 |
-0.9408 | 87.11 | 0.00 | 0.00 |
0.2227 | 102.69 | 0.00 | 0.00 |
-0.0364 | 98.99 | 0.00 | 0.00 |
-1.4303 | 81.28 | 0.00 | 0.00 |
-0.8306 | 88.47 | 0.00 | 0.00 |
1.5155 | 123.28 | 13.28 | 13.21 |
-1.5679 | 79.71 | 0.00 | 0.00 |
-1.6718 | 78.55 | 0.00 | 0.00 |
將折扣收益值平均,得出我們的看漲期權(quán)價格為 2.38 美元。 我們執(zhí)行的模擬越多,價格就越準(zhǔn)確。
現(xiàn)在我們可以看到模擬如何生成價格,讓我們構(gòu)建一個可以為期權(quán)定價的小型 Python 腳本,看看它是否與真實情況相符。 讓我們看一下實際的例子。
在下圖中,我們有一個谷歌看漲期權(quán)的報價,行使價為 860.00 美元,將于 2013 年 9 月 21 日到期。我們還可以看到它的最后交易價格是14.50 美元。這個例子給了我們嘗試定價時,期權(quán)的一個目標(biāo)價格。
此處未指定的是波動性、無風(fēng)險利率、當(dāng)前的股票價格。 波動率是一個相當(dāng)復(fù)雜的話題,因此就本文而言,我們將假設(shè)我們知道該特定期權(quán)的波動率為 20.76%。而股票當(dāng)前價格可以通過查看各種來源找到,為857.29 美元。
對于無風(fēng)險利率,我們可以使用與我們選擇的到期時間相同的美國 LIBOR 利率; 我們的期權(quán)在大約三周后到期,由于沒有三周利率,我們將使用兩周利率來近似,即 0.14%。
接下來是Python代碼的實現(xiàn),首先我們將寫下我們將如何生成資產(chǎn)價格。
def generate_asset_price(S,v,r,T): return S * exp((r - 0.5 * v**2) * T + v * sqrt(T) * gauss(0,1.0))
我們知道所有的輸入值,所以我們可以像這樣設(shè)定它們:
S = 857.29 # underlying price v = 0.2076 # vol of 20.76% r = 0.0014 # rate of 0.14% T = (datetime.date(2013,9,21) - datetime.date(2013,9,3)).days / 365.0 print generate_asset_price(S,v,r,T) >>> 862.1783726682384
現(xiàn)在我們需要能夠計算這個生成價格的回報。 回想一下之前我們說過看漲期權(quán)在到期時價值是 ST-K 或 0,我們將其表示為一個函數(shù),并應(yīng)用于我們生成的資產(chǎn)價格。
def call_payoff(S_T, K): return max(S_T - K, 0.0) print call_payoff(862.18, 860) >>> 2.1799999999
現(xiàn)在讓我們將各模塊代組合,并為 Google 期權(quán)定價。
import datetime from random import gauss from math import exp, sqrt def generate_asset_price(S,v,r,T): return S * exp((r - 0.5 * v**2) * T + v * sqrt(T) * gauss(0,1.0)) def call_payoff(S_T,K): return max(0.0,S_T-K) S = 857.29 # underlying price v = 0.2076 # vol of 20.76% r = 0.0014 # rate of 0.14% T = (datetime.date(2013,9,21) - datetime.date(2013,9,3)).days / 365.0 K = 860. simulations = 90000 payoffs = [] discount_factor = math.exp(-r * T) for i in xrange(simulations): S_T = generate_asset_price(S,v,r,T) payoffs.append( call_payoff(S_T, K) ) price = discount_factor * (sum(payoffs) / float(simulations)) print 'Price: %.4f' % price
程序運行結(jié)果如下,這與我們在市場上觀察到的此 Google 期權(quán)的價格相匹配。
Price: 14.5069
需要注意的是,我們剛剛計算的谷歌期權(quán)實際上是一個美式期權(quán),我們只是把它定價成歐式期權(quán),沒有考慮期權(quán)可以提前行權(quán)的可能性,盡管如此,我們?nèi)匀坏贸隽苏_的價格。
這是因為,非派息股票(例如文中舉例的 Google)的美式看漲期權(quán)的價格與歐式看漲期權(quán)的價格相同。理論上,當(dāng)股票不支付股息時,提前行權(quán)并不是最佳選擇。 如果期權(quán)永遠不會提前行權(quán),那么美式期權(quán)的價格可以像歐式期權(quán)一樣進行計算。
關(guān)于“Python怎么利用蒙特卡羅模擬期權(quán)定價”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Python怎么利用蒙特卡羅模擬期權(quán)定價”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。