Greeks介绍 ,python实现方案
Greeks介绍 ,python实现方案
##对冲的介绍
以期权举例能更容易的理解对冲的意义,持有期权有两种形式:
- naked position
- covered position
第一种顾名思义就是单独持有期权,假设一个人write a call option on a stock,如果到期日时股票价格高于行权价格,那么这个人就会遭受损失,股票价格越高这个损失越多,理论上资产价格可以无限增长但不能低于0,所以这个人的风险就是无限大的。
如果这个人同时持有同种股票,那么当股票价格上升时虽然option遭到损失,但是持有的股票确可以受益,在一定的stock和option的比例下,这个人可以实现0风险,拿到一个risk-free rate。这就是对冲的意义。
在金融市场中,不同的机构或这个人对于风险的需求不同,而作为一个完善的金融市场能提供多种的可能性也是其基本的职能。不同产品的诞生,包括不同的结构化,不同的风险构成,不同的期限结构,需要大量的金融工程的人士来进行设计,估值,架构。而对于如何对冲自己持有的金融产品的风险则是基金,资管,银行等机构中的人士需要重点关注的对象。
##Greeks介绍
Greeks包含多种指标,其主要用来帮助专业人士来进行对冲工作,通过不同的greeks exposure我们可以进行不同的金融产品的买卖来有效的稀释风险,达到整体的风险等级需要。
###Delta
Delta: option价格的变化随着underlying asset价格变化的比率
举个例子,假设一个人sell 1000 call option,我们可以计算出delta for this option 是0.6,那么如果我想对冲掉风险,我们就可以买入underlying asset(0.6✖️1000=600)。这样一个组合就是delta neutral的。
Delta 的计算方法有两种:
- Delta= change in call option price/ change in underlying asset price
- Delta= N(d1) 之前文章提到的BSM模型中的一部分
随便画了一个call option的delta 的图,可以看出随着underlying asset价格的变化delta是不断变化的,所以为了保持delta中性我们也需要随时调整参数。
###Theta
Theta:option价格的变化随着到期时间的变化的比率
Theta 的计算方法也分为两种,第一种就是change in price/change in time。
第二种也要用到BSM模型中的一部分具体的公式很复杂,可以网上搜索一下很快就出来了。
介绍下theta的特点吧:
- 对于put和call,theta的影响是一样的
- 当underlying asset的价格等于执行价格时候,theta是最明显的,也就是在at-the-money的情况下
###Gamma
Gamma:delta的变化随着underlying asset价格变化的比率
公式同样,两种方法,一种是delta的导数,第二章运用BSM
Gamma,和delta同样的重要,delta仅仅能对冲掉价格小范围变化产生的风险,而gamma则能对冲掉价格大范围变化的风险。所以同时使用delta和gamma是非常有必要的。
Gamma也有很多特点,图片可以看出其在at-the-money时是最大的也就是说delta的变化最大。
###Vega
Vega:形容的是option价格的变化随着sensitivity变化的比率
###Rho
Rho:形容的是option价格的变化随着risk-free rate变化的比率
##最后附上python的code
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import math
from BSM.option import d1f,N,dN
#
#Functions for greeks
#
def BSM_delta (St,K,t,T,r,sigma):d1=d1f(St,K,t,T,r,sigma)delta=N(d1)return deltadef BSM_gamma(St,K,t,T,r,sigma):d1=d1f(St,K,t,T,r,sigma)gamma=dN(d1)/(St*sigma*math.sqrt(T-t))return gammadef BSM_theta(St,K,t,T,r,sigma):d1 = d1f(St, K, t, T, r, sigma)d2 = d1 - sigma * math.sqrt(T - t)theta = -(St * dN(d1) * sigma / (2 * math.sqrt(T - t))+ r * K * math.exp(-r * (T - t)) * N(d2))return thetadef BSM_rho(St,K,t,T,r,sigma):d1 = d1f(St, K, t, T, r, sigma)d2 = d1 - sigma * math.sqrt(T - t)rho = K * (T - t) * math.exp(-r * (T - t)) * N(d2)return rhodef BSM_vega(St,K,t,T,r,sigma):d1 = d1f(St, K, t, T, r, sigma)vega = St * dN(d1) * math.sqrt(T - t)return vega
#
#Plotting
#
def plot_greeks(function,greek):# model parametersSt = 100.0 # index levelK = 100.0 # option striket = 0.0 # valuation dateT = 1.0 # maturity dater = 0.05 # risk-less short ratesigma = 0.2 # volatility# Greek Calculationstlist = np.linspace(0.01, 1, 50)klist = np.linspace(80, 120, 50)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 = Axes3D(fig)plot.plot_wireframe(x, y, V)plot.set_xlabel('strike $K$')plot.set_ylabel('maturity $T$')plot.set_zlabel('%s(K, T)' % greek)
Greeks介绍 ,python实现方案相关推荐
- BSM模型心得,python实现方案
#BSM模型心得,python实现方案 BSM简介 首先对于BSM模型先简单介绍一下,接触过期权的人应该都不陌生,BSM模型全称Black-Scholes-Merton model,其主要的贡献是提供 ...
- python 布莱克舒尔斯_BSM模型心得,python实现方案
#BSM模型心得,python实现方案 ##BSM简介 首先对于BSM模型先简单介绍一下,接触过期权的人应该都不陌生,BSM模型全称Black-Scholes-Merton model,其主要的贡献是 ...
- 介绍Python中的__future__模块
这篇文章主要介绍了介绍Python中的__future__模块,__future__模块使得在Python2.x的版本下能够兼容更多的Python3.x的特性,需要的朋友可以参考下 Python的每个 ...
- python软件界面-python软件界面介绍(python软件介绍)
python软件界面介绍 1.接口初始化 当我们使用pycharm工具时,我们将遇到的第一个问题是,在进行各种配置后界面变得混乱时,我们该怎么办?我们应该还原,那么如何还原初始设置? 尽管此工具是从e ...
- python位运算符_详细介绍Python语言中的按位运算符
按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下: 按位与 ( bitwise and of x and y ) & 举例: 5&3 = 1 解释: 101 ...
- python的六个类型_介绍Python中6个序列的内置类型
原标题:介绍Python中6个序列的内置类型 1.Python中6个序列的内置类型分别是什么? Python包含6中内建的序列,即列表.元组.字符串.Unicode字符串.buffer对象和 xran ...
- opencv介绍+python调取图片
opencv介绍+python调取图片 opencv介绍 简介 优势 python调取图片 前期准备 程序 运行结果 后续 opencv介绍 简介 OpenCV是一个基于BSD许可(开源)发行的跨平台 ...
- python装饰器 property_介绍Python的@property装饰器的用法
在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻辑.为了限制score的 ...
- python介绍---python工作笔记008
然后我们先来看一下python的介绍 python是作者起名字也是挺随意. 进入官网看看,可以看到
最新文章
- 计算机科学与技术专业综合二,计算机科学与技术专业综合一第二页
- 哈佛博士教你如何摆脱「尬聊」
- socket编程之inet_addr和inet_ntoa
- Jmeter_前端RSA加密下的登陆模拟_引用js文件实现(转)
- 【转】asp.net mvc生成验证码
- python模块管理工具,Python的包管理工具
- 我的世界服务器设置op显示,我的世界设置op权限 | 手游网游页游攻略大全
- JavaScript数据结构与算法(1)(数组、栈、队列、链表)(ES6)
- 现代GPU的体系结构
- DM8168 DDR3接口的PCB布线指南
- EntityFramework使用及优化
- CentOS linux系统将UTC时间修改为CST时间
- 诺基亚5800软件测试初学者,诺基亚5800刷机【教程详解】
- 一文了解plc编程、电脑编程、手机APP编程、组态编程、云编程(下)
- matlab editor 颜色,matlab编辑器颜色风格设置
- css模板 bulma_用Bulma在6分钟内学习CSS框架
- 学习字节跳动的团队管理
- JavaScript DOM 学习笔记
- 获取其他APP中素材
- raw图片处理软件:DxO PhotoLab for Mac