编程金融小白学 股票期权 lv.5 希腊字母 Delta
上一篇 隐含波动率
文章目录
- 编程金融小白学 股票期权
- 希腊字母 I
- 波动率 Sigma (σ)(\sigma)(σ)
- Delta (Δ)(\Delta)(Δ) — 标的资产价格
- 特征 I
- 特征 II
- 特征 III
- 特征 IV
- 证券组合的 Delta 值
- Delta 中性
- Theta (θ)(\theta)(θ) — 时间
- Vega (ϑ)(\vartheta)(ϑ) — 隐含波动率
- Rho (r)(r)(r) — 利率
- Gamma
- 下篇 [希腊字母 Gamma](https://blog.csdn.net/Varalpha/article/details/105885174)
编程金融小白学 股票期权
希腊字母 I
运用希腊字母 是对期权 比较静态的敏感分析
含义:其他条件不变,(某因素)变化一单位,期权价格大概变化多少?
- 标的资产价格: Delta (Δ)(\Delta)(Δ)
- 时间: Theta (θ)(\theta)(θ)
- 隐含波动率: Vega (ϑ)(\vartheta)(ϑ)
- 利率: Rho (r)(r)(r)
Gamma (γ)(\gamma)(γ): 标的价格变动1单位时,Delta Δ\DeltaΔ 变多少?
波动率 Sigma (σ)(\sigma)(σ)
- 详情 请看上一篇 隐含波动率
Delta (Δ)(\Delta)(Δ) — 标的资产价格
标的资产价格变化一单位,期权价格大概变化多少?
例:
- Delta = 0.3141 意味着
- 如果指数上涨 10 点,期权价格大概上涨 3.141点
Δ=∂c∂S\Delta = \frac{\partial c}{\partial S}Δ=∂S∂c
期权价格曲线切线斜率(动态时变)
(无红利欧式期权)的4个特征:
特征 I
标的价格 | 看涨多头 | 看涨空头 | 看跌多头 | 看跌空头 |
---|---|---|---|---|
区间 | 0<Δ<10<\Delta<10<Δ<1 | 符号相反 | −1<Δ<0-1<\Delta<0−1<Δ<0 | 符号相反 |
虚值 | Δ→0\Delta\to0Δ→0 | Δ→0\Delta\to0Δ→0 | Δ→0\Delta\to0Δ→0 | Δ→0\Delta\to0Δ→0 |
平价 | Δ≈0.5\Delta\approx0.5Δ≈0.5 | Δ≈−0.5\Delta\approx-0.5Δ≈−0.5 | Δ≈−0.5\Delta\approx-0.5Δ≈−0.5 | Δ≈0.5\Delta\approx0.5Δ≈0.5 |
实值 | Δ→1\Delta\to1Δ→1 | Δ→−1\Delta\to-1Δ→−1 | Δ→−1\Delta\to-1Δ→−1 | Δ→1\Delta\to1Δ→1 |
- 利用上篇的BS定价模型绘制图像 更好的去理解
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt # 画图
plt.rcParams['font.sans-serif'] = ['FangSong'] # 设置中文
plt.rcParams['axes.unicode_minus'] = False # 设置中文负号class BlackScholes:def __init__(self, S0, X, r, T, sigma=0.3,t=0):self.S0 = S0self.X = Xself.r = rself.sigma = sigmaself.dT = T-tdef d1(self):return(np.log(self.S0/self.X)+(self.r+self.sigma**2/2)*(self.dT))/(self.sigma*np.sqrt(self.dT))def d2(self):return self.d1()-self.sigma*np.sqrt(self.dT)def calc(self, call_put):if call_put in {'c','C','call','Call','CALL'}:return self.S0 * norm.cdf(self.d1())- \self.X*np.exp(-self.r*self.dT)*norm.cdf(self.d2())elif call_put in {'p','P','put','Put','PUT'}:return self.X*np.exp(-self.r*self.dT)*norm.cdf(-self.d2())- \self.S0 * norm.cdf(-self.d1())raise NameError('Must be call or Put!',call_put)def imp_vol(self,call_put,mktprice):price = 0sigma = 0.3up, low = 1,0loop = 0while abs(price-mktprice)>1e-6 and loop<50:price = BlackScholes(self.S0,self.X,self.r,self.dT,sigma).calc(call_put)if (price-mktprice)>0:up = sigmasigma = (sigma+low)/2else:low = sigmasigma = (sigma+up)/2loop+=1return sigma
# 标的价格S做自变量 求因变量c
S = np.arange(2.5,3.5,0.001)
BS = [BlackScholes(s,3., 0.05, 0.16)for s in S]
c = np.array([bs.calc('c') for bs in BS])
# 绘图
plt.figure(figsize=(8,5), dpi=200)
plt.plot(S,c,'r',lw=2)
annotate_x=[2.6,3.,3.4]
annotate_y=[BlackScholes(s,3., 0.05, 0.16).calc('c') for s in annotate_x]
annotate_name = ['虚值','平价','实值']
annotate_symbol= [r'$\Delta \to 0$',r'$\Delta \approx 0.5$',r'$\Delta \to 1$']
for x,y,z,s in zip(annotate_x,annotate_y,annotate_name,annotate_symbol):plt.annotate(z,xy=(x-0.05,y+0.08),weight="bold")plt.annotate(s,xy=(x,y),xytext=(x-0.05,y+0.05),arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="r"))
plt.annotate(r'$0<\Delta<1$',xy=(2.95,0.01))
plt.xlabel('标的价格')
plt.ylabel('看涨期权价格')
plt.title('看涨期权多头 Delta 特征')
plt.show()
# 标的价格S做自变量 求因变量c
c = np.array([-1*bs.calc('c') for bs in BS])
plt.figure(figsize=(8,5), dpi=200)
plt.plot(S,c,'r',lw=2)
annotate_x=[2.6,3.,3.4]
annotate_y=[-1*BlackScholes(s,3., 0.05, 0.16).calc('c') for s in annotate_x]
annotate_name = ['虚值','平价','实值']
annotate_symbol= [r'$\Delta \to 0$',r'$\Delta \approx -0.5$',r'$\Delta \to -1$']
for x,y,z,s in zip(annotate_x,annotate_y,annotate_name,annotate_symbol):plt.annotate(z,xy=(x-0.1,y-0.08),weight="bold")plt.annotate(s,xy=(x,y),xytext=(x-0.1,y-0.05),arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="r"))
plt.annotate(r'$0>\Delta>-1$',xy=(2.95,-0.5))
plt.xlabel('标的价格')
plt.ylabel('看涨期权价格')
plt.title('看涨期权空头 Delta 特征')
plt.show()
# 标的价格S做自变量 求因变量p
p = np.array([bs.calc('p') for bs in BS])
plt.figure(figsize=(8,5), dpi=200)
plt.plot(S,p,'r',lw=2)
annotate_x=[2.6,3.,3.4]
annotate_y=[BlackScholes(s,3., 0.05, 0.16).calc('p') for s in annotate_x]
annotate_name = ['实值','平价','虚值']
annotate_symbol= [r'$\Delta \to -1$',r'$\Delta \approx -0.5$',r'$\Delta \to 0$']
for x,y,z,s in zip(annotate_x,annotate_y,annotate_name,annotate_symbol):plt.annotate(z,xy=(x-0.05,y+0.08),weight="bold")plt.annotate(s,xy=(x,y),xytext=(x-0.05,y+0.05),arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="r"))
plt.annotate(r'$-1<\Delta<0$',xy=(2.9,0.01))
plt.xlabel('标的价格')
plt.ylabel('看跌期权价格')
plt.title('看跌期权多头 Delta 特征')
plt.show()
# 标的价格S做自变量 求因变量p
p = np.array([-1*bs.calc('p') for bs in BS])
plt.figure(figsize=(8,5), dpi=200)
plt.plot(S,p,'r',lw=2)
annotate_x=[2.6,3.,3.4]
annotate_y=[-1*BlackScholes(s,3., 0.05, 0.16).calc('p') for s in annotate_x]
annotate_name = ['实值','平价','虚值']
annotate_symbol= [r'$\Delta \to 1$',r'$\Delta \approx 0.5$',r'$\Delta \to 0$']
for x,y,z,s in zip(annotate_x,annotate_y,annotate_name,annotate_symbol):plt.annotate(z,xy=(x-0.05,y-0.08),weight="bold")plt.annotate(s,xy=(x,y),xytext=(x-0.05,y-0.05),arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="r"))
plt.annotate(r'$1>\Delta>0$',xy=(2.95,-0.5))
plt.xlabel('标的价格')
plt.ylabel('看跌期权价格')
plt.title('看跌期权空头 Delta 特征')
plt.show()
特征 II
- PCP 平价原理
- 看涨期权Delta=看跌期权Delta+1看涨期权 Delta = 看跌期权 Delta + 1看涨期权Delta=看跌期权Delta+1
c+X1+r(T−t)=p+S→∂c∂S=∂p∂S+1c + \frac{X}{1+r(T-t)}=p+S \to \frac{\partial c}{\partial S}= \frac{\partial p}{\partial S}+1c+1+r(T−t)X=p+S→∂S∂c=∂S∂p+1
# 其实没必要这么复杂。。。
from sklearn import linear_model
def d1(X,Y,Window=5):result_x, result_y = [],[]step = Window//2for i in range(len(X)-Window):reg = linear_model.LinearRegression()reg.fit(X[i:i+Window].reshape(-1,1),Y[i:i+Window].reshape(-1,1))result_y.append(reg.coef_[0][0])result_x.append(X[i+step])return result_x,result_y
bc = np.array([bs.calc('c') for bs in BS]) # Buy Call
bp = np.array([bs.calc('p') for bs in BS]) # Buy Put
bc_x,bc_y = d1(S,bc) # Buy Call Delta
bp_x,bp_y = d1(S,bp) # Buy Put Delta
plt.figure(figsize=(8,5), dpi=200)
plt.plot(bc_x,bc_y,'r',label='Call')
plt.plot(bp_x,bp_y,'green',label='Put')
plt.legend(loc='best')
plt.ylabel('Delta 值')
plt.xlabel('标的价格')
plt.grid(True)
plt.show()
- 如图,可以看出来 他们的Delta 相差1
特征 III
- 快到期时,实值、虚值、和平值期权的Delta 差异比较大
- 剩余期限比较大的话 时间价值比较大 它的期权价格曲线相对平滑,所以它的切线斜率比较小
T = np.arange(0.01,2,0.001)
BS_T_r = [(BlackScholes(3.49,3., 0.05, t),BlackScholes(3.51,3., 0.05, t)) for t in T] # 实值
BS_T_e = [(BlackScholes(2.99,3., 0.05, t),BlackScholes(3.01,3., 0.05, t)) for t in T] # 平价
BS_T_i = [(BlackScholes(2.49,3., 0.05, t),BlackScholes(2.51,3., 0.05, t)) for t in T] # 虚值plt.figure(figsize=(8,5), dpi=200)
for BS_T,labels,color in zip([BS_T_r,BS_T_e,BS_T_i],['实值','平价','虚值'],['r','orange','g']):bc = np.array([(bs2.calc('c')-bs1.calc('c'))/0.02 for bs1,bs2 in BS_T]) # Buy Call Deltaplt.plot(T,bc,color,label=labels)
plt.legend(loc='best')
plt.ylabel('Delta 值')
plt.title('看涨期权的Delta 与期限的关系')
plt.xlabel('期权期限(年)')
plt.xticks([0,1,2])
plt.grid(True)
plt.show()
plt.figure(figsize=(8,5), dpi=200)
for BS_T,labels,color in zip([BS_T_r,BS_T_e,BS_T_i],['虚值','平价','实值'],['g','orange','r']):# 与认购相反bp = np.array([(bs2.calc('p')-bs1.calc('p'))/0.02 for bs1,bs2 in BS_T]) # Buy Call Deltaplt.plot(T,bp,color,label=labels)
plt.legend(loc='best')
plt.ylabel('Delta 值')
plt.title('看跌期权的Delta 与期限的关系')
plt.xlabel('期权期限(年)')
plt.xticks([0,1,2])
plt.grid(True)
plt.show()
特征 IV
- 波动率较低时,实值、虚值、和平值期权的Delta 差异比较大
- 原理与特征 III 相同
Sigma = np.arange(0.01,1,0.001)
t = 0.5
BS_S_r = [(BlackScholes(3.49,3., sigma, t),BlackScholes(3.51,3., sigma, t)) for sigma in Sigma] # 实值
BS_S_e = [(BlackScholes(2.99,3., sigma, t),BlackScholes(3.01,3., sigma, t)) for sigma in Sigma] # 平价
BS_S_i = [(BlackScholes(2.49,3., sigma, t),BlackScholes(2.51,3., sigma, t)) for sigma in Sigma] # 虚值plt.figure(figsize=(8,5), dpi=200)
for BS_S,labels,color in zip([BS_S_r,BS_S_e,BS_S_i],['实值','平价','虚值'],['r','orange','g']):bc = np.array([(bs2.calc('c')-bs1.calc('c'))/0.02 for bs1,bs2 in BS_S]) # Buy Call Deltaplt.plot(Sigma,bc,color,label=labels)
plt.legend(loc='best')
plt.ylabel('Delta 值')
plt.title('看涨期权的Delta 与波动率的关系')
plt.xlabel('波动率')
plt.xticks([0,0.5,1],['0%','50%','100%'])
plt.grid(True)
plt.show()
plt.figure(figsize=(8,5), dpi=200)
for BS_S,labels,color in zip([BS_S_r,BS_S_e,BS_S_i],['虚值','平价','实值'],['g','orange','r']):# 与认购相反bp = np.array([(bs2.calc('p')-bs1.calc('p'))/0.02 for bs1,bs2 in BS_S]) # Buy Call Deltaplt.plot(Sigma,bp,color,label=labels)
plt.legend(loc='best')
plt.ylabel('Delta 值')
plt.title('看跌期权的Delta 与波动率的关系')
plt.xlabel('波动率')
plt.xticks([0,0.5,1],['0%','50%','100%'])
plt.grid(True)
plt.show()
证券组合的 Delta 值
头寸 | Delta | 例子(N为数量) |
---|---|---|
现货多头 | 1 | 4单位: 4×1=44\times 1 =44×1=4 |
现货空头 | -1 | 3单位: 3×−1=−33\times -1 =-33×−1=−3 |
期货多头 | 1 | 2单位: 2×1=22\times 1 =22×1=2 |
现货多头 | -1 | 5单位: 5×−1=−55\times -1 =-55×−1=−5 |
欧式看涨期权多头 (无红利) |
0<Δ<10<\Delta<10<Δ<1 | 5单位多头,每单位Delta为0.5: 5×0.5=2.55\times 0.5 =2.55×0.5=2.5 |
欧式看涨期权空头 (无红利) |
−1<Δ<0-1<\Delta<0−1<Δ<0 | 4单位多头,每单位Delta为-0.4: 4×−0.4=−1.64\times -0.4 =-1.64×−0.4=−1.6 |
欧式看跌期权多头 (无红利) |
−1<Δ<0-1<\Delta<0−1<Δ<0 | 3单位多头,每单位Delta为-0.5: 3×−0.5=−1.53\times -0.5 =-1.53×−0.5=−1.5 |
欧式看跌期权空头 (无红利) |
0<Δ<10<\Delta<10<Δ<1 | 2单位多头,每单位Delta为0.6: 2×0.6=1.22\times 0.6 =1.22×0.6=1.2 |
投资组合 | ∑iNi⋅Δi↑\sum_i N_i\cdot\Delta_i\uparrowi∑Ni⋅Δi↑ |
Delta 中性
- 在投资组合中 让Delta 为0 称 Delta 中性
- 意味着 投资组合对现货价格变动的一阶敏感性为 0
- 实现:运用同一标的资产的现货,期货和期权等进行相互套期保值,使证券组合的值等于0
- 特点:有期权的情况下是动态的,需要不懂调整头寸以使组合重新处于Δ\DeltaΔ中性状态,这种调整称为再均衡(Rebalancing)。
Theta (θ)(\theta)(θ) — 时间
时间变化一天,期权价格大概变化多少?
Time 时间
例:
- Theta = 1.234 意味着
- 时间每过一天,期权价格大概上涨 1.234点
Vega (ϑ)(\vartheta)(ϑ) — 隐含波动率
隐含波动率变化一百分点,期权价格大概变化多少?
Volatility 隐含波动率
例:
- Vega = 1.878 意味着
- 每隐含波动率上升1%,期权价格大概上涨 1.878点
Rho (r)(r)(r) — 利率
- Rate 利率
Gamma
- 例:
- Gamma = 0.0056,Delta = 0.3141 意味着
- 如果指数上涨 10 点,Delta大概上升至 0.3141+10∗0.0056=0.37010.3141+10*0.0056 = 0.37010.3141+10∗0.0056=0.3701
- 如果指数下跌 10 点,Delta大概下降至 0.3141−10∗0.0056=0.25810.3141-10*0.0056 = 0.25810.3141−10∗0.0056=0.2581
下篇 希腊字母 Gamma
编程金融小白学 股票期权 lv.5 希腊字母 Delta相关推荐
- 编程金融小白学 股票期权 lv.6 希腊字母 Gamma
上一篇 隐含波动率 文章目录 编程金融小白学 股票期权 希腊字母 II 波动率 Sigma (σ)(\sigma)(σ) Delta (Δ)(\Delta)(Δ) - 标的资产价格 特征 I 特征 I ...
- 编程金融小白学 股票期权 lv.7 希腊字母 Theta
上一篇 希腊字母 Gamma 文章目录 编程金融小白学 股票期权 希腊字母 IV 波动率 Sigma (σ)(\sigma)(σ) Delta (Δ)(\Delta)(Δ) - 标的资产价格 特征 I ...
- 编程金融小白学 股票期权 lv.0 基本概念
文章目录 编程金融小白学 股票期权 基本概念 什么是期权? 认购期权 认沽期权 Python 期权类 买入认购线性图 买入认沽线性图 卖出认购线性图 卖出认沽线性图 期权线性图 合约要素 实值,虚值与 ...
- 编程金融小白学 股票期权 lv.3 PCP 平价
上一篇 期权策略 文章目录 编程金融小白学 股票期权 PCP PCP 平价原理 PCP 现货 正向套利操作 (Forward) 反向套利操作 (Reversal) PCP 期货套利 策略构造 保护性看 ...
- 小白学编程“Java小白”入门解疑大全
成功的人分几种,有一种人叫做关系户,他们渠道多,广织关系网,有一种叫做平台户,他们平台有多硬,他们就有多硬,但无论是关系户还是平台户,依靠的总是别人的手.别人的嘴巴.别人辛苦创立下来的资源,归根到底, ...
- 学金融会python_大学生金融小白自学Python做量化投资需要注意哪些?
大学生金融小白自学python做量化投资需要注意些什么?量化金融其实是一个交叉复合学科,需要掌握数学.计算机.金融等方面的知识.显而易见,对于金融学背景的同学来说,就需要另外学习计算机编程的知识,而计 ...
- 编程小白学python知乎周刊_在知乎上学 Python - 入门篇
写在前面 本文对知乎上关于Python入门方面的问答.文章.专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间. 这一篇主要针对的是零基础或初学Python,包括 ...
- java编程好学么_零基础小白学Java编程好学吗
Java是一门不会衰落的开发语言,伴随着IT行业的兴起,目前学习java培训的人员也是变得更多了,但要想学好java的话通过自学是没有那样非常容易的事情.尤其是对于初学者的学生而言,那么零基础小白学J ...
- 吐血整理:小白学python编程基础(1)
小白学Python编程基础 华丽蜕变 TIOBE开发语言排行榜 中国教育界重大变革 教育界重大变革缘由 前世今生 程序设计语言 编程语言的使命 Python的诞生 Python的发展 Python的语 ...
最新文章
- TWaver版3D化学元素周期表
- 25、Sql语句执行顺序
- Jackson ObjectMapper
- SAP CRM 中间件里的发布-订阅者模式
- java创建activity视图_java-动态创建的视图id始终为null-findviewbyid不起作用
- 在浏览器中实现复制内容到剪切板中
- 关与 @EnableConfigurationProperties 注解
- paip. http 405 的解决..
- java book_java_book java 图书管理系统 GUI - 下载 - 搜珍网
- 使用chrome浏览器插件抢小米8
- i++、i--与++i、--i的区别
- LCM5369 降压控制器 P2P替代TPS536C9
- meta分析 1. Risk Ratio
- 关于File()中的pathname的路径
- unix进程间的通信方式
- centos7 pe系统安装_如何用U盘安装CentOS7系统
- 互联网早报:淘宝发布购物车分享功能,双十一有望分享微信朋友圈
- C++封装复数类,实现复数运算
- RK 100 上手体验 — 机械键盘客制化入门之选?
- mes系统故障_MES系统上线后可能会遇到的问题
热门文章
- linux操作系统未正常启动提示Entering emergency mode. Exit the shell to continue
- Python基础必掌握的Traceback回溯机制操作详解
- WEBRTC RFC5766-TURN协议
- DOM4j解析XMl中碰到的问题解决
- HDU-ACM程序设计——BFS(宽度优先搜索)
- C#(pronounced: see sharp) 与 .NET
- Spring Cloud之微服务之间相互调用、如何让一个微服务调用另外一个微服务
- 如何提高测试人员问题分析能力
- 构建ROP链实现远程栈溢出
- 计算机如何正确开关机,初学台式机电脑开关机的正确操作 电脑定时关机的基础知识...