布莱克-舒尔斯模型(英语:Black-Scholes Model),简称BS模型,又称布莱克-舒尔斯-墨顿模型(Black–Scholes–Merton model),是一种为期权或权证等金融衍生工具定价的数学模型,由美国经济学家迈伦·舒尔斯与费雪·布莱克首先提出,并由罗伯特·C·墨顿修改模型于有派发股利时亦可使用而更完善。由此模型可以推导出布莱克-舒尔斯公式,并由此公式估算出欧式期权的理论价格。此公式问世后带来了期权市场的繁荣。该公式被广泛使用,虽然在很多情况下被使用者进行一定的改动和修正。很多经验测试表明这个公式足够贴近市场价格,然而也有会出现差异的时候,如著名的“波动率的微笑”。
关于公式推导,知乎这个帖子第一个回答是正确的:Black-Scholes 模型中 d1,d2 是怎么得到的?如何理解 Black-Scholes 模型? - 知乎
详细背景和推导请见 A Course in Derivative Securities by Kerry Back
以下code展示了布莱克-舒尔斯模型在Julia的写法
using SpecialFunctions
function normcdf(x)
return (1.0+erf(x/sqrt(2.0)))/2.0
end
println(normcdf(0)) # check if normcdf is correct
function blsprice(S0, K, r, T, σ, d = 0.0, FlagIsCall = true)
d1=(log(S0/K)+(r-d+σ*σ*0.5)*T)/(σ*sqrt(T))
d2=d1-σ*sqrt(T)
Price=0.0
if FlagIsCall
Price=S0*exp(-d*T)*normcdf(d1)-K*exp(-r*T)*normcdf(d2)
else
Price=-S0*exp(-d*T)*normcdf(-d1)+K*exp(-r*T)*normcdf(-d2)
end
return Price
end
#Define input data
spot=10;K=10;r=0.02;T=2.0;σ=0.2;d=0.01;
Price=blsprice(spot,K,r,T,σ,d)
println(Price)
#Price=1.1912013169995816