Professional Documents
Culture Documents
財務工程與精算數學系
金融計算
(Financial Calculation)
授課教師:鄭宏文 博士
金融資訊管理 - 分析與系統設計/姜林杰祐/新
陸書局
VBA 介紹
什麼是「巨集」(Macro) ?
一推指令的集合。
運用VBA製作符合個人需求的巨集,代替我們執
行重複性的工作,提升工作效率。
VBA編輯器回到試算表的方法
按快速鍵『 Alt + F11』。
點選功能表指令『檢視/Microsoft Excel』。
可直接按工具列左上方有Excel圖示『檢視 Microsoft Excel 』。
直接『關閉』。
程式碼視窗中顯視的就是《Module1》的程式碼。
《 Microsoft Excel 物件》下的成員,程式碼為空白。
換個角度看,此項投資一年後帶給你106元的現金流量,但
是目前的價值是100元,這是因為你可以在市場上用100元
購入此定期存單。因此,隱含的折現率為y,可由下式求得:
106
100 y 6%. (2.2)
1 y
1 一般化
可改寫成: 100 106 PV DFt CFt . (2.3)
1 6%
執行後,出現對話盒,顯示現值100元。
在[ ] 內的部份是可省略的,當省略時,變數會被
宣告成變量型態(Variant)的變數,其內容可以是數
值、文字、日期、物件等。
1
DFt Act
(2.5)
1 yt 365
(2.4)與(2.5) 針對新台幣的折現方式,並不適用於美元。因美元市場是
以一年360天來計息。
整數除法運算子 ( \ ):執行整數除法之前,會先將被除數及除數四
捨五入成 Integer 或 Long 的資料型態,運算結果的小數點部分將被
無條件捨去,所以傳回的結果是一個屬於 Integer 或 Long 資料型態
的數值。
取餘數的算術運算子 ( mod ):運算結果是傳回整數除法所得到的
餘數。
Financial Calculation 2-16
Excel VBA 的敘述與運算(3/8)
比較運算子:可用來比較數值或字串,結果有兩種情況:
成立時,傳回真(True 或 -1)。
不成立時,傳回偽(False 或 0)。
運算子 說明 表示方式 結果
= 等於 X=Y 10 = 10 True 或 -1
非 且 或
A B NOT A A AND B A OR B
F F T F F
F T T F T
T F F F T
T T F T T
執行結果:
• tmp3的內容是100,資料型態是”Double”。
• tmp4的內容是”5050”,資料型態是”String”。
P = CF / (1 + y * T / 365)
MsgBox P
End Sub
P = CF / (1 + y ) ^ T
MsgBox P
End Sub
連續複利計算的程式碼:
Public Sub ExpApproximate ()
Dim N As Double
Dim ans As Double
N = InputBox("Input N: ")
ans = (1 + 1 / N ) ^ N
MsgBox ans
End Sub
D E
WACC: WACC
V
r
V
r. D E
2
C
NPV: NPV C (1 r ) . 0
t 1
t
t
輸入不同 x 值,看逼近的現象。
X 0.1 0.01 0.001 10^-4 10^-5 10^-6 10^-9
1
e lim 1 x .
x
x 0
常態分配與對數常態分配
𝑋~𝑁 𝜇, 𝜎 2 的機率密度函數:
( x )2
1
f ( X | X x) e 2 2
. (3.2)
2
𝑋~𝑁 0, 1 為標準常態分配之機率密度函數:
x2
1 2
f ( X | X x ) ( x) e . (3.3)
2
Financial Calculation 3-3
VBA 的常用函數(1/3)
區分四大類:數值函數、文字函數、日期函數及輸出、入
函數。
數值函數:
數值函數 指令
ye x
Exp(x)
y log( x) Log(x)
y x Sqr(x)
y xz Pow(x, z)
y x Abs(x)
將字串轉換成數值 Val(x)
y Round 數值 , 指定位置
將數值根據指定位置進行四捨五入後值傳回 Round(x)
(i) 若未指定位置,以小數點位置進行四捨五入 Round(x, n)
(ii)若指定位置(n 1),表示將小數點之後n位數進行四捨五入
y x ,高斯函數
Int(x)
傳回小於或等於指定數值的整數
日期函數:
日期函數 指令
傳回系統日期,也就是電腦今天的日期 Date
傳回系統現在的日期與時間 Now
將指定的日期的西元年份傳回 Year(Date)
將指定的日期的月份(1-12)傳回 Month(Date)
將指定的日期的日(1-31)傳回 Day(Date)
輸出、入函數:
輸出、入函數 指令
將傳入的字串顯示在對話盒中, MsgBox
將傳入的字串為提示,顯示一對話盒等待使用者輸入文字,並傳回此輸入的字串 InputBox
函數(Function)程序:由一些VBA 敘述組成,執行
計算工作並可傳回一個資料。
函數程序在執行結束時,可以透過將資料指定函數名稱
的方式傳回資料。
• Sub 程序則沒有此功能。
變數宣告區段
指令敘述組合
函數名稱 運算式
End Sub
[Private|Public]:
Public(預設值):使用此宣告程序除了可被該模組內其他程序呼叫執行,
還可被專案內其他模組呼叫執行。
Private:只能被該模組內其他程序呼叫執行。
傳遞的參數:傳遞多個參數時,要用逗號 ”,” 隔開。
傳值:(Passed by Value, ByVal)
傳址(預設值):(Passed by Address, Passed by Reference, ByRef)
變數宣告區段
指令敘述組合
函數名稱 運算式
End Function
傳遞的參數:傳值呼叫、傳址呼叫
函數名稱:內容最後透過指定敘述 ”=”,將運算的結果指
定給函數名稱,然後再傳回給呼叫這個函數的程序或函數
。
Financial Calculation 3-10
函數程序(2/3)
Example 3.2:一個用來計算圓面積的函數,另一個則用來
呼叫函數的Main程序。
Public Function CircleArea(radius As Double)
CircleArea = 3.1415 * radius ^ 2
End Function
MsgBox "The area of a circle with radius " & Str(r) & " is " & CircleArea(r)
End Sub
(Book4.xls)
對於𝑁(𝑥)可用多項式來求近似值:۞
N ( x) (3.5)
1 N ( x),
x 0.
1
其中𝑘 = ,𝛼 = 0.33267, 𝑎1 = 0.4361836,
1+𝛼𝑥
1 2 /2
𝑎2 = −0.1201676, 𝑎3 = 0.9372980, 且 𝑁′ 𝑥 = 𝑒 −𝑥 .
2𝜋
CF = InputBox(“CF Amount”)
Maturity = InputBox(“CF Maturity (西元/月/日)”)
Rate = InputBox(“Discount Rate”)
Today = Date
CF = InputBox(“CF Amount”)
Maturity = InputBox(“CF Maturity (西元/月/日)”)
Rate = InputBox(“Discount Rate”)
Today = Date
部份工作表的物件屬性可由VBA的屬性視窗中看
到。
如果用名稱來分類,Excel提供了大約300種與工作
表有關的物件所能使用的方法。
代表工作簿內儲存格範圍的Range物件,便有常用的
『複製』、『剪下』、『貼上』、『插入』、『尋找』
等方法。
如果用名稱來分類,Excel提供了大約48種與活頁
簿、工作表、圖表等物件所能使用的事件。
代表選取工作表內不同儲存格範圍的SelectionChange事
件
代表作用工作表被切換為非作用工作表的Deactivate事
件等。
VBA code與工作表都在Excel應用程式內,可簡化:
• Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
VBA code在Book1專案下,可簡化:
• Worksheets(“Sheet1”).Range(“A1”)
Sub ShowValue()
Dim Content As Single
Content = Worksheets(“Sheet1”).Range(“A1”).Value
MsgBox Content
End Sub
將資料值由A1格Value的屬性讀出,以輸出盒顯示
Sub SetValue()
ChangeValue
ShowValue
End Sub
(Book5.xls)
Financial Calculation 將兩個程序合併執行 3-27
VBA 試算表的讀寫(3/11)
常用範圍物件:
物件 格式 範例
MsgBox Range("A1:C3").Count
Count Read Only,顯示範圍內儲存格之數目
共有9個儲存格
MsgBox Sheets("Sheet1").Range("F3").Row
Column 或 Row Read Only,傳回儲存格所在之行或列
第3列
Sub copyRange()
Range("A1:A12").Select
Selection.copy
將A1:A12選取,並拷貝至C1格
Range("C1").Select
ActiveSheet.Paste
Copy & Paste End Sub
Sub copyRange1()
直接拷貝A1:A12到C1格 Range("A1:A12").copy Range("C1")
End Sub
回到工作表區,點選『開發人員/插入/按鈕』,在工作表拖曳出一
個區塊,此時指定巨集的對話框自動出現。
選取ButtonTest巨集,便將按鈕事件與巨集的執行連結起來。
爾後,只要按Button便會執行該巨集。
MsgBox y
End Sub
(Book6.xls/Sheet2)
Financial Calculation 3-35
VBA 試算表的讀寫(11/11)
在VBA 中撰寫程式碼時,對函數的使用有三種選擇:
優先,使用VBA函數
其次,使用工作表函數
最後,使用自行撰寫函數
VBA的對數函數為Log(),工作表的對數函數為Ln()。在
VBA中呼叫Log()是最快的,因此不應使用Ln()。
上面原則中,對於自行撰寫函數部分,可能有判斷空間。
有時Excel提供的函數較不精確,此時自行撰寫便有其必要
性。
如,Excel 提供的累積機率密度函數 NormSDist,可能精確度上無
法滿足要求,便可以找更好的演算法來自行撰寫需要的函數。
指令敘述組合
[Exit for]
Next [計數變數]
n
累積加總計算的範例: Sum k .
k 1
利用Sub程序
利用Function程序
工作表3:比照p.3-39的方式,將標準常態
𝑋~𝑁 0, 1 機率密度函數改成𝑋~𝑁 1, 4 的機率密度
函數,計算𝑋~𝑁 1, 4 的PDF及CDF函數工作表讀
寫。
Financial Calculation 3-40
第四章
Black-Scholes定價公式
衍生性金融商品的價格受到標的資產價格所影響,它的風險來自標的
資產。以股票選擇權為例,買權價格:
C f ( S , t ). (4.2)
Financial Calculation 4-3
歐式股票選擇權定價公式(2/2)
歐式買權 (C) 和賣權 (P) 價格公式:
C SN (d1 ) Ke rT N (d 2 ), (4.3)
P Ke rT N (d 2 ) SN (d1 ), (4.4)
其中
ln( S / K ) (r 2 / 2)T (4.5)
d1 ,
T
ln( S / K ) (r 2 / 2)T
d2 d1 T ,
T (4.6)
S:目前股票價格,
K:執行價格,
r:無風險利率,
T:距到期日的時間。
Financial Calculation 4-4
Black-Scholes 程式與繪圖(1/5)
將之前撰寫的標準常態分配機率密度函數、累積機率密度函數等程式碼,放在Module1
中,以備其他程序的呼叫。
並將買權及賣權公式寫成函數。
Const Pi = 3.14159265358979
Public Function NorPdf(d As Double) As Double
NorPdf = Exp(- d * d / 2) / Sqr(2 * Pi)
End Function
Public Function NorCdf(d As Double) As Double
Dim ans As Double, g As Double
Const a1 = 0.4361836
Const a2 = -0.1201676
Const a3 = 0.937298
g = 1 / (1 + 0.33267 * d)
If d >= 0 Then
ans = 1 - (a1 * g + a2 * g^2 + a3 * g^3) * NorPdf(d)
Else
ans = 1 - NorCdf(-d)
End If
NorCdf = ans
End Function
Public Function Op_Cvalue(S As Double, K As Double, T As Double, sig As Double, r As Double) As Double
Dim d1 As Double, d2 As Double
d1 = (Log(S / K) + (r + sig^2 / 2) * T) / (sig * Sqr(T))
d2 = d1 - sig * Sqr(T)
Op_Cvalue = S * NorCdf(d1) - K * Exp(-r * T) * NorCdf(d2)
End Function
Public Function Op_Pvalue(S As Double, K As Double, T As Double, sig As Double, r As Double) As Double
Dim d1 As Double, d2 As Double
d1 = (Log(S / K) + (r + sig^2 / 2) * T) / (sig * Sqr(T))
d2 = d1 - sig * Sqr(T)
Op_Pvalue = K * Exp(-r * T) * NorCdf(-d2) - S * NorCdf(-d1)
End Function
Financial Calculation 程式4.1 (Book1.xls/Module1)
4-5
Black-Scholes 程式與繪圖(2/5)
在Sheet1程式碼區撰寫下面的程式碼,由工作表中讀取資料,並呼叫Module1
中的函數,將結果寫回工作表。
並放置一個Button如圖,將Button與下面Op_Calculate程序連結。按Button執行
下面程序,計算出選擇權的權利金。
Public Function BSOption(OpClass As String, S As Double, K As Double, T As Double, sig As Double, r As Double) As Double
Dim d1 As Double, d2 As Double
Dim z As Double
If OpClass = "C" Then
z=1
Else
z = -1
End If
d1 = (Log(S / K) + (r + sig^2 / 2) * T) / (sig * Sqr(T))
d2 = d1 - sig * Sqr(T)
BSOption = z * (S * NorCdf(z * d1) - K * Exp(-r * T) * NorCdf(z * d2))
End Function
程式4.3 (Book1.xls/Module1)
考量股利後的選擇權價格:
𝐶 = 𝑆𝐷 𝑁 𝑑1 − 𝐾𝑒 −𝑟𝑇 𝑁 𝑑2 , (4.8)
𝑆𝐷 𝜎2
ln 𝐾
+ 𝑟+ 2 𝑇
𝑑1 = ,
𝜎 𝑇
𝑑2 = 𝑑1 − 𝜎 𝑇.
Sy = S * Exp(-y * T)
𝐶 = 𝑆𝑦 𝑁 𝑑1 − 𝐾𝑒 −𝑟𝑇 𝑁 𝑑2 , (4.10)
𝑃 = 𝐾𝑒 −𝑟𝑇 𝑁 −𝑑2 − 𝑆𝑦 𝑁 −𝑑1 , (4.11)
𝑆𝑦 𝜎2 𝑆𝑒−𝑦𝑇 𝜎2 𝑆 𝜎2
ln 𝐾
+ 𝑟+ 2 𝑇 ln 𝐾
+ 𝑟+ 2 𝑇 ln 𝐾
+ 𝑟−𝑦+ 2 𝑇
𝑑1 = = = ,
𝜎 𝑇 𝜎 𝑇 𝜎 𝑇
𝑆 𝜎2
ln + 𝑟−𝑦− 𝑇
𝐾 2
𝑑2 = = 𝑑1 − 𝜎 𝑇.
𝜎 𝑇
Public Function GBSOption(OpClass As String, S As Double, K As Double, T As Double, sig As Double, r As Double, y As Double) As Double
Dim d1 As Double, d2 As Double
Dim z As Double
If OpClass = "C" Then
z = 1#
Else
z = -1#
End If
d1 = (Log(S / K) + (r - y + sig ^2 / 2) * T) / (sig * Sqr(T))
d2 = d1 - sig * Sqr(T)
GBSOption = z * (S * Exp(-y * T) * NorCdf(z * d1) - K * Exp(-r * T) * NorCdf(z * d2))
End Function
程式4.8 (Book1.xls/Module1)
波動性的估計
波動性的正確定義:一股票價格的波動性是該股票年收益率的
標準差,且此收益率以連續複利表示。
𝜎 𝑇:股價在 T 時間內報酬率變動的粗估標準差。
例如:𝜎 = 0.3或30%/每年,則一年內報酬率變動大約30%;6個
月內報酬率變動的標準差則大約為 30 0.5 = 21.2%;3個月內
報酬率變動的標準差則大約為 30 0.25 = 15%。
波動性的估計可分為歷史波動性與隱含波動性兩種。
Financial Calculation 5-3
歷史波動性 (2/3)
利用股票價格變動的紀錄來估計歷史波動性:
n 1: 觀察數目;Si : 第 i 期末之股價; : 每期時間長度(單位:年)。
Si 1
令 ui , i 1, 2, , n ,ui 標準差的不偏估計 s ,
Si
2
1 n
1 n
1 n
s (u j u ) n 1
n 1 j 1
2
uj
2
uj
j 1 n ( n 1) j 1
其中 u 為 ui 的平均數。
在VBA中,可用”(索引)”敘述宣告這21個相關的資料陣列:
• Dim ClosePrice(0 To 20) As Double
• Dim ClosePrice(20) As Double
– 在VBA中預設的索引是從0開始。
在程式中,可將每一個陣列元素當成一個變數來使用,透過索引與
迴圈的合併應用,可將資料的處理大幅簡化。
For i = 1 To 10
For j = 1 To 10
Array_2D(i, j) = i * j
Next j
Next i
Financial Calculation 5-10
隱含波動性
根據一般化的BSM公式,可將選擇權價格寫成函數形式:
𝐶 = 𝑓 𝑆, 𝐾, 𝑇, σ, 𝑟, 𝑦 . (5.1)
只有一項參數無法直接得知,即股價的波動性,σ。
雖然看不到股價的波動性,但市場上卻有選擇權權利金的交易價格。可將 (5.1)
式改寫成下面反函數形式:
σ = 𝑓 −1 𝐶, 𝑆, 𝐾, 𝑇, 𝑟, 𝑦 . (5.2)
一但代入市場上均衡的選擇權價格,應可求得均衡的股價的波動性,此方法求
得的波動性稱之為隱含的波動性(Implied Volatility)。
但在現實操作上,(5.2) 式的反函數不太可能求得,可以使用數值方法中求根
法去解決此問題。
將(5.1) 式改寫如下,
𝐻 σ = 𝑓 𝑆, 𝐾, 𝑇, σ, 𝑟, 𝑦 − 𝐶 = 0. (5.3)
Do-Loop 迴圈敘述有兩種形式:
Do While … Loop:執行迴圈敘述前先行條件測試。
Do While 測試條件
迴圈敘述組合
[Exit Do]
Loop
Do … Loop While:先執行迴圈敘述然後才進行條件測試。
Do
迴圈敘述組合
[Exit Do]
Loop While 測試條件
Do … Loop While:
Public Function Factorial_1(n As Long) As Long
Dim ans As Long
Dim i As Long
ans = 1
Do
ans = ans * n
n=n-1
Loop While n > 0 ‘設定測試條件 n > 0
Factorial_1 = ans
End Function
程式5.3(Book2.xls/Sheet1)
σ𝐿 +σ𝑅
二分法尋根:令 σ𝐿 = σ𝑚𝑖𝑛 及 σ𝑅 = σ𝑚𝑎𝑥 。考慮 σ1 = 2
:
若𝐻 σ1 > 0,則令σ1 = σ𝑅 新的右界;
若𝐻 σ1 < 0,則令σ1 = σ𝐿 新的左界;
若𝐻 σ1 = 0,則真實的波動性 σ∗ = σ1 。
假設 𝐻 σ1 ≠ 0 ,用同樣的方法,求得下一個新的界限 σ2 ,一直往下求得 σ3 , σ4 , …,
直到左界與右界間隔小於我們能接受的誤差容忍度𝜃為止, σ𝑅 − σ𝐿 ≤ 𝜃。
tol = 0.0001
sigL = 0.0001
sigR = 2
err = Abs(sigR - sigL)
Do While (err > tol)
sig = (sigL + sigR) / 2
value = GBSOption(OpClass, S, K, T, sig, r, y)
If (value = P) Then GBSImpliedVol = sig
If (value > P) Then
sigR = sig
Else
sigL = sig
End If
err = Abs(sigR - sigL)
Loop
GBSImpliedVol = sig
End Function
程式5.3(Book1.xls/Module1)
S = Worksheets("Sheet1").Cells(2, 1).value
K = Worksheets("Sheet1").Cells(2, 2).value
T = Worksheets("Sheet1").Cells(2, 3).value
r = Worksheets("Sheet1").Cells(2, 5).value
y = Worksheets("Sheet1").Cells(2, 6).value
OpClass = Worksheets("Sheet1").Cells(5, 1).value
P = Worksheets("Sheet1").Cells(5, 2).value
sig = GBSImpliedVol(OpClass, P, S, K, T, r, y)
優點:簡單易學、對尋根函數沒有太多限制、只要是連續單調遞增(遞減)函數都行。
缺點: 計算效率較差,要多次的計算才會收斂。
𝐻 σ𝑘
(5.5) 式可改寫為σ𝑘+1 ≡ σ𝑘 − 。
𝐻′ σ𝑘
函數斜率𝐻′ σ𝑘 可求得如下 :
𝜕𝐻 𝜕𝑓
𝐻′ σ = = = 𝑆 𝑇𝑒 −𝑦𝑇 Φ(𝑑1 ) =Vega. (5.6)
𝜕𝜎 𝜕𝜎
(5.6) 式即為一般化歐式買權的Vega公式。
。
Financial Calculation 5-18
牛頓法尋根 (2/4)
http://zh.wikipedia.org/wiki/File:NewtonIteration_Ani.gif
圖5.2:
S = Worksheets("Sheet2").Cells(2, 1).value
K = Worksheets("Sheet2").Cells(2, 2).value
T = Worksheets("Sheet2").Cells(2, 3).value
r = Worksheets("Sheet2").Cells(2, 5).value
y = Worksheets("Sheet2").Cells(2, 6).value
P = Worksheets("Sheet2").Cells(5, 2).value
sig = GBSNewtonImpVolCall(P, S, K, T, r, y)
如何比較二分法及牛頓法的效率性?
選擇權的敏感性
與美式選擇權的定價
所謂敏感性:相對於自變數的微小變動下,相對應的因變數變動量。
Delta(避險比率):當投資人放空一單位買權時,需要買入避險的現貨數量。
𝜕𝑉 𝑁 𝑑1 , 𝐶𝑎𝑙𝑙
∆= = (6.2)
𝜕𝑆 𝑁 𝑑1 − 1, 𝑃𝑢𝑡
Gamma:衡量股價變動下Delta的相對改變情形。由於投資人可由Delta值來決
定避險的數量,因此Delta的變動程度會影響到投資人調整避險部位的頻率。
𝜕Δ 𝜕2 𝑉 𝑁′ 𝑑1
Γ= = = (6.3)
𝜕𝑆 𝜕𝑆 2 𝑆𝜎 𝑇
Vega:衡量選擇權價格相對股價波動性變動的改變情形。
𝜕𝑉
𝑉𝑒𝑔𝑎 = 𝜕𝜎 = 𝑆 𝑇𝑁 ′ 𝑑1 (6.4)
Financial Calculation 6-3
敏感性的定義 (2/2)
Theta:隨契約到期時間的減少,對選擇權價值的影響。
𝑁 ′ 𝑑1
𝜕𝑉
−𝑆𝜎 − 𝑟𝐾𝑒 −𝑟𝑇 𝑁 𝑑2 , 𝐶𝑎𝑙𝑙
2 𝑇
Θ=− = ′
𝑁 𝑑1
(6.5)
𝜕𝑇
−𝑆𝜎 + 𝑟𝐾𝑒 −𝑟𝑇 𝑁 −𝑑2 , 𝑃𝑢𝑡
2 𝑇
Rho of r:利率的增加,對選擇權價值的影響。
𝜕𝑉 𝐾𝑇𝑒 −𝑟𝑇 𝑁 𝑑2 , 𝐶𝑎𝑙𝑙
𝑅ℎ𝑜_𝑟 = = (6.6)
𝜕𝑟 −𝐾𝑇𝑒 −𝑟𝑇 𝑁 −𝑑2 , 𝑃𝑢𝑡
Rho of y:資產收益率的增加,對選擇權價值的影響。
𝜕𝑉 −𝑆𝑇𝑒 −𝑦𝑇 𝑁 𝑑1 , 𝐶𝑎𝑙𝑙
𝑅ℎ𝑜_𝑦 = = (6.7)
𝜕𝑦 𝑆𝑇𝑒 −𝑦𝑇 𝑁 −𝑑1 , 𝑃𝑢𝑡
𝑒 −𝑦𝑇 𝑁 𝑑1 , 𝐶𝑎𝑙𝑙
Delta:∆ = −𝑦𝑇
𝑒 𝑁 𝑑1 − 1 , 𝑃𝑢𝑡
𝑉𝑒𝑔𝑎 = 𝑆𝑒 −𝑦𝑇 𝑇𝑁 ′ 𝑑1
分析買權 (Call):
Delta = 0.6242,因此資產價格上漲$1元,買權上漲$1*0.6246 = $0.6246。
Vega = 36.7810,波動性上漲1%,買權上漲0.01*36.7810 = $0.367810。
Theta = -8.1085,隨到期日接近一日,買權下跌1/365*(-8.1085) = -$0.022215。
Rho_r = 47.9971,利率上漲1%,買權上漲0.01*47.9971 = $0.479971。
Rho_y = -62.4215,資產收益率上漲1%,買權上漲0.01*(-62.4215) = -$0.624215。
對賣權 (Put) 一樣可以得到類似的推論結果。
Financial Calculation 6-12
差分與微分 (1/3)
差分的敏感性:
現實的世界上,自變數(如股價、利率與波動性)的變動量是離散的,而不是
連續的,沒有辦法微分。可利用差分的方式,直接求得敏感性的數值。
𝜕𝑉 𝑉 𝑆+∆𝑆 −𝑉 𝑆−∆𝑆
∆= ≈
𝜕𝑆 2∆𝑆
由於Gamma為二次微分,因此其差分與其他的不一樣。
𝜕2 𝑉 𝑉 𝑆+∆𝑆 −2𝑉(𝑆)+𝑉 𝑆−∆𝑆
Γ= ≈
𝜕𝑆 2 ∆𝑆 2
V = GBSOption("C", S, K, T, sig, r, y)
Worksheets("Sheet1").Cells(7, 2).Value = (V1 - 2 * V + V0) / (delta ^ 2)
其累積機率密度函數(CDF):
𝑎 𝑏
𝑀(𝑎, 𝑏, 𝜌) = −∞ −∞
Ψ 𝑢, 𝑣, 𝜌 𝑑𝑢𝑑𝑣 (6.9)
1−𝜌2 5 5
𝑀(𝑎, 𝑏, 𝜌) = × 𝑖=1 𝑗=1 A𝑖 A𝑗 𝑒 [𝑎1 2B𝑖 −𝑎1 +𝑏1 2B𝑗 −𝑏1 +2𝜌 B𝑖 −𝑎1 B𝑗 −𝑏1 ]
𝜋
a ≤ 0, 𝑏 ≥ 0, 𝜌 ≥ 0:
𝑀 𝑎, 𝑏, 𝜌 = 𝑁 a − 𝑀 𝑎, −𝑏, −𝜌
a ≥ 0, 𝑏 ≤ 0, 𝜌 ≥ 0:
𝑀 𝑎, 𝑏, 𝜌 = 𝑁 b − 𝑀 −𝑎, 𝑏, −𝜌
a ≥ 0, 𝑏 ≥ 0, 𝜌 ≤ 0:
𝑀 𝑎, 𝑏, 𝜌 = 𝑁 a + 𝑁 b − 1 + 𝑀 −𝑎, −𝑏, 𝜌
a × 𝑏 × 𝜌 > 0:
𝑀 𝑎, 𝑏, 𝜌 = 𝑀 𝑎, 0, 𝜌1 + 𝑀 b, 0, 𝜌2 − Θ
1, 𝑥 > 0
(𝜌𝑎−𝑏)×𝑆𝑔𝑛(𝑎) (𝜌𝑏−𝑎)×𝑆𝑔𝑛(𝑏) 1−𝑆𝑔𝑛(𝑎)×𝑠𝑔𝑛(𝑏)
𝜌1 = , 𝜌2 = ,Θ= , 𝑠𝑔𝑛 𝑥 = 0, 𝑥 = 0 .
𝑎2 −2𝜌𝑎𝑏+𝑏2 𝑎2 −2𝜌𝑎𝑏+𝑏2 4
−1, 𝑥 < 0
𝑡
−𝐾𝑒 −𝑟𝑇 𝑀 𝑎2, −𝑏2, − − 𝐾 − 𝐷𝑡 𝑒 −𝑟𝑡 𝑁 𝑏2 (6.10)
𝑇
其中
𝑆−𝐷𝑡𝑒−𝑟𝑡 𝜎2
ln + 𝑟+ 𝑇
𝐾 2
𝑎1 = , 𝑎2 = 𝑎1 − 𝜎 𝑇,
𝜎 𝑇
𝑆−𝐷𝑡𝑒−𝑟𝑡 𝜎2
ln + 𝑟+ 𝑡
𝑆 2
𝑏1 = , 𝑏2 = 𝑏1 − 𝜎 𝑡
𝜎 𝑡
𝑆:方程式 𝐶𝐸 𝑆,t = 𝑆+𝐷𝑡 − 𝐾 的解,而𝐶𝐸 𝑆,t 為標的資產價格𝑆,到期日t 的歐式買權
價格。
當價格高於𝑆時,提前執行為最佳。
若提前執行不是最佳時,則𝑆 = ∞, 𝑏2 = ∞, 𝑏1 = ∞且(6.10)式會退化成(4.8)式。
有興趣的可加以參考。
異種選擇權(一)
路徑無關選擇權
數位賣權
歐式數位賣權,其到期日的償付可表示如下:
𝑋, 𝑆𝑇 < 𝐾
𝐷𝐶𝑇 = (7.2)
0, 𝑆𝑇 ≥ 𝐾
Financial Calculation 7-3
Digital Options (2/5)
定價公式
在連續模型下導出的數位買權定價公式:
𝐷𝐶 = 𝑋𝑒 −𝑟𝑇 𝑁(𝑑). (7.3)
其中
𝑆 𝜎2
ln 𝐾 + 𝑟−𝑦− 2 𝑇
𝑑=
𝜎 𝑇
T:到期日;
𝜎:即期匯率波動性;
𝑟:融資成本;
𝑦:標的資產持有收益率。
數位賣權定價公式:
𝐷𝑃 = 𝑋𝑒 −𝑟𝑇 𝑁(−𝑑). (7.4)
兩資產相關選擇權
在這類產品中,判斷價內或價外的資產S1,與計算償付金額大小的資
產S2,分別為不一樣的兩種資產。這類產品與兩種資產的價格產生關
連。
期末償付:
𝑆 − 𝐾2, 𝑆1 > 𝐾1
𝑇𝐴𝐶𝐶𝑇 = 2 (7.5)
0, 𝑆1 ≤ 𝐾1
𝐾2 − 𝑆2, 𝑆1 < 𝐾1
𝑇𝐴𝐶𝑃𝑇 = (7.6)
0, 𝑆1 ≥ 𝐾1
Financial Calculation 7-8
Rainbow Options (2/9)
定價公式:
𝑇𝐴𝐶𝑃 = 𝐾2𝑒 −𝑟𝑇 𝑀 −𝑑2, −𝑑1, 𝜌 − 𝑆2𝑒 −𝑦2𝑇 𝑀 −𝑑2 − 𝜎2 𝑇, −𝑑1 − 𝜌𝜎2 𝑇, 𝜌 . (7.8)
𝑆1 𝜎12
ln 𝐾 + 𝑟 − 𝑦1 − 2 𝑇
1
𝑑1 =
𝜎1 𝑇
𝑆2 𝜎22
ln 𝐾 + 𝑟 − 𝑦2 − 2 𝑇
2
𝑑2 =
𝜎2 𝑇
在此,並沒有使用按鈕去執行巨
集,而是直接在儲存格中打上函
數名稱與參數的位置,就如同使
用一般的試算表函數。
這是因為將定價函數放在模組中
之故,模組中的函數可在試算表
中直接引用。
定價公式:
𝑀𝑖𝑛𝑇𝐴𝐶 𝑆1, 𝑆2, 𝐾, 𝑇 = 𝑆1𝑒 −𝑦1𝑇 𝑀 𝑑1, −𝑑, −𝜌1
+𝑆2𝑒 −𝑦2𝑇 𝑀 𝑑2, 𝑑 − 𝜎 𝑇, −𝜌2
−𝐾𝑒 −𝑟𝑇 𝑀 𝑑1 − 𝜎1 𝑇, 𝑑2 − 𝜎2 𝑇, 𝜌 . (7.10)
𝜎2 𝑆1 𝜎2 𝑆2 𝜎2
ln
𝑆1
+ 𝑟−𝑦1−𝑟+𝑦2+ 𝑇 ln 𝐾
+ 𝑟−𝑦1+ 21 𝑇 ln 𝐾
+ 𝑟−𝑦2+ 22 𝑇
𝑆2 2
𝑑= , 𝑑1 = , 𝑑2 =
𝜎 𝑇 𝜎1 𝑇 𝜎2 𝑇
𝜎1 −𝜌𝜎2 𝜎2 −𝜌𝜎1
𝜎= 𝜎12 + 𝜎22 − 2𝜌𝜎1 𝜎2 , 𝜌1 = , 𝜌2 =
𝜎 𝜎
兩資產最小賣權
期末償付:
𝑀𝑖𝑛𝑇𝐴𝑃𝑇 = 𝑚𝑎𝑥 𝐾 − m𝑖𝑛 𝑆1, 𝑆2 , 0 (7.13)
定價公式:
𝑀𝑖𝑛𝑇𝐴𝑃 𝑆1, 𝑆2, 𝐾, 𝑇 = 𝐾𝑒 −𝑟𝑇 − 𝑀𝑖𝑛𝑇𝐴𝐶 𝑆1, 𝑆2,0, 𝑇 + 𝑀𝑖𝑛𝑇𝐴𝐶 𝑆1, 𝑆2, 𝐾, 𝑇 (7.14)
𝑀𝑖𝑛𝑇𝐴𝐶 𝑆1, 𝑆2,0, 𝑇 = 𝑆1𝑒 −𝑦1𝑇 − 𝑆1𝑒 −𝑦1𝑇 𝑁(𝑑) + 𝑆2𝑒 −𝑦2𝑇 𝑁 𝑑 − 𝜎 𝑇
定價公式:
𝑀𝑎𝑥𝑇𝐴𝑃 𝑆1, 𝑆2, 𝐾, 𝑇 = 𝐾𝑒 −𝑟𝑇 − 𝑀𝑎𝑥𝑇𝐴𝐶 𝑆1, 𝑆2,0, 𝑇 + 𝑀𝑎𝑥𝑇𝐴𝐶 𝑆1, 𝑆2, 𝐾, 𝑇 (7.16)
買權的選擇權
複合選擇權的標的選擇權之到期日為 T2,執行價格為K1;而複合選擇權本身之到
期日為T1,執行價格為K2 。
買權的買入選擇權:買權的買入選擇權之擁有者在到期日 T1 時,有權利以 K2 的價
格,買入到期日為T2,且執行價格為 K1 之買權。其到期日T1 時之償付如下:
𝐺𝐵𝑆𝐶 𝑆𝑇1 , 𝐾1 , 𝑇2 − 𝑇1 − 𝐾2 , 𝐺𝐵𝑆𝐶𝑇1 − 𝐾2 ≥ 0
𝐶𝐶𝑇1 = (7.17)
0 , 𝐺𝐵𝑆𝐶𝑇1 − 𝐾2 < 0
其中 𝐺𝐵𝑆𝐶 𝑆𝑇1 , 𝐾1 , 𝑇2 − 𝑇1 :執行價格K1,到期日時間還有𝑇2 − 𝑇1 ,之歐式買權在
𝑇1 時點的價值。
買權的賣出選擇權:買權的賣出選擇權在到期日 T1 時之償付如下:
𝐾2 − 𝐺𝐵𝑆𝐶 𝑆𝑇1 , 𝐾1 , 𝑇2 − 𝑇1 , 𝐾2 − 𝐺𝐵𝑆𝐶𝑇1 ≥ 0
𝑃𝐶𝑇1 = (7.18)
0 , 𝐾2 − 𝐺𝐵𝑆𝐶𝑇1 < 0
賣權的賣出選擇權:賣權的賣出選擇權在到期日之償付如下:
𝐾2 − 𝐺𝐵𝑆𝑃 𝑆𝑇1 , 𝐾1 , 𝑇2 − 𝑇1 , 𝐾2 − 𝐺𝐵𝑆𝑃𝑇1 ≥ 0
𝑃𝑃𝑇1 = (7.20)
0 , 𝐾2 − 𝐺𝐵𝑆𝑃𝑇1 < 0
然後,分別代入下面公式:
𝐶𝐶 = 𝑆𝑒 −𝑦𝑇2 𝑀 𝑧1, 𝑑1, 𝜌 − 𝐾1 𝑒 −𝑟𝑇2 𝑀 𝑧2, 𝑑2, 𝜌 − 𝐾2 𝑒 −𝑟𝑇1 𝑁 𝑑2 (7.21)
𝑃𝐶 = 𝐾1 𝑒 −𝑟𝑇2 𝑀 𝑧2, −𝑑2, −𝜌 − 𝑆𝑒 −𝑦𝑇2 𝑀 𝑧1, −𝑑1, −𝜌 + 𝐾2 𝑒 −𝑟𝑇1 𝑁 −𝑑2 (7.22)
其中
𝑆 𝜎2
ln ∗ + 𝑟−𝑦+ 𝑇1
𝑆 2
𝑑1 = , 𝑑2 = 𝑑1 − 𝜎 𝑇1
𝜎 𝑇1
𝑆 𝜎2
ln + 𝑟−𝑦+ 𝑇2 𝑇1
𝐾1 2
𝑧1 = , 𝑧2 = 𝑧1 − 𝜎 𝑇2 , 𝜌 =
𝜎 𝑇2 𝑇2
然後,分別代入下面公式:
𝑃𝑃 = 𝑆𝑒 −𝑦𝑇2 𝑀 −𝑧1, 𝑑1, −𝜌 − 𝐾1 𝑒 −𝑟𝑇2 𝑀 −𝑧2, 𝑑2, −𝜌 + 𝐾2 𝑒 −𝑟𝑇1 𝑁 𝑑2 (7.23)
𝐶𝑃 = 𝐾1 𝑒 −𝑟𝑇2 𝑀 −𝑧2, −𝑑2, 𝜌 − 𝑆𝑒 −𝑦𝑇2 𝑀 −𝑧1, −𝑑1, 𝜌 − 𝐾2 𝑒 −𝑟𝑇1 𝑁 −𝑑2 (7.24)
其中
𝑆 𝜎2
ln ∗ + 𝑟−𝑦+ 𝑇1
𝑆 2
𝑑1 = , 𝑑2 = 𝑑1 − 𝜎 𝑇1
𝜎 𝑇1
𝑆 𝜎2
ln + 𝑟−𝑦+ 𝑇2 𝑇1
𝐾1 2
𝑧1 = , 𝑧2 = 𝑧1 − 𝜎 𝑇2 , 𝜌 =
𝜎 𝑇2 𝑇2
CVOptionsOnOptions = Si
End Function
程式7.6(Book1.xls/Module1)
Financial Calculation 7-22
Options on Options (7/7)
應用範例
下面為一個 Put-on-Call 選擇權範例:
B10輸入 = OptionsOnOptions (“pc", B2,C2,D2,E2,F2,C5,D5,B5)
仿照7-23相同數據,計算Call-on-Call, Put-on-Put,
Call-on-Put的值。
異種選擇權(二)
路徑相關選擇權
下限無效選擇權 (down-and-out)
在下限無效選擇權中,下限阻隔已被確定,如果標的資產價格在選擇
權的有效期間落於此下限阻隔之下,則此選擇權變無效停止。
此時選擇權的持有者可以根據契約條件,由賣方得到一定數量的償金。
從目前到標的資產價格第一次越過阻隔的時間,稱之為停止時間,𝜏。
𝜏是一個隨機變數,因無法事前知道資產價格越界的正確時間。
令 T 為選擇權的到期日,定義下面的指標函數:
1, 𝜏 > 𝑇 阻隔沒有被穿越
𝜄(𝜏, 𝑇) = (8.1)
0, 𝜏 ≤ 𝑇 阻隔在時間𝑇以前被穿越
Financial Calculation 8-3
Barrier Options (2/11)
下限無效的買權
令 H 為下限阻隔,到期日為 T,則執行價格為 K 之下限無效買權,在
到期日的償付:
𝐷𝑂𝐶(𝑆𝑇 , 0, 𝐾, 𝐻) = 𝜄 𝜏, 𝑇 𝑚𝑎𝑥 𝑆𝑇 − 𝐾, 0 (8.2)
下限無效的賣權
令 H 為下限阻隔,到期日為 T,則執行價格為 K 之下限無效賣權,在
到期日的償付:
𝐷𝑂𝑃(𝑆𝑇 , 0, 𝐾, 𝐻) = 𝜄 𝜏, 𝑇 𝑚𝑎𝑥 𝐾 − 𝑆𝑇 , 0 (8.3)
買權
定義下面的指標函數:
1, 𝜏 ≤ 𝑇 阻隔被穿越
𝜅(𝜏, 𝑇) = (8.4)
0, 𝜏 > 𝑇 阻隔到期前沒被穿越
到期日之償付:
𝐷𝐼𝐶(𝑆𝑇 , 0, 𝐾, 𝐻) = 𝜅 𝜏, 𝑇 𝑚𝑎𝑥 𝑆𝑇 − 𝐾, 0 (8.5)
如果 𝜅 𝜏, 𝑇 = 1,則與一般買權無異。反之 𝜅 𝜏, 𝑇 = 0,故償付為零。
賣權
到期日之償付:
𝐷𝐼𝑃(𝑆𝑇 , 0, 𝐾, 𝐻) = 𝜅 𝜏, 𝑇 𝑚𝑎𝑥 𝐾 − 𝑆𝑇 , 0
= 𝑃 𝑆𝑇 , 0, 𝐾 − 𝐷𝑂𝑃(𝑆𝑇 , 0, 𝐾, 𝐻) (8.6)
所以,下限有效賣權價值 = 一般歐式賣權價值 – 下限無效賣權價值。
Financial Calculation 8-6
Barrier Options (5/11)
上限無效選擇權 (up-and-out)
在上限無效選擇權中,上限阻隔已被確定,如果標的資產價格在選擇
權的有效期間落於此上限阻隔之上,則此選擇權變無效停止。
買權
令 H 為上限阻隔,到期日為 T,則執行價格為 K 之上限無效買權,在
到期日的償付:
𝑈𝑂𝐶(𝑆𝑇 , 0, 𝐾, 𝐻) = 𝜄 𝜏, 𝑇 𝑚𝑎𝑥 𝑆𝑇 − 𝐾, 0 (8.7)
如果上限沒有被穿越(𝜏 > 𝑇),則𝜄 𝜏, 𝑇 = 1,期末償付如同一般買權。
如果上限被穿越( 𝜏 ≤ 𝑇 ),則 𝜄 𝜏, 𝑇 = 0 ,故償付為零,即選擇權消失了。
賣權
到期日的償付:
𝑈𝑂𝑃(𝑆𝑇 , 0, 𝐾, 𝐻) = 𝜄 𝜏, 𝑇 𝑚𝑎𝑥 𝐾 − 𝑆𝑇 , 0 (8.8)
如果上限沒有被穿越(𝜏 > 𝑇),則𝜄 𝜏, 𝑇 = 1,和一般賣權無異。
如果上限被穿越(𝜏 ≤ 𝑇),則𝜄 𝜏, 𝑇 = 0,上限無效賣權便失效停止。
Financial Calculation 8-7
Barrier Options (6/11)
上限有效選擇權 (up-and-in)
上限有效選擇權只有在資產價格高於上限阻隔 H,該選擇權才有作用,
也因此上限有效選擇權之權利金不會高於一般選擇權。
買權
到期日的償付:
𝑈𝐼𝐶(𝑆𝑇 , 0, 𝐾, 𝐻) = 𝜅 𝜏, 𝑇 𝑚𝑎𝑥 𝑆𝑇 − 𝐾, 0 (8.9)
如果 𝜅 𝜏, 𝑇 = 1,則與一般買權無異。反之 𝜅 𝜏, 𝑇 = 0,故償付為零。
賣權
到期日的償付:
𝑈𝐼𝑃(𝑆𝑇 , 0, 𝐾, 𝐻) = 𝜅 𝜏, 𝑇 𝑚𝑎𝑥 𝐾 − 𝑆𝑇 , 0
= 𝑃 𝑆𝑇 , 0, 𝐾 − 𝑈𝑂𝑃(𝑆𝑇 , 0, 𝐾, 𝐻) (8.10)
A Se yT N ( x1 ) Ke rT N ( x1 T ),
B Se yT N ( x2 ) Ke rT N ( x2 T ),
2( 1) 2
H H
C Se yT
S N ( y1 ) Ke rT
S N ( y1 T ),
2( 1) 2
H H
D Se yT
S N ( y2 ) Ke rT
S N ( y2 T ),
H
2
E Xe N ( x2 T ) N ( y2 T ) ,
rT
S
H H
F X N ( z ) N ( z 2 T ) ,
S S
ln( S / K ) ln( S / H ) ln( H 2 / SK )
x1 (1 ) T , x2 (1 ) T , y1 (1 ) T ,
T T T
ln( H / S ) ln( H / S ) r y 2 / 2 2r
y2 (1 ) T , z T , , 2 2 .
T T 2
Financial Calculation 8-9
Barrier Options (8/11)
定價公式 (Continued)
(i) If DIC or DOC , then 1 and 1,
(ii) If UIC or UOC , then 1 and 1,
(iii) If DIP or DOP, then 1 and 1,
(iv) If UIP or UOP, then 1 and 1.
標準回顧選擇權
指選擇權的執行價格並不是固定不變的,而是參考在選擇權的
生命週期中,標的資產價格的最大值或最小值來決定執行價格。
必需要到選擇權到期時,往回頭看,才能得知正確的執行價格。
生命週期是由選擇權契約產生後,一直到契約到期消失為止。
令Smax(Smin)為生命週期內,最高(低)的標的資產價格。
除非到期日的資產價格剛好是最小資產價格,否則此選擇權一定為價內的。
定價公式:
SLBC Se yT N (d1 ) S min e rT N (d 2 )
2( r y )
2
2
T e( r y )T N (d1 ) ,
S 2( r y )
Se rT N d1
2(r y ) S min
其中
ln( S / S min ) (r y 2 / 2)T
d1 ,
T
d 2 d1 T .
Financial Calculation 8-15
Lookback Options (3/10)
標準回顧賣權
在到期日的償付:
𝑆𝐿𝐵𝑃𝑇 = 𝑆𝑚𝑎𝑥 − 𝑆𝑇 . (8.12)
此償付不會小於零,只有當期末資產價格剛好是最大值時,償付才會為零。
定價公式:
SLBP S max e rT N (d 2 ) Se yT N (d1 )
2( r y )
2
2
T e( r y )T N (d1 ) ,
S 2( r y )
Se rT N d1
2(r y ) S max
其中
ln( S / S max ) (r y 2 / 2)T
d1 ,
T
d 2 d1 T .
Financial Calculation 8-16
Lookback Options (4/10)
'// Floating strike lookback options
Function FloatingStrikeLookback(CPFlag As String, S As Double, SMin As Double, SMax As Double, T As
Double, r As Double, y As Double, sig As Double) As Double
Dim d1 As Double, d2 As Double, m As Double
賣權
以生命週期中,最低的標的資產價格𝑆𝑚𝑖𝑛 來計算期末償付:
𝐸𝐿𝐵𝑃𝑇 = 𝑚𝑎𝑥 𝐾 − 𝑆𝑚𝑖𝑛 , 0 . (8.14)
Se rT 1
2(r y ) S min
1
其中
ln( S / S min ) (r y 2 / 2)T
d1 , d 2 d1 T .
T
Financial Calculation 8-21
Lookback Options (9/10)
'// Fixed strike lookback options
Public Function FixedStrikeLookback(CPFlag As String, S As Double, SMin As Double, SMax As Double, K As Double, T As Double, r As
Double, y As Double, sig As Double) As Double
Dim d1 As Double, d2 As Double
Dim e1 As Double, e2 As Double, m As Double
If CPFlag = "c" Then
m = SMax
ElseIf CPFlag = "p" Then
m = SMin
End If
d1 = (Log(S / K) + (r - y + sig ^ 2 / 2) * T) / (sig * Sqr(T))
d2 = d1 - sig * Sqr(T)
e1 = (Log(S / m) + (r - y + sig ^ 2 / 2) * T) / (sig * Sqr(T))
e2 = e1 - sig * Sqr(T)
If CPFlag = "c" And K > m Then
FixedStrikeLookback = S * Exp(-y * T) * NorCdf(d1) - K * Exp(-r * T) * NorCdf(d2) + S * Exp(-r * T) * sig ^ 2 / (2 * (r - y)) * (-(S / K)
^ (-2 * (r - y) / sig ^ 2) * NorCdf(d1 - 2 * (r - y) / sig * Sqr(T)) + Exp((r - y) * T) * NorCdf(d1))
ElseIf CPFlag = "c" And K <= m Then
FixedStrikeLookback = Exp(-r * T) * (m - K) + S * Exp(-y * T) * NorCdf(e1) - Exp(-r * T) * m * NorCdf(e2) + S * Exp(-r * T) * sig ^ 2 /
(2 * (r - y)) * (-(S / m) ^ (-2 * (r - y) / sig ^ 2) * NorCdf(e1 - 2 * (r - y) / sig * Sqr(T)) + Exp((r - y) * T) * NorCdf(e1))
ElseIf CPFlag = "p" And K < m Then
FixedStrikeLookback = -S * Exp(-y * T) * NorCdf(-d1) + K * Exp(-r * T) * NorCdf(-d1 + sig * Sqr(T)) + S * Exp(-r * T) * sig ^ 2 / (2 *
(r - y)) * ((S / K) ^ (-2 * (r - y) / sig ^ 2) * NorCdf(-d1 + 2 * (r - y) / sig * Sqr(T)) - Exp((r - y) * T) * NorCdf(-d1))
ElseIf CPFlag = "p" And K >= m Then
FixedStrikeLookback = Exp(-r * T) * (K - m) - S * Exp(-y * T) * NorCdf(-e1) + Exp(-r * T) * m * NorCdf(-e1 + sig * Sqr(T)) + Exp(-r *
T) * sig ^ 2 / (2 * (r - y)) * S * ((S / m) ^ (-2 * (r - y) / sig ^ 2) * NorCdf(-e1 + 2 * (r - y) / sig * Sqr(T)) - Exp((r - y) * T) * NorCdf(-e1))
End If
End Function
程式8.3(Book1.xls/Module1)
幾何平均選擇權
如果標的資產之對數報酬為常態分配,則其幾何平均也會是常態分配
的形式。Kemma & Vorst (1990) 導出下面的定價公式。
bA = 1 / 2 * (r - y - sig ^ 2 / 6)
sigA = sig / Sqr(3)
yA = r – bA
M2
(b 2 )(2b 2 )(T ) 2 b(T ) 2 2b 2
b 2
Financial Calculation 8-27
Asian Options (5/7)
一旦進入開始計算平均的時間,上式中的執行價格調整如下:
T T
Kˆ K 1 S A
T2 T2
其中S A為在計算的平均時間內,平均的資產價格。
且計算出的選擇權價格要乘以T2 / T。
bA = Log(m1) / T
sigA = Sqr(Log(m2) / T - 2 * bA)
yA = r - bA
t1 = T - T2
If t1 > 0 Then
K = T / T2 * K - t1 / T2 * SA
TWAriAvgAsian = GBSOption(CPFlag, S, K, T2, sigA, r, yA) * T2 / T
Else
TWAriAvgAsian = GBSOption(CPFlag, S, K, T2, sigA, r, yA)
End If
End Function
程式8.5(Book1.xls/Module1)