期權

期權定價 - 虛值 (OTM) 看漲期權的價格結果不正確

  • October 5, 2021

我有股票的期權數據-

structure(list(Curr_Date = structure(c(18904L, 18904L, 18904L, 
18904L, 18904L, 18904L, 18904L, 18904L, 18904L), class = c("IDate", 
"Date")), ticker = c("GOLD", "GOLD", "GOLD", "GOLD", "GOLD", 
"GOLD", "GOLD", "GOLD", "GOLD"), ExpDate = structure(c(18915L, 
18915L, 19013L, 19013L, 19013L, 19377L, 19377L, 19377L, 19377L
), class = c("IDate", "Date")), Strike = c(18, 30, 10, 30, 40, 
10, 18, 30, 40), Option_Type = c("calls", "calls", "calls", "calls", 
"calls", "calls", "calls", "calls", "calls"), OI = c(3570L, 341L, 
723L, 68772L, 26302L, 1731L, 15662L, 37274L, 13215L), Vol = c(1L, 
1L, 5L, 40L, 1L, 1L, 2L, 4L, 5L), ask = c(0.56, 0.01, 8.6, 0.07, 
0.04, 10, 2.8, 0.51, 0.21), bid = c(0.54, 0, 8.2, 0.06, 0.03, 
8.05, 2.58, 0.48, 0.2), StockPrice = c(18.23, 18.23, 18.23, 18.23, 
18.23, 18.23, 18.23, 18.23, 18.23), days2exp = c(0.0301369863013699, 
0.0301369863013699, 0.298630136986301, 0.298630136986301, 0.298630136986301, 
1.2958904109589, 1.2958904109589, 1.2958904109589, 1.2958904109589
), calculated_price = c(0.53, 0, 8.27, 0, 0, 8.5, 2.87, 0.36, 
0.06)), row.names = c(NA, -9L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x562667c9eac0>)

看起來像 -

   Curr_Date ticker    ExpDate Strike Option_Type    OI Vol   ask  bid StockPrice   days2exp calculated_price
1: 2021-10-04   GOLD 2021-10-15     18       calls  3570   1  0.56 0.54      18.23 0.03013699             0.53
2: 2021-10-04   GOLD 2021-10-15     30       calls   341   1  0.01 0.00      18.23 0.03013699             0.00
3: 2021-10-04   GOLD 2022-01-21     10       calls   723   5  8.60 8.20      18.23 0.29863014             8.27
4: 2021-10-04   GOLD 2022-01-21     30       calls 68772  40  0.07 0.06      18.23 0.29863014             0.00
5: 2021-10-04   GOLD 2022-01-21     40       calls 26302   1  0.04 0.03      18.23 0.29863014             0.00
6: 2021-10-04   GOLD 2023-01-20     10       calls  1731   1 10.00 8.05      18.23 1.29589041             8.50
7: 2021-10-04   GOLD 2023-01-20     18       calls 15662   2  2.80 2.58      18.23 1.29589041             2.87
8: 2021-10-04   GOLD 2023-01-20     30       calls 37274   4  0.51 0.48      18.23 1.29589041             0.36
9: 2021-10-04   GOLD 2023-01-20     40       calls 13215   5  0.21 0.20      18.23 1.29589041             0.06

從列中可以看出,calculated_price與買入價或賣出價相比,OTM(價外)看漲期權的價格被大大低估了。我使用以下公式來計算期權的預期價格。

r = 0.0148 # Risk free rate
v = 0.3188 # Historic volatility of 252 trading days
b = 0.02 # TTM yeild
dt[, d1 := ((log(StockPrice/Strike)) + (r - b + (v^2)/2) * days2exp)/(v * (sqrt(days2exp)))]
dt[, d2 := d1 - v * (sqrt(days2exp))]
dt[, calculated_price := round(StockPrice * pnorm(d1) - Strike*exp(-r * days2exp)*pnorm(d2), 2)]

有人可以指出這些公式有什麼問題以及如何糾正錯誤定價嗎?

預期結果是 - 列中的值calculated_price應介於bidask列中的市場價格之間。

謝謝!

不幸的是,如果您想自己正確完成這項工作,那麼您獲得“公平”理論期權價格的最終目標將需要付出很多努力。

以下是幾個原因:

  • 納斯達克市場的所有股票期權都是美式的
  • IVOL 表現出偏差
  • 你需要有可靠的利率
  • 股息假設將相當大地影響您對較長期限的定價

遠期價格不直接針對上市期權市場報價。期貨可以報價,但到期日通常與(所有)期權到期日不一致。插值並非微不足道,因為未來的股息(甚至支付時間)通常是未知的。因此,大多數從業者使用普通股權期權來退出(隱含)股息。

問題在於美式期權的看跌期權平價不成立。即使對於歐式期權,也經常會出現交易時間不同和期權價格不穩定等問題。由於股息支付本質上是離散的,因此您需要一個帶有日期和金額的股息時間表,以得出隱含的股息曲線。該曲線通常比人們希望的更嘈雜並且通常被平滑(通過類似的卡爾曼濾波器)。

對於美式期權,首先需要通過稱為去美國化的過程計算歐洲等值期權。對於非流動性的期限,可能還需要外推。

對於利率,習慣上使用剝離的利率曲線。這些過去是基於 Libor 3m,但現在主要是 SOFR 曲線,它們基本上是以類似的方式建構的。

最後,您的主要任務將是建構可靠的 vol 表面。SVI經常被使用。Voladynamics提供了一些有趣的想法和例子。

您的公式似乎排除了 $ e^{-q} $ . 正如維基百科正確指出的那樣,它應該是$$ {\displaystyle Se^{-q\tau }\Phi (d_{1})-e^{-r\tau }K\Phi (d_{2}),} $$ 這個公式還要求利率和股息是連續的。

連結顯示數據源(也是 IVOL)。老實說,我不熟悉其中任何一個,但它們可能會有所幫助(可靠)。許多像彭博社這樣的供應商也以一定成本提供 Vol 表面作為其標準產品的一部分。

引用自:https://quant.stackexchange.com/questions/68235