在实际中,波动率会随时间的变化而变化,这意味着期权价值不仅会随着基础资产价格、期权期限的变化而变化,同时也会随波动率的变化而变化。期权的Vega(V)是指期权价值变化与基础资产波动率变化的比率。如果一个期权的Vega绝对值很大,该期权的价值会对基础资产波动率的变化非常敏感;相反,当一个期权的vega接近零时,基础资产波动率的变化对期权价值的影响则会很小。此外,基础资产本身的vega等于零,也就意味着基础资产波动率对基础资产价格的影响为零,原因是影响基础资产价格的变量中没有其自身波动率这个变量。
def vega_option(S,K,sigma,r,T):
'''计算欧式期权的Theta值
S 期权基础资产的价格
K 期权行权价
sigma 基础资产价格百分比变化的波动率
r 无风险收益率
T 期权合约剩余时间(年)
'''
d1 = (np.log(S/K) + (r + pow(sigma,2)/2)*T) / (sigma*np.sqrt(T))
return S * np.sqrt(T) * np.exp(-pow(d1,2)/2) / np.sqrt(2*np.pi)
仍然以某股票为例,假设股票价格是5.8元,其他参数不变(执行价格6元,无风险收益4%,波动率24%,剩余时间为6个月)
vega_option(S=5.8, K=6, sigma=0.24, r=0.04, T=0.5)
# 输出
>>>1.6361427349666724
S_list = np.linspace(3.0, 10.0, 100)
vega_list = vega_option(S = S_list, K=6, sigma=0.24, r=0.04, T=0.5)
plt.figure(figsize=(8,6))
plt.plot(S_list, vega_list, 'b-', lw=2.5)
plt.xlabel('股票价格', fontsize=13)
plt.ylabel('Vega', fontsize=13, rotation=90)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.title('股票价格与期权Vega的关系', fontsize=14)
plt.grid('True');
上图表示了基础资产价格(股票价格)与期权Vega值之间的关系,很类似于一个正态分布。当基础资产价格从0到接近于执行价格的区间内,期权的vega是基础资产价格的递增函数;当股票价格接近于执行价格的时候,期权vega达到最大;而当基础资产价格处于大于期权执行价格的区间时,期权的vega则是基础资产价格的递减函数。
T_list = np.linspace(0.1, 5.0, 100)
vega1 = vega_option(S=8, K=6, sigma=0.24, r=0.04, T=T_list)
vega2 = vega_option(S=6, K=6, sigma=0.24, r=0.04, T=T_list)
vega3 = vega_option(S=4, K=6, sigma=0.24, r=0.04, T=T_list)
plt.figure(figsize=(8,6))
plt.plot(T_list, vega1, 'b-', label='实值看涨期权', lw=2.5)
plt.plot(T_list, vega2, 'r-', label='平价看涨期权', lw=2.5)
plt.plot(T_list, vega3, 'g-', label='虚值看涨期权', lw=2.5)
plt.xlabel('期权期限', fontsize=13)
plt.ylabel('Vega', fontsize=13, rotation=90)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.title('期权期限与期权Vega的关系', fontsize=14)
plt.legend(fontsize=13)
plt.grid('True');
上图中的3条曲线从上往下依次是平价看涨期权、虚值看涨期权以及实值看涨期权。从图中不难发现,无论是实值、虚值还是平价期权,Vega值都是期权期限的递增函数,因此,当波动率发生变化时,期限较长的期权价格的变化要比期限较短期权的价格变化更大。需要注意的是,在本例中,在相同期限的条件下,平价看涨期权的Vega值要高于虚值看涨期权,而虚值看涨期权的vega值则又大于实值看涨期权,但是这种关系并非一直成立,会随着期权实值和虚值程度的变化而发生改变。
期权的Rho表示期权价值变化与无风险收益率变化的比率。希腊字母Rho用于衡量当其他变量保持不变时,期权价值对于无风险收益率变化的敏感性,具体是指当无风险收益率变化1%(比如从3%上升至4%)导致期权价值变化0.01Rho。
def rho_option(S,K,sigma,r,T,optype):
'''计算欧式期权的Theta值
S 期权基础资产的价格
K 期权行权价
sigma 基础资产价格百分比变化的波动率
r 无风险收益率
T 期权合约剩余时间(年)
optype 期权类型;'call'看涨,'put'看跌
'''
d1 = (np.log(S/K) + (r + pow(sigma,2)/2)*T) / (sigma*np.sqrt(T))
d2 = d1 - sigma*np.sqrt(T)
if optype=='call':
rho = K * T * np.exp(-r*T) * norm.cdf(d2)
else:
rho = -K * T * np.exp(-r*T) * norm.cdf(-d2)
return rho
沿用前面的例子,假设当前股票价格是5元
rho_option(S=5, K=6, sigma=0.24, r=0.04, T=0.5, optype='call')
# 输出
>>> 0.43773265670272715
沿用前面的例子,观察股票价格和Rho的关系
S_list = np.linspace(3.0, 10.0, 100)
rho_clist = rho_option(S_list, K=6, sigma=0.24, r=0.04, T=0.5, optype='call')
rho_plist = rho_option(S_list, K=6, sigma=0.24, r=0.04, T=0.5, optype='put')
plt.figure(figsize=(8,6))
plt.plot(S_list, rho_clist, 'b-', label='看涨期权', lw=2.5)
plt.plot(S_list, rho_plist, 'r-', label='看跌期权', lw=2.5)
plt.xlabel('股票价格', fontsize=13)
plt.ylabel('Rho', fontsize=13, rotation=90)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.title('股票价格与期权Rho的关系', fontsize=14)
plt.legend(fontsize=13)
plt.grid('True');
上图刻画了期权基础资产价格与期权Rho值之间的关系,显然,无论是看涨期权还是看跌期权,Rho值都是基础资产价格的递增函数;同时,无论是看涨期权还是看跌期权,实值期权Rho的绝对值都是大于虚值期权Rho的绝对值。
仍然用例子中的股票观察期限与Rho的关系
T_list = np.linspace(0.1, 5.0, 100)
rho1 = rho_option(S=8, K=6, sigma=0.24, r=0.04, T=T_list, optype='call')
rho2 = rho_option(S=6, K=6, sigma=0.24, r=0.04, T=T_list, optype='call')
rho3 = rho_option(S=4, K=6, sigma=0.24, r=0.04, T=T_list, optype='call')
plt.figure(figsize=(8,6))
plt.plot(T_list, rho1, 'b-', label='实值看涨期权', lw=2.5)
plt.plot(T_list, rho2, 'r-', label='平价看涨期权', lw=2.5)
plt.plot(T_list, rho3, 'g-', label='虚值看涨期权', lw=2.5)
plt.xlabel('期权期限', fontsize=13)
plt.ylabel('Rho', fontsize=13, rotation=90)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.title('期权期限与期权Rho的关系', fontsize=14)
plt.legend(fontsize=13)
plt.grid('True');
上图显示了实值看涨期权、平价看涨期权、虚值看涨期权的Rho值随期权期限变化的规律。图中有3条曲线,从上往下依次是实值、平价和虚值看涨期权。从图中可以得到两个结论:一是看涨期权Rho值都是期权期限的递增函数,越接近到期日,Rho值越小相反则越大;二是在相同期限的条件下,实值看涨期权Rho值大于平价看涨期权,平价看涨期权的Rho值又高于虚值看涨期权。