第7節 蒙卡模擬計算路徑依賴型期權價格
第7節 蒙卡模擬計算路徑依賴型期權價格
7.1 簡介
蒙特卡羅模擬計算期權價格是將股票價格變化過程離散化,通過隨機數產生器對每一小段股價變化進行抽樣,累計得到一次股價變化過程抽樣結果,然後計算出對應的期權價格。進行多次股價變化過程抽樣計算出期權價格的平均價並貼現,即為蒙卡模擬得出的期權價格。
由於抽樣股價過程可以得到完整的股價變化路徑,所以可以直接由抽樣結果得到路徑依賴型期權的價格。這是蒙特卡羅模擬計算期權價格相對於樹形計算期權價格的一個優勢。
7.2 蒙卡模擬計算回望/亞式期權價格演算法
以浮動回望看漲期權和亞式平均價格看漲期權為例。浮動回望看漲期權執行時的價格為
max
(
S
T
−
S
m
i
n
,
0
)
\max(S_T-S_{min}, \, 0)
max(ST−Smin,0),
S
T
S_T
ST為執行時刻股票價格,
S
m
i
n
S_{min}
Smin為歷史股價極小值;平均價格看漲期權執行時價格為
max
(
S
a
v
e
−
K
,
0
)
\max(S_{ave}-K,\,0)
max(Save−K,0),
K
K
K為約定執行價格,
S
a
v
e
S_{ave}
Save為歷史平均股價。
- 根據給定引數,確定股價變化離散化後過程,這裡我們使用指數形式。
S ( t + Δ t ) = S ( t ) e ( r − 1 2 σ 2 ) Δ t + ε σ Δ t , ε ∼ N ( 0 , 1 ) , Δ t = T N . S(t+\Delta t)=S(t)\,e^{(r-\frac{1}{2}\sigma^2)\Delta t+\varepsilon \sigma\sqrt{\Delta t}},\;\; \varepsilon \sim \mathcal N(0, 1), \;\; \Delta t =\frac{T}{N} . S(t+Δt)=S(t)e(r−21σ2)Δt+εσΔt,ε∼N(0,1),Δt=NT. - 由 S ( t = 0 ) = S 0 S(t=0)=S_0 S(t=0)=S0開始,依照股價離散化變化過程進行抽樣,共 N N N次。得到一條股價變化的抽樣路徑。
- 對於浮動回望看漲:由抽樣股價變化路徑計算出 max ( S T − S m i n , 0 ) \max(S_T-S_{min},\,0) max(ST−Smin,0),乘以貼現因子 e − r T e^{-rT} e−rT,得到浮動看漲期權的一次抽樣價格;對於平均價格看漲:由抽樣股價變化路徑計算出 max ( S a v e − K , 0 ) \max(S_{ave}-K,\, 0) max(Save−K,0),乘以貼現因子 e − r T e^{-rT} e−rT,得到平均價格期權的一次抽樣價格。
- 重複步驟2、3共 M M M次,對得到的期權價格取平均值,即為蒙卡模擬計算出的目標期權價格。
7.3 演算法Python程式碼實現
import numpy as np
import math
E = math.e
def sample_S_path(r, sigma, S_0, T, N):
S = S_0
path = [S]
dt = T/N
for i in range(N):
S *= E**((r-0.5*sigma*sigma)*dt+sigma*np.random.normal()*dt**0.5)
path.append(S)
return path
def MC_float_lookback_call(r, sigma, S_0, T, N, M):
call_price = 0
for i in range(M):
path = sample_S_path(r, sigma, S_0, T, N)
call_price += 1.0/M*max(0, path[-1]-min(path))
return call_price*E**(-r*T)
def MC_average_price_call(r, sigma, S_0, K, T, N, M):
call_price = 0
for i in range(M):
path = sample_S_path(r, sigma, S_0, T, N)
call_price += 1.0/M*max(0, np.average(path)-K)
return call_price*E**(-r*T)
7.4 計算示例
考慮當
r
=
0.1
,
σ
=
0.4
,
S
0
=
50
,
T
=
1
r=0.1, \; \sigma = 0.4, \; S_0 = 50, \; T=1
r=0.1,σ=0.4,S0=50,T=1,離散化步數
N
=
150
N=150
N=150,蒙卡抽樣股價變化路徑數
M
=
40000
M=40000
M=40000。且對於亞式平均價格看漲期權,執行價格
K
=
50
K=50
K=50。計算浮動回望看漲和平均價格看漲期權價格結果分別如下:
float_lookback_call = MC_float_lookback_call(0.1, 0.4, 50, 1, 150, 40000)
average_price_call = MC_average_price_call(0.1, 0.4, 50, 50, 1, 150, 40000)
print("歐式浮動回望看漲期權價格:{0:.5f}".format(float_lookback_call))
print("亞式平均價格看漲期權價格:{0:.5f}".format(average_price_call))
歐式浮動回望看漲期權價格:15.42357
亞式平均價格看漲期權價格:5.59780
7.5 相關說明
7.5.1 由均勻分佈產生正態分佈隨機數
雖然一般程式語言常用庫中都有正態分佈隨機數產生器。但有些情況下我們可能希望使用比較高質量的均勻分佈隨機數產生器來產生正態分佈樣本。一般而言,使用均勻分佈抽樣其它分佈,需要使用目標分佈的累積概率函式的逆函式,或者需要一個輔助累積概率函式加上一定概率接受抽樣。這裡針對標準正態分佈,我們介紹一下Box-Muller方法,通過抽樣兩個均勻分佈樣本來產生一個標準正態分佈樣本。
考慮
x
,
y
x, y
x,y座標上相互獨立的二維標準正態分佈,其概率密度函式為
f
(
x
,
y
)
=
1
2
π
e
−
x
2
+
y
2
2
f(x,y) = \frac{1}{2\pi}e^{-\frac{x^2+y^2}{2}}
f(x,y)=2π1e−2x2+y2。在極座標系中,
f
(
r
,
ϕ
)
=
1
2
π
e
−
1
2
r
2
f(r,\phi) = \frac{1}{2\pi}e^{-\frac{1}{2}r^2}
f(r,ϕ)=2π1e−21r2,且邊緣概率函式
F
(
r
)
=
∫
0
r
∫
0
2
π
f
(
s
,
ϕ
)
s
d
ϕ
d
s
=
∫
0
r
e
−
1
2
s
2
d
s
=
1
−
e
−
1
2
r
2
.
F(r) = \int_0^r\int_0^{2\pi}f(s,\phi)\,s\,d\phi\, ds = \int_0^r e^{-\frac{1}{2}s^2}ds=1-e^{-\frac{1}{2}r^2}.
F(r)=∫0r∫02πf(s,ϕ)sdϕds=∫0re−21s2ds=1−e−21r2.
其逆函式為
F
−
1
(
x
)
=
−
2
ln
(
1
−
x
)
F^{-1}(x) = \sqrt{-2\ln{(1-x)}}
F−1(x)=−2ln(1−x)。由於二維標準正態分佈抽樣結果的
x
x
x方向投影為一維標準正態分佈抽樣。在極座標系下我們先對徑向的
r
r
r抽樣,再對角向的
ϕ
\phi
ϕ抽樣,然後將結果投影到
x
x
x座標軸。由於
r
∼
−
2
ln
(
1
−
t
)
∼
−
2
ln
t
r \sim \sqrt{-2\ln{(1-t)}}\sim \sqrt{-2\ln{t}}
r∼−2ln(1−t)∼−2lnt,
t
t
t為
[
0
,
1
]
[0,1]
[0,1]之間均勻分佈的隨機數。 所以
x
x
x座標軸上的一個標準正態分佈抽樣結果可以表示為
−
2
ln
t
1
⋅
cos
(
2
π
t
2
)
\sqrt{-2\ln{t_1}}\cdot \cos{(2\pi t_2)}
−2lnt1⋅cos(2πt2),其中
t
1
,
t
2
t_1,\,t_2
t1,t2均為
[
0
,
1
]
[0,1]
[0,1]之間均勻分佈隨機數抽樣。
7.5.2 蒙卡模擬結果與解析解比較
參考《期權、期貨及其他衍生產品》第26章,我們知道浮動回望看漲期權價格為:
c
f
l
=
S
0
N
(
a
1
)
−
S
0
σ
2
2
r
N
(
−
a
1
)
−
S
0
e
−
r
T
(
1
−
σ
2
2
r
)
N
(
a
2
)
.
c_{fl} = S_0N(a_1)-S_0\frac{\sigma^2}{2r}N(-a_1)-S_0e^{-rT}(1-\frac{\sigma^2}{2r})N(a_2).
cfl=S0N(a1)−S02rσ2N(−a1)−S0e−rT(1−2rσ2)N(a2).
a
1
=
(
r
+
σ
2
2
)
T
σ
,
a
2
=
(
r
−
σ
2
2
)
T
σ
.
a_1 = (r+\frac{\sigma^2}{2})\frac{\sqrt{T}}{\sigma} ,\;\; a_2 = (r-\frac{\sigma^2}{2})\frac{\sqrt{T}}{\sigma} .
a1=(r+2σ2)σT,a2=(r−2σ2)σT.
代入相關引數,得
c
f
l
=
15.92343
c_{fl} = 15.92343
cfl=15.92343。
亞式平均價格看漲期權價格為:
d
1
=
ln
M
1
K
+
σ
0
2
2
T
σ
0
T
,
d
2
=
d
1
−
σ
0
T
,
M
1
=
S
0
e
r
T
−
1
r
T
,
σ
0
2
=
1
T
ln
M
2
M
1
2
.
d_1 = \frac{\ln{\frac{M_1}{K}}+\frac{\sigma_0^2}{2}T}{\sigma_0\sqrt{T}},\;\;d_2 = d_1-\sigma_0\sqrt{T},\;\; M_1 = S_0\frac{e^{rT}-1}{rT},\;\;\; \sigma_0^2 = \frac{1}{T}\ln{\frac{M_2}{M_1^2}} .
d1=σ0TlnKM1+2σ02T,d2=d1−σ0T,M1=S0rTerT−1,σ02=T1lnM12M2.
M
2
=
2
e
(
2
r
+
σ
2
)
T
S
0
2
(
r
+
σ
2
)
(
2
r
+
σ
2
)
T
2
+
2
S
0
2
r
T
2
(
1
2
r
+
σ
2
−
e
r
T
r
+
σ
2
)
.
M_2=\frac{2e^{(2r+\sigma^2)T}S_0^2}{(r+\sigma^2)(2r+\sigma^2)T^2}+\frac{2S_0^2}{rT^2}\left(\frac{1}{2r+\sigma^2}-\frac{e^{rT}}{r+\sigma^2}\right).
M2=(r+σ2)(2r+σ2)T22e(2r+σ2)TS02+rT22S02(2r+σ21−r+σ2erT).
c
a
v
e
=
e
−
r
T
(
M
1
N
(
d
1
)
−
K
N
(
d
2
)
)
.
c_{ave} = e^{-rT}(M_1N(d_1)-KN(d_2)) .\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad
cave=e−rT(M1N(d1)−KN(d2)).
代入相關引數,得
c
a
v
e
=
5.61679
c_{ave} = 5.61679
cave=5.61679。
當我們取較大的
M
,
N
M,N
M,N,比如
M
=
200
,
N
=
640000
M=200,\;N=640000
M=200,N=640000時,蒙卡模擬計算出的
c
f
l
∗
=
15.35872
,
c
a
v
e
∗
=
5.55239
c_{fl}^\ast = 15.35872,\; c_{ave}^\ast = 5.55239
cfl∗=15.35872,cave∗=5.55239,和解析解直接計算出的結果很接近。
7.6 參考資料
- 《期權、期貨及其他衍生產品》,John C. Hull 著,王勇、索吾林譯。
相關文章
- 模擬積體電路設計系列部落格——7.5.2 週期型ADC
- rpath增添依賴庫搜尋路徑
- AI依賴算力,而算力依賴能源AI
- xcode6模擬器路徑XCode
- 計算upload路徑
- 3.1 spring5原始碼系列--迴圈依賴 之 手寫程式碼模擬spring迴圈依賴Spring原始碼
- JavaScript商品價格打折計算器JavaScript
- Google 能擺脫路徑依賴,不只做一個廣告公司麼?Go
- 計算兩個路徑的父親路徑
- ABAP模擬Java Spring依賴注入(Dependency injection)的一個嘗試JavaSpring依賴注入
- 函式計算安裝依賴庫方法小結函式
- 芝加哥期權交易所希望降低比特幣期貨合約價格比特幣
- 從“路徑依賴”談ERP實施的阻力及策略(上)(轉)
- 從“路徑依賴”談ERP實施的阻力及策略(下)(轉)
- 決策方法 | 計算預期價值
- 【計算機網路·第7版-學習筆記】第02章:物理層計算機網路筆記
- [1483. 樹節點的第 K 個祖先] 【路徑】
- Unity中的光源型別(向前渲染路徑進行光照計算)Unity型別
- 模擬積體電路設計系列部落格——7.5.6 時間交錯型ADC
- SQL如何實現查詢節點依賴SQL
- JavaScript 購物車自動計算價格JavaScript
- JavaScript購物車計算商品總價格JavaScript
- 如何編寫計算機模擬器計算機
- 依賴管理和依賴範圍
- 彈性計算雙週刊 第24期
- 彈性計算雙週刊第21期
- 彈性計算雙週刊第17期
- 函式計算|如何使用層解決依賴包問題?函式
- 依賴
- 模擬積體電路設計系列部落格——6.2.5 毛刺
- iPhone 7國行價依舊是5288元起步 型號首次曝光iPhone
- 第1章 計算機網路的概述——計算機網路計算機網路
- 依賴注入的很好的一個部落格例子依賴注入
- 7月模擬賽
- 依賴倒置(DIP)與依賴注入(DI)依賴注入
- 蘋果良心價:iPhone 7價格下調?蘋果iPhone
- 購物車自動計算商品總價格
- 根據商品數量自動計算價格