如何计算期权的 Black-Scholes 看跌期权

How to Compute Black-Scholes put of an option

我是 R 的新手,正在尝试弄清楚如何在 Black Scholes 期权价格模型中计算看跌期权。我已经编写了以下代码,但它没有输出我期望的数字。请参阅下文。它没有引入我提前 expecting.Thanks 的看跌计算以获取任何见解!! 这是我的数据,我正在尝试为

创建一个可重用的函数
s0 = 100
K = 70
r = 0.05
sigma =  0.16
T = 1

P <- 70*exp(-0.05*1)*pnorm(-d2) - 100*pnorm(-d1)

然后我做了这个功能

 put <- function(s0, K, r, T, sigma) {
 d1 <- (log(s0/K) + (r + sigma^2/2)*T) / (sigma*sqrt(T))
 d2 <- d1 - sigma*sqrt(T)
 p <- K*exp(-r*1)*pnorm(-d2) - 100*pnorm(-d1)
 p
 }

您在 put 函数的看跌价计算中没有使用 T 和 s0。您的默认值是 1 而不是 T,默认值是 100 而不是 s0。请参阅下面的看跌期权和看涨期权价格公式。并检查看跌期权平价。请注意,这些是 black 和 scholes 公式,它们没有考虑股息。 (并且没有错误检查。)

s0 = 100
K = 70
r = 0.05
sigma =  0.16
T = .5

put_price <- function(s0, K, r, T, sigma) {
  d1 <- (log(s0/K) + T*(r + sigma^2/2)) / (sigma*sqrt(T))
  d2 <- d1 - sigma*sqrt(T)
  p <- K*exp(-r*T)*pnorm(-d2) - s0*pnorm(-d1)
  p
}

call_price <- function(s0, K, r, T, sigma) {
  d1 <- (log(s0/K) + T*(r + sigma^2/2)) / (sigma*sqrt(T))
  d2 <- d1 - sigma*sqrt(T)
  c <- s0*pnorm(d1) - K*exp(-r*T)*pnorm(d2)
  c
}

# put call parity
all.equal(put_price(s0, K, r, T, sigma), call_price(s0, K, r, T, sigma) + K * exp(-r*T) - s0)