如何计算期权的 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)
我是 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)