期权Greek之theta(Θ)

前言

前一篇文章对期权希腊值的delta进行了介绍,解析来将对期权希腊值中的theta进行介绍。

一、theta(Θ)

Theta是期权价格对时间的偏导数,可以理解为期权价格随时间变化的速率,在其他条件不变情况下,期权价格对时间(T-t)的偏导数,计算公式为

对于看涨期权而言,Θcall的计算公式为:

对于看跌期权而言,Θput计算公式为:

其中:

从公式中可以看出,看跌期权的Θ比相应的看涨期权的Θ高出rKe^(-r(T-t))。

Theta(Θ) 用于描述 portfolio 价值随时间的变化率,Θ有时称为组合的时间损耗,即time decay。

二、Θ与标的资产价格的关系

1.Θcall与St的关系

首先,我们将本章需要的函数先进行定义(同上一章类似)

# theta
import numpy as np
import scipy.stats as st
from matplotlib import cm
import math
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as p3
from scipy.integrate import quad# 定义标准正态分布的概率密度函数
def dN(x):'''标准正态分布的概率密度函数公式'''return math.exp(-0.5*x**2)/math.sqrt(2*math.pi)
def N(d):'''计算概率密度函数'''return quad(lambda x:dN(x),-20,d,limit=50)[0]
def d1f(St, K, t, T, r, sigma):'''BS模型中的d1'''d1=(math.log(St/K)+(r+0.5*sigma**2)*(T-t))/(sigma*math.sqrt(T-t))return d1
# 定义期权的theta
def call_theta(St, K, t, T, r, sigma):'''欧式看涨期权的theta'''d1 = d1f(St, K, t, T, r, sigma)d2 = d1 - sigma * math.sqrt(T - t)call_theta = -(St * dN(d1) * sigma / (2 * math.sqrt(T - t)) +r * K * math.exp(-r * (T - t)) * N(d2))return call_theta
def put_theta(St, K, t, T, r, sigma):'''欧式看跌期权的theta'''d1 = d1f(St, K, t, T, r, sigma)d2 = d1 - sigma * math.sqrt(T - t)put_theta = -St * dN(d1) * sigma / (2 * math.sqrt(T - t))+r * K * math.exp(-r * (T - t)) * N(-d2)return put_theta

上述代码是对欧式看涨期权和看跌期权的theta进行的定义
接下来对欧式看涨期权theta与标的资产价格之间的关系进行讨论

t=0
T=1
r=0.015
sigma=0.2
K1=2.6
K2=2.7
K3=2.8
K4=2.9
price=np.arange(1.4,4,0.01)theta=[call_theta(St, K1, t, T, r, sigma) for St in price]
theta_1=[call_theta(St, K2, t, T, r, sigma) for St in price]
theta_2=[call_theta(St, K3, t, T, r, sigma) for St in price]
theta_3=[call_theta(St, K4, t, T, r, sigma) for St in price]
plt.figure(figsize=(12, 8))# 看涨期权
plt.plot(price, theta,  label="K=2.6")
plt.plot(price, theta_1, label="K=2.7")
plt.plot(price, theta_2, label="K=2.8")
plt.plot(price, theta_3, label="k=2.9")
plt.xlabel('stock value')
plt.ylabel("call_theta value")
plt.title('call_theta value of different strike option')
plt.grid()
plt.legend()

结果如图所示。从图中可以看出,对于 call, Θ 总是小于 0 的。即随着到期日临近,期权越来越不值钱。

此外,当看涨期权的标的资产价格很低时,期权的Θ接近于0,对应于一个平价看涨期权,其Θ很大且是负值,当标的资产的价格很高时,Θ接近于

并且,随着行权价格的提高,平价期权的Θ越来越小。

2.Θput与St的关系

# 看跌期权
t=0
T=1
r=0.015
sigma=0.2
K1=2.6
K2=2.7
K3=2.8
K4=2.9
price = np.arange(0.2, 5.8, 0.001)
put_theta_0=[put_theta(St, K1, t, T, r, sigma) for St in price]
put_theta_1=[put_theta(St, K2, t, T, r, sigma) for St in price]
put_theta_2=[put_theta(St, K3, t, T, r, sigma) for St in price]
put_theta_3=[put_theta(St, K4, t, T, r, sigma) for St in price]plt.figure(figsize=(12, 8))
plt.plot(price, put_theta_0,label="K=2.6")
plt.plot(price, put_theta_1,label="K=2.7")
plt.plot(price, put_theta_2,label="K=2.8")
plt.plot(price, put_theta_3,label="K=2.9")plt.xlabel('stock value')
plt.ylabel("put_theta value")
plt.title('put_theta value of different strike option')
plt.grid()
plt.legend()plt.axhline(0,color='r',linestyle="--",alpha=0.8)  # 添加y轴参考线

通过下图可知,对于看跌期权,当期权处于深度价内时,即S<<K,期权的Θ可能是正值。

与实值、虚值期权相比,平价期权Theta 负值最大。

三、Θ与到期天数之间的关系

1.Θcall与T的关系

# 看涨期权
St=2.7
T = np.arange(0.01, 1, 0.001)
call_theta_0=[call_theta(St, K1, t, T, r, sigma) for T in T]
call_theta_1=[call_theta(St, K2, t, T, r, sigma) for T in T]
call_theta_2=[call_theta(St, K3, t, T, r, sigma) for T in T]# 画图
plt.figure(figsize=(12, 8))
plt.grid()
plt.xlabel('T')
plt.ylabel("call_theta value")
plt.title('call_theta value of different T')
plt.grid()
plt.legend(loc=1)
# 看涨期权
plt.plot(T, call_theta_0,  label="ITM/K=2.6")
plt.plot(T, call_theta_1, label="ATM/K=2.7")
plt.plot(T, call_theta_2, label="OTM/K=2.8")
plt.grid()
plt.legend()


从图中可以看出,剩余期限越短, (time decay) 速度越快, Θ\ThetaΘ 负得越多,与实值、虚值期权相比,平价期权Theta 负值最大。越快到期 平值的敏感性越高

2.Θput与T的关系

# #
K1=2.6
K2=2.5
K3=2.4
St=2.5
T = np.arange(0.01, 1, 0.001)
pput_theta=[put_theta(St, K1, t, T, r, sigma) for T in T]
pput_theta_1=[put_theta(St, K2, t, T, r, sigma) for T in T]
pput_theta_2=[put_theta(St, K3, t, T, r, sigma) for T in T]# # 看跌期权
plt.figure(figsize=(12, 8))plt.xlabel('T')
plt.ylabel("put_theta value")
plt.title('put_theta value of different T')plt.plot(T, pput_theta,label='OTM/K=2.6')
plt.plot(T, pput_theta_1,label='ATM/K=2.5')
plt.plot(T, pput_theta_2,label='ITM/K=2.4')
plt.grid()
plt.legend()

对看跌期权而言,其theta与T的关系和看涨期权基本一致。

四、Θ与St、T之间的关系

接下来进行建模。将theta与标的资产价格、到期天数之间的关系进行描述。

1.Θcall与St、T的关系

def plot_greeks(function, greek):# 参数St =2.5  # 50ETF valuet = 0.0  # valuation dater = 0.015  # risk-less short ratesigma = 0.2  # volatility# 计算期权的greektlist = np.linspace(0.01, 1, 25)klist = np.linspace(2.2, 2.9, 25)V = np.zeros((len(tlist), len(klist)), dtype=np.float)for j in range(len(klist)):for i in range(len(tlist)):V[i, j] = function(St, klist[j], t, tlist[i], r, sigma)# 3D Plottingx, y = np.meshgrid(klist, tlist)fig = plt.figure(figsize=(9, 5))plot = p3.Axes3D(fig)plot.plot_surface(x, y, V,cmap='rainbow')plot.set_xlabel('strike $K$')plot.set_ylabel('maturity $T$')plot.set_zlabel('%s(K, T)' % greek)

2.Θput与St、T的关系

plot_greeks(put_theta, 'theta')


从图中可以看出,theta在短期平价期权的附近最小,随着时间的推移,平值期权的theta(Θ)会逐渐增大。

总结

Theta 值大小反映了期权购买者随时间推移所损失的价值,因而Theta 值仍是一个重要的敏感性指标。

期权希腊值之theta【python复现】相关推荐

  1. 期权希腊值之gamma【python复现】

    期权Greek之gamma(Γ) 前言 前两篇文章对期权希腊值的delta和theta进行了介绍,解析来将对期权希腊值中的gamma进行介绍. 一.gamma概念 一个期权交易组合的gamma(Γ)是 ...

  2. 期权Greek之vega【python复现】

    期权希腊值之vega 前言 前三篇文章介绍了期权希腊值的delta,theta,gamma.在这篇文章中,我们将对期权的vega进行介绍. 一.期权的vega 在计算希腊值时,通常将波动率看作隐含波动 ...

  3. 期权希腊值之delta【python复现】

    期权Greek之delta 前言 期权的希腊值(Greek)包括五个,分别为delta,theta,gamma,vega,rho.在这一章中,我将主要对期权的Greek中的delta进行介绍. 一.什 ...

  4. 如何提升 ETF 期权隐含波动率和希腊值的计算速度?

    期权的隐含波动率可以反应市场对未来的预期,通常使用牛顿法和二分法来计算.这两种方法都需要频繁迭代,且迭代次数不能确定,核心代码无法向量化,因此只能通过循环来逼近求解.这就导致在期权相关计算中,隐含波动 ...

  5. (三十五)相关变量与期权价格的关系、希腊值

    BS公式中变量与期权价格的关系   根据BS公式我们知道一共有5个变量共同影响了期权价格:S.K.r.σ和t,下面我们就来画图直观地感受一下这些变量与看涨看跌期权价格的关系.沿用上一节最后一个例子的数 ...

  6. 三维点云学习(4)5-DBSCNA python 复现-2-kd-_tree加速

    三维点云学习(4)5-DBSCNA python 复现-2-kd-tree加速 因为在上一章DBSCAN在构建距离矩阵时,需要构建一个NN的距离矩阵,严重占用资源,古采用kd_tree搜索进行进一步的 ...

  7. 关于对《弹道导弹攻防对抗的建模与仿真》一书中部分章节模型的Python复现

    Attack-Defense Attack-Defense是对<弹道导弹攻防对抗的建模与仿真>(Attack-Defense Counterwork Modeling and Simula ...

  8. 如何用Python复现吉布斯现象?

    1. 什么是吉布斯(Gibbs)现象?   在信号处理中,有很多很有意思的现象,比如由于栅栏效应引起的频谱泄露,和我们这一讲要讲到的吉布斯现象.   吉布斯现象和频谱泄露多少有些相像,频谱泄露是因为进 ...

  9. delta值、gamma值、theta值、vega值、Rho值 (

    delta值.gamma值.theta值.vega值.Rho值 (2011-11-07 22:10:48)  http://blog.sina.com.cn/s/blog_54df82df0100w1 ...

最新文章

  1. 初级开发者vs高级开发者 | 每日趣闻
  2. Kubernetes搭建Zookeeper和Kafka集群
  3. 【LDA学习系列】M-H采样python代码
  4. 基于ArcGIS JS API 4.11实现对FeatureLayer的多变量渲染
  5. 熟悉Redhat 9.0
  6. java基础集合数组间的转换(java集合五)
  7. Serializable中的serialVersionUID
  8. js拼的onclick调用方法需要注意的地方 之二
  9. IDEA最全使用教程
  10. linkedblockingqueue使用_学会java这几个线程池的使用,会使得你的程序效率提升十倍...
  11. python - jpg图片转pdf
  12. 梳理 | 交叉熵、相对熵(KL散度)、JS散度和Wasserstein距离(推土机距离)
  13. 100套PPT模板用于论文答辩、工作方案等
  14. 无法打开包括文件的解决办法
  15. 行列式计算程序(基于Python)
  16. 耗时两周手撸了一个 RPC 轮子,是驴子是马拉出来遛遛
  17. 白噪声,有色噪声的定义、特性及其MATLAB仿真
  18. VSCode调试代码的三种方式
  19. 利用archetype创建maven脚手架和新项目
  20. 收藏!如何建设数据团队 | 2020年《顶级数据团队建设全景报告》重磅发布

热门文章

  1. 小米净水器底部漏水_漏水传感器:您可能没有的最容易被忽视的智能家居设备...
  2. 2022 中国开源年度报告重磅发布!
  3. 海昇智:拼多多店铺日常管理该怎么做?
  4. java捕鱼达人游戏(大部分功能都已实现)
  5. 手把手教你配置MHA高可用,学不会我把电脑寄给你
  6. 计算机毕业设计 SSM+Vue租购汽车管理系统 车辆租赁类型管理系统 租车违章管理系统
  7. 今日头条项目各种问题
  8. 数据告诉你谁会是下一个BAT
  9. 应届生面试嵌入式工程师的一点点经验
  10. 排序算法总结和java实现