上一篇 隐含波动率

文章目录

  • 编程金融小白学 股票期权
    • 希腊字母 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相关推荐

  1. 编程金融小白学 股票期权 lv.6 希腊字母 Gamma

    上一篇 隐含波动率 文章目录 编程金融小白学 股票期权 希腊字母 II 波动率 Sigma (σ)(\sigma)(σ) Delta (Δ)(\Delta)(Δ) - 标的资产价格 特征 I 特征 I ...

  2. 编程金融小白学 股票期权 lv.7 希腊字母 Theta

    上一篇 希腊字母 Gamma 文章目录 编程金融小白学 股票期权 希腊字母 IV 波动率 Sigma (σ)(\sigma)(σ) Delta (Δ)(\Delta)(Δ) - 标的资产价格 特征 I ...

  3. 编程金融小白学 股票期权 lv.0 基本概念

    文章目录 编程金融小白学 股票期权 基本概念 什么是期权? 认购期权 认沽期权 Python 期权类 买入认购线性图 买入认沽线性图 卖出认购线性图 卖出认沽线性图 期权线性图 合约要素 实值,虚值与 ...

  4. 编程金融小白学 股票期权 lv.3 PCP 平价

    上一篇 期权策略 文章目录 编程金融小白学 股票期权 PCP PCP 平价原理 PCP 现货 正向套利操作 (Forward) 反向套利操作 (Reversal) PCP 期货套利 策略构造 保护性看 ...

  5. 小白学编程“Java小白”入门解疑大全

    成功的人分几种,有一种人叫做关系户,他们渠道多,广织关系网,有一种叫做平台户,他们平台有多硬,他们就有多硬,但无论是关系户还是平台户,依靠的总是别人的手.别人的嘴巴.别人辛苦创立下来的资源,归根到底, ...

  6. 学金融会python_大学生金融小白自学Python做量化投资需要注意哪些?

    大学生金融小白自学python做量化投资需要注意些什么?量化金融其实是一个交叉复合学科,需要掌握数学.计算机.金融等方面的知识.显而易见,对于金融学背景的同学来说,就需要另外学习计算机编程的知识,而计 ...

  7. 编程小白学python知乎周刊_在知乎上学 Python - 入门篇

    写在前面 本文对知乎上关于Python入门方面的问答.文章.专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间. 这一篇主要针对的是零基础或初学Python,包括 ...

  8. java编程好学么_零基础小白学Java编程好学吗

    Java是一门不会衰落的开发语言,伴随着IT行业的兴起,目前学习java培训的人员也是变得更多了,但要想学好java的话通过自学是没有那样非常容易的事情.尤其是对于初学者的学生而言,那么零基础小白学J ...

  9. 吐血整理:小白学python编程基础(1)

    小白学Python编程基础 华丽蜕变 TIOBE开发语言排行榜 中国教育界重大变革 教育界重大变革缘由 前世今生 程序设计语言 编程语言的使命 Python的诞生 Python的发展 Python的语 ...

最新文章

  1. TWaver版3D化学元素周期表
  2. 25、Sql语句执行顺序
  3. Jackson ObjectMapper
  4. SAP CRM 中间件里的发布-订阅者模式
  5. java创建activity视图_java-动态创建的视图id始终为null-findviewbyid不起作用
  6. 在浏览器中实现复制内容到剪切板中
  7. 关与 @EnableConfigurationProperties 注解
  8. paip. http 405 的解决..
  9. java book_java_book java 图书管理系统 GUI - 下载 - 搜珍网
  10. 使用chrome浏览器插件抢小米8
  11. i++、i--与++i、--i的区别
  12. LCM5369 降压控制器 P2P替代TPS536C9
  13. meta分析 1. Risk Ratio
  14. 关于File()中的pathname的路径
  15. unix进程间的通信方式
  16. centos7 pe系统安装_如何用U盘安装CentOS7系统
  17. 互联网早报:淘宝发布购物车分享功能,双十一有望分享微信朋友圈
  18. C++封装复数类,实现复数运算
  19. RK 100 上手体验 — 机械键盘客制化入门之选?
  20. mes系统故障_MES系统上线后可能会遇到的问题

热门文章

  1. linux操作系统未正常启动提示Entering emergency mode. Exit the shell to continue
  2. Python基础必掌握的Traceback回溯机制操作详解
  3. WEBRTC RFC5766-TURN协议
  4. DOM4j解析XMl中碰到的问题解决
  5. HDU-ACM程序设计——BFS(宽度优先搜索)
  6. C#(pronounced: see sharp) 与 .NET
  7. Spring Cloud之微服务之间相互调用、如何让一个微服务调用另外一个微服务
  8. 如何提高测试人员问题分析能力
  9. 构建ROP链实现远程栈溢出
  10. 计算机如何正确开关机,初学台式机电脑开关机的正确操作 电脑定时关机的基础知识...