访问猛犸期权定价系统,支持外汇期权和结构化产品定价估值!

股票障碍期权自1967年以来就已在场外市场交易。障碍期权已变得非常流行,无疑是最受欢迎的异国期权类别。芝加哥期权交易所和美国期权交易所现在列出了股票指数上的向上敲出看涨期权和向下敲出看跌期权。在场外市场,多种障碍期权活跃交易,包括货币、利率和大宗商品期权。
Merton(1973)和Reiner和Rubinstein(1991a)提出了定价标准障碍期权的公式(Rich (1994). )。这些不同的公式使用了一组共同的因素:
A=ϕSe(b−r)TN(ϕx1)−ϕXe−rTN(ϕx1−ϕσT)B=ϕSe(b−r)TN(ϕx2)−ϕXe−rTN(ϕx2−ϕσT)C=ϕSe(b−r)T(H/S)2(μ+1)N(ηY1)−ϕXe−rT(H/S)2μN(ηY1−ησT)D=ϕSe(b−r)T(H/S)2(μ+1)N(ηy2)−ϕXe−rT(H/S)2μN(ηy2−ησT)E=Ke−rT[N(ηx2−ησT)−(H/S)2μN(ηy2−ησT)]F=K[(H/S)μ+λN(ηz)+(H/S)μ−λN(ηz−2ηλσT)]
这里:
x1y1z=σTln(S/X)+(1+μ)σT=σTln(H2/(SX))+(1+μ)σT=σTln(H/S)+λσTx2y2μ=σTln(S/H)+(1+μ)σT=σTln(H/S)+(1+μ)σT=σ2b−σ2/2λ=μ2+σ22r
其中,“敲入”障碍期权是今天支付的,但只有在资产价格S在到期之前达到障碍水平H时才开始存在。还可以包括预先指定的现金回扣K,如果期权在其生命周期内未被敲入,则在期权到期时支付。
Down-and-in看涨期权 S>H 收益:如果 S≤H 在到期前,收益为 $\max ( S- X; 0) $,否则在到期时为 K。
cdi(X>H)cdi(X<H)=C+E=A−B+D+Eη=1,ϕ=1η=1,ϕ=1
Up-and-in看涨期权 S<H 收益:如果 S≥H 在到期前,收益为 $\max ( S- X; 0) $,否则在到期时为 K。
cdi(X>H)cdi(X<H)=A+E=B−C+D+Eη=−1,ϕ=1η=−1,ϕ=1
Down-and-in看跌期权 S>H 收益:如果 S≤H 在到期前,收益为 $\max ( X- S; 0) $,否则在到期时为 K。
pdi(X>H)pdi(X<H)=B−C+D+E=A+Eη=1,ϕ=−1η=1,ϕ=−1
Up-and-in看跌期权 S<H 收益:如果 S≥H 在到期前,收益为 $\max ( X- S; 0) $,否则在到期时为 K。
pui(X>H)=A−B+D+Epui(X<H)=C+Eη=−1,ϕ=−1η=−1,ϕ=−1
"敲出" 障碍期权与标准期权相似,唯一的区别在于,如果资产价格 S 在到期之前达到障碍水平,该期权将变得毫无价值。可以包含一个预先指定的现金回扣 K,如果期权在到期前被敲出,将支付该回扣。
Down-and-out 看涨期权 S>H
收益:如果 S>H 在到期前,收益为 max( S- X; 0) ,否则在触及障碍水平时为 K。
cdo(X>H)=A−C+Fcdo(X<H)=B−D+Fη=1,ϕ=1η=1,ϕ=1
Up-and-out 看涨期权 S<H
收益:如果 S<H 在到期前,收益为max( S- X; 0) ,否则在触及障碍水平时为 K。
cuo(X>H)cuo(X<H)=F=A−B+C−D+Fη=−1,ϕ=1η=−1,ϕ=1
Down-and-out 看跌期权 S>H
收益:如果 S>H 在到期前,收益为 max( X- S; 0) ,否则在触及障碍水平时为 K。
pdo(X>H)pdo(X<H)=A−B+C−D+F=Fη=1,ϕ=−1η=1,ϕ=−1
Up-and-out 看跌期权 S<H
收益:如果 S<H 在到期前,收益为 max( X - S; 0) ,否则在触及障碍水平时为 K。
puo(X>H)puo(X<H)=B−D+F=A−C+Fη=−1,η=−1,ϕ=−1ϕ=−1
import math
from scipy.stats import norm
def european_call_option(S, X, T, r, sigma):
d1 = (math.log(S / X) + (r + 0.5 * sigma ** 2) * T) / (sigma * math.sqrt(T))
d2 = d1 - sigma * math.sqrt(T)
return S * norm.cdf(d1) - X * math.exp(-r * T) * norm.cdf(d2)
def down_and_in_call(S, X, T, r, sigma, H, K):
mu = (r - 0.5 * sigma ** 2) / sigma ** 2
lambda_ = math.sqrt(mu ** 2 + 2 * r / sigma ** 2)
x1 = (math.log(S / X) + (1 + mu) * sigma * math.sqrt(T)) / (sigma * math.sqrt(T))
x2 = (math.log(S / H) + (1 + mu) * sigma * math.sqrt(T)) / (sigma * math.sqrt(T))
y1 = (math.log(H ** 2 / (S * X)) + (1 + mu) * sigma * math.sqrt(T)) / (sigma * math.sqrt(T))
y2 = (math.log(H / S) + (1 + mu) * sigma * math.sqrt(T)) / (sigma * math.sqrt(T))
z = (math.log(H / S) + lambda_ * sigma * math.sqrt(T)) / (sigma * math.sqrt(T))
A = S * math.exp((r - sigma ** 2 / 2) * T) * norm.cdf(x1) - X * math.exp(-r * T) * norm.cdf(x1 - sigma * math.sqrt(T))
B = S * math.exp((r - sigma ** 2 / 2) * T) * norm.cdf(x2) - X * math.exp(-r * T) * norm.cdf(x2 - sigma * math.sqrt(T))
C = S * math.exp((r - sigma ** 2 / 2) * T) * (H / S) ** (2 * (mu + 1)) * norm.cdf(y1) - X * math.exp(-r * T) * (H / S) ** (2 * mu) * norm.cdf(y1 - sigma * math.sqrt(T))
D = S * math.exp((r - sigma ** 2 / 2) * T) * (H / S) ** (2 * (mu + 1)) * norm.cdf(y2) - X * math.exp(-r * T) * (H / S) ** (2 * mu) * norm.cdf(y2 - sigma * math.sqrt(T))
E = K * math.exp(-r * T) * (norm.cdf(-z) - (H / S) ** (2 * mu) * norm.cdf(y2 - sigma * math.sqrt(T)))
F = K * ((H / S) ** (mu + lambda_) * norm.cdf(z) + (H / S) ** (mu - lambda_) * norm.cdf(z - 2 * lambda_ * sigma * math.sqrt(T)))
c_di_X_H = A - B + D + E
c_di_X_H_eta1_phi1 = c_di_X_H * 1 * 1
return c_di_X_H_eta1_phi1
# 设置参数
S = 100 # 股票价格
X = 95 # 行权价格
T = 1 # 到期时间(年)
r = 0.05 # 无风险利率
sigma = 0.2 # 波动率
H = 90 # 障碍水平
K = 5 # 现金回扣
# 计算 Down-and-in 看涨期权的收益
result = down_and_in_call(S, X, T, r, sigma, H, K)
print("Down-and-in 看涨期权的收益:", result)