第一章:期权市场机制

前言

期权作为重要的金融衍生产品,在风险对冲,套期保值,价格发现,套利等方面发挥着重要的作用,特别是我国金融衍生品的发展速度较快,如何更好的理解期权产品内涵,知道期权交易的基础知识,掌握关于期权的常见数理模型,是一个金融专业学生的基础素养,也是对期权感兴趣的交易者需要清楚的.这个系列的博文是我个人将自己所掌握的关于期权的内容进行系统整理,对于文中大部分内容,我都会使用python软件进行复现和量化,希望大家能够一起学习,共同进步.

一、期权类型

要了解期权,首先需要认识什么是衍生产品,因为期权是衍生产品的一种.通俗而言,衍生产品就是根据某些基础产品进行派生而来的产品,因此衍生产品的标的资产或者标的变量就是这些基础资产.比如,股票期权就是根据股票价格派生出的一种衍生产品.再如最近经常说的碳中和概念,其也有派生出的碳交易期货期权,其标的资产就是碳交易期货.

长话短说,期权就是一种合约,签订期权合约的交易者就拥有了一种权利,该合约赋予持有人在某一特定日期或该日之前的任何时间以固定价格购进或售出一种资产的权利.

那么,期权的概念了解以后,我们进一步来看期权的类型.联想一下,既然期权是基础资产的衍生产品,而基础资产,如股票,其价格多数时候都是曾献上涨或者下跌的情况,因此期权也可以分为看涨期权和看跌期权.其中,看涨期权持有者拥有在未来的一段时间内可以以某一特定价格买入某种资产的权利,看跌期权持有人拥有在未来的一段时间内可以以某一特定价格卖出某种资产的权利(很容易理解,既然是看涨,那持有者便认为标的资产未来的价格会更高,因此先约定以一个"合算"的价格在未来某一时间买入该资产,同理,看跌一样理解).

在了解期权的类型以后,需要知道期权合约中几个重要的变量或者要素.正如概念中所说的,“以某一特定价格”,这个特定价格通常被称为行权价或者执行价格(敲定价格),"特定时间"通常是到期日或者期限.说到期限,需要补充一点,欧式期权的持有人只有在到期日当天才可以选择是否行驶自己的权利,而美式期权则可以在到期日之前的任一交易日行使权力.

二、期权中的交易者

1.交易者类型

在期权交易过程中,根据交易者对未来行情的看法,可以分为四类:
(1)看涨期权买方:即买入看涨期权
(2)看涨期权卖方:即卖出看涨期权
(3)看跌期权买方:即买入看跌期权
(4)看跌期权卖方:即卖出看跌期权
计算公式为:
假定到期日的股票价格为ST,期权的执行价格为K(没有考虑成本)
欧式看涨期权的多头收益为:max(ST-K,0)
欧式看跌期权的多头收益为:max(K-ST,0)
欧式看涨期权的空头收益为:min(K-ST,0)
欧式看跌期权的空头收益为:min(ST-K,0)

以下为期权多空头收益代码,未考虑交易成本

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as pltK=8000ST=np.linspace(7000,9000,100)h=np.maximum(ST-K,0)
plt.figure()plt.plot(ST,h,lw=2.5)
plt.xlabel('ST')
plt.ylabel('收益')
plt.title('看涨期权多头')
plt.grid(True)



从以上的图中可以知道,期权买方的收益是无限大,亏损是一定的,期权卖方刚好相反.

这里可以思考一下,看涨期权买方和看跌期权卖方其对标的资产未来的价格表现其实是乐观的,看涨期权卖方和看跌期权买方对标的资产未来价格的看法是消极的.

行文至此,需要再补充一点,期权的买方被称为多头,期权的卖方被称为空头.对期权买方和卖方而言,其权利和义务是极端不对等的.期权买方在支付权利金以后便拥有权利,而没有义务(也就是说买方可以觉得自己是否行权,而没有任何义务),而卖方则相反,只有义务没有权利.

2.举(多)个栗子

那么期权作为衍生产品,为什么会具有如此的重要性,以至于学者和交易者对其兴趣极大?这里举几个例子进行简单的说明(附代码)

例1
投资者买入执行价格为100美元、购买100股股票的看涨期权。假如股票的价格为98元,期权到期日为4个月,购买1股股票的期权价格为5美元。持有者的最初投资为500美元。期权为欧式期权,只能在到期日行权。假如到期时股票价格小于100美元,投资者不会行使权力,假如股票价格大于100美元,期权会被执行。假定到期时股票价格为115美元,通过行使期权权力,投资者可以挣得1500美元,除去最初的期权费用,投资者盈利为1000美元
以下代码展示了本例投资者买入看涨期权后的盈利与最终股票价格之间的关系.

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as pltimport matplotlib as mpl
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=FalseS=98
K=100
ST=np.linspace(70,150,100)
X=5H=np.maximum(ST-K,0)*100-X*100
plt.plot(ST,H)
plt.grid()
plt.title('欧式看涨期权的盈亏')
plt.axhline(0,color='r',linestyle="--",alpha=0.8)
plt.legend(loc=1)
plt.xlabel(' 最终股价')
plt.ylabel(' 盈利(美元)')my_y_ticks = np.arange(-1000, 5000, 500)
plt.yticks(my_y_ticks)


通过这幅图可以清楚的发现,当股价价格低于行权价时,持有者是不会行使权力的,那么他将损失一定的权利金,当股价高于行权价时,持有者会选择行权,这样起码可以减少损失(算上权利金)或者增加盈利.所以对于看涨期权的买方而言,其盈利是可以无限大的(股价无限上涨),而损失则是锁定的.

例2
看涨期权持有者希望股票价格上涨,而看跌期权持有者希望股票价格下跌.假设看跌期权的执行价格为70美元,以执行价出售100股股票的看跌期权,假定股票当前的价格为65美元,期权到期日为三个月,卖出一份看跌期权的费用为7美元. 投资者最初投资为700美元。欧式期权只有在到期日股票价格低于70美元时才会被行权,假定到期日时股票价格为55美元,投资者能以55美元买入100股股票,按照70美元卖出100股股票,所以投资者盈利为1500美元,减去最初的期权费用700美元,净盈利为800美元.以下代码为上述过程的可视化

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as pltimport matplotlib as mpl
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=FalseS1=65
K1=70
ST1=np.linspace(40,150,100)
X1=7H1=np.maximum(K1-ST1,0)*100-X1*100
plt.plot(ST1,H1)
plt.grid()
plt.title('欧式看跌期权的盈亏')
plt.axhline(0,color='r',linestyle="--",alpha=0.8)
plt.legend(loc=1)
plt.xlabel(' 最终股价')
plt.ylabel(' 盈利(美元)')my_y_ticks = np.arange(-1000, 5000, 500)
plt.yticks(my_y_ticks)


通过图中可以清楚的看出,看跌期权的持有者在股价小于行权价时会选择行权,股价下跌越多时持有者的盈利越多,而股价上涨时其亏损也是锁定在一定成本之中的.

以上两个例子是分析期权买方的盈利的,而对于期权卖方,其盈利情况则刚好相反.

任何一个期权合约都有两方,一方为期权的多头,即期权的买入方,一方为期权的空头,即期权的卖出方。卖出期权的一方在最初收入期权费,但这一方在今后有潜在的义务,卖出期权的一方的盈亏与买入期权的一方的盈亏相反。 以下代码为期权的卖方盈亏情况.

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as pltimport matplotlib as mpl
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=FalseS2=98
K2=100
ST2=np.linspace(70,150,10)
X2=5H2=-np.maximum(ST2-K2,0)*100+X2*100
plt.plot(ST2,H2)
plt.grid()
plt.title('卖出看涨期权的盈亏')
plt.axhline(0,color='r',linestyle="--",alpha=0.8)
plt.legend(loc=1)
plt.xlabel(' 最终股价')
plt.ylabel(' 盈利(美元)')my_y_ticks = np.arange(-5000, 1000, 500)
plt.yticks(my_y_ticks)


看涨期权的空头收益与看涨期权多头相反,当股价上涨时,其亏损会变大,而当股价下降时,其盈利是有限的.

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as pltimport matplotlib as mpl
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=FalseS3=65
K3=70
ST3=np.linspace(40,150,100)
X3=7H3=-np.maximum(-ST3+K3,0)*100+X3*100
plt.plot(ST3,H3)
plt.grid()
plt.title('卖出看跌期权的盈亏')
plt.axhline(0,color='r',linestyle="--",alpha=0.8)
plt.legend(loc=1)
plt.xlabel(' 最终股价')
plt.ylabel(' 盈利(美元)')my_y_ticks = np.arange(-3000, 1000, 500)
plt.yticks(my_y_ticks)


看跌期权空头则与看跌期权多头相反.当股价下跌时,其亏损加大,股价上涨时,其收益有限.

例3 采用期权对冲
投资者5月持有1000股价值28元的股票,投资者担心股票价格下跌,买入看跌期权进行对冲.
7月合约,买入10手看跌期权,期权执行价为27.5元,期权报价为1元,因此期权的持有成本为1000元

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as pltS=28
K=27.5
D=1000
ST=np.linspace(20,40,100)
h=ST*1000
H=np.maximum(K-ST,0)*1000-1000+ST*1000plt.plot(ST,h,lw=2.5,color='r',linestyle='--',label='无对冲')
plt.plot(ST,H,lw=2.5,color='m',linestyle='-',label='有对冲')
plt.xlabel('股价(美元)')
plt.ylabel('持有者头寸价值(美元)')
plt.grid(True)
plt.legend(loc=0)
plt.title('证券组合在无对冲和有对冲情况下两个月后的价值')


可以看出,对冲策略的交易成本为1000元,可以确保股票的卖出价格至少为27.5元(合约期限之内).如果到期时股价低于27.5元,则持有者会行驶权利,那么收入为27.5*1000-1000=26500元.如果到期日股价高于27.5元,持有者不行权,但是股价收益会更高.此外,对冲组合能够锁定收益最小值,效果明显由于无对冲的收益.

例4 投机

#利用期权进行投机.假设股票现在的价格为20美元,执行价格为22.5美元,期限为两个月的看涨期权的当前价格为1美元。
两中投机方式
1.买入100股股票
2.买入2000份看涨期权
假设1:股票两个月后上涨至27美元
假设2:股票两个月后下降至15美元
投机收益情况如下

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import pyplot as plt
import matplotlib
matplotlib.rc("font",family='DengXian')S=20
K=22.5ST=np.linspace(10,40,100)
h=100*(ST-20)
H=np.maximum(ST-K,0)*2000-2000
plt.plot(ST,h,lw=2.5,color='r',linestyle='--',label='买入股票')
plt.plot(ST,H,lw=2.5,color='m',linestyle='-',label='买入期权')
plt.xlabel('股价(美元)')
plt.ylabel('利润(美元)')
plt.grid(True)
plt.legend(loc=0)
plt.title('对价格为20美元的股票的两种投机策略的盈亏')


通过图中可知,期权策略可能会引起比股票策略更大的损失,但是也能够获得比股票策略更高的收益.这也说明期权能够提供一种杠杆效应.

总结

这是本系列的第一篇博文,主要是介绍了期权的基本概念,以及期权交易的基础知识,接下来会对期权的交易策略进行介绍.

第二章 影响期权价格的因素

前言

本章中,我们将以股票期权为例,介绍影响期权价格的因素,并且通过python进行量化实现。

一、影响期权价格的因素

1.初识BS模型

在这里,我们会想,要说影响期权价格的因素,首先需要有一个具体的公式或者指标来对期权价格进行才对,有了具体的公式和指标,就可以知道影响价格的因素,并且知道这些因素和价格之间的具体影响,比如是正相关还是负相关,抑或是先正后负等等。所以,我们先直观的给出一个期权定价最为经典的计算公式:于 Black-Scholes微分 方 程(B-S微分方程)。

传统理论认为期权的标的资产价格Pt 遵循几何布朗运动,并且期权的价格是时间与股票价格的函数,即Gt=G(Pt,t)。根据伊藤引理与无套利假设,Black等在求 解 B-S微分 方 程 的基础上得到如下BS欧式期权定价模型(不考虑股息,即股息d=0):(具体的BS公式留到后面的篇章再细说)


这里对式子的字母进行说明,Gt为看涨期权的价格;Pt为标的资产的价格;K 为交割价格;φ(x)为标准正态分布函数在x处的取值;T-t为距离到期日的时间间隔;r为无风险利率;σ为标的资产价格的波动率。

2.影响因素

从这些计算公式中可以直观的看出,期权价格与Pt,K,T,t,σ,r等数值密切相关,因此,我们可以认为,影响期权价格的因素主要有以下6个:(考虑股息,若剔除股息,则为5个)。
**(1)**当前股票价格Pt
**(2)**执行价格K
**(3)**期权到期期限T-t
**(4)**股票价格波动率σ
**(5)**无风险利率r
**(6)**股票期权期限内支付的股息d

二、python实践环节

这一部分,我们将对上述的六个影响因素进行说明。

1.股票价格

对看涨期权而言,如果期权进行交割,那么期权的收益就等于股票价格与期权执行价格之差(不考虑交易成本):Pt-K.可以看出,当K一定时,Pt越大,收益越高,看涨期权的价格也就越高。对于看跌期权而言,看跌期权的收益等于期权执行价格减去股票价格,即K-Pt,可知股票价格上涨时,看跌期权的收益会减小,因此看跌期权的价格也会下跌。由此,我们可以直观的感受到,股票价格对看涨期权价格而言是正相关,对看跌期权价格而言是负相关。

代码实现:

from pylab import plt
plt.style.use('seaborn')
%matplotlib inline
import math
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from scipy.integrate import quad
mpl.rcParams['font.family'] = 'serif'#
# Helper Functions
#def dN(x):''' Probability density function of standard normal random variable x. ''' #标准正态随机变量 x 的概率密度函数return math.exp(-0.5 * x ** 2) / math.sqrt(2 * math.pi)def N(d):''' Cumulative density function of standard normal random variable x. '''return quad(lambda x: dN(x), -20, d, limit=50)[0]def d1f(St, K, t, T, r, sigma):#设置函数d1''' Black-Scholes-Merton d1 function.Parameters see e.g. BSM_call_value function. '''d1 = (math.log(St / K) + (r + 0.5 * sigma ** 2)* (T - t)) / (sigma * math.sqrt(T - t))return d1#
# Valuation Functions
##欧式看涨期权函数
def BSM_call_value(St, K, t, T, r, sigma):''' Calculates Black-Scholes-Merton European call option value.Parameters==========St : floatstock/index level at time tK : floatstrike pricet : floatvaluation dateT : floatdate of maturity/time-to-maturity if t = 0; T > tr : floatconstant, risk-less short ratesigma : floatvolatilityReturns=======call_value : floatEuropean call present value at t'''d1 = d1f(St, K, t, T, r, sigma)d2 = d1 - sigma * math.sqrt(T - t)call_value = St * N(d1) - math.exp(-r * (T - t)) * K * N(d2)return call_value#欧式看跌期权函数
def BSM_put_value(St, K, t, T, r, sigma):''' Calculates Black-Scholes-Merton European put option value.Parameters==========St : floatstock/index level at time tK : floatstrike pricet : floatvaluation dateT : floatdate of maturity/time-to-maturity if t = 0; T > tr : floatconstant, risk-less short ratesigma : floatvolatilityReturns=======put_value : floatEuropean put present value at t'''put_value = BSM_call_value(St, K, t, T, r, sigma) \- St + math.exp(-r * (T - t)) * Kreturn put_value
# Model Parameters
#
points=100
St =2.72  # 50ETF value
K = 2.7  # option strike
t = 0.0  # valuation date
T = 1.0  # maturity date
r = 0.015  # risk-less short rate
sigma = 0.2  # volatility
# C(K) plot现值与股票价格的关系
plt.figure(figsize=(10,8))
slist = np.linspace(2.7, 3, points)
vlist_call = [BSM_call_value(St, K, t, T, r, sigma) for St in slist]
vlist_put = [BSM_put_value(St, K, t, T, r, sigma) for St in slist]
plt.plot(slist, vlist_call,'r',label='call')
plt.plot(slist, vlist_put,'g',label='put')
plt.grid(True)
plt.xlabel('stock price')
plt.ylabel('present value')

2.执行价格

执行价格的分析和股票价格分析紧密相关,回想一下,对看涨期权而言,如果期权进行交割,那么期权的收益就等于股票价格与期权执行价格之差(不考虑交易成本):Pt-K.可以看出,当Pt一定时,K越大,收益越低,看涨期权的价格也就越低。对于看跌期权而言,看跌期权的收益等于期权执行价格减去股票价格,即K-Pt,可知执行价格变大时,看跌期权的收益会增加,因此看跌期权的价格也会上升。由此,我们可以直观的感受到,执行价格对看涨期权价格而言是负相关,对看跌期权价格而言是正相关。

代码如下

# C(K) plot现值与执行价的关系
plt.figure(figsize=(10,8))
plt.figure(figsize=(10,8))
klist = np.linspace(2.2, 3, points)
vlist_call = [BSM_call_value(St, K, t, T, r, sigma) for K in klist]
vlist_put = [BSM_put_value(St, K, t, T, r, sigma) for K in klist]
plt.plot(klist, vlist_call,'r',label='call')
plt.plot(klist, vlist_put,'g',label='put')
plt.grid(True)
plt.xlabel('strike price')
plt.ylabel('present value')

3.期权到期期限

从公式可看出,随时到期期限的增加,看涨期权和看跌期权的价格都会增加。从图中可以看出,同等情况下,看涨期权价格的增加程度更大一些。

代码如下:

# C(T) plot现值与到期时间的关系
plt.figure(figsize=(10,8))
tlist = np.linspace(0, 1, points)
vlist_call = [BSM_call_value(St, K, t, T, r, sigma) for T in tlist]
vlist_put = [BSM_put_value(St, K, t, T, r, sigma) for T in tlist]
plt.plot(tlist, vlist_call,'r',label='call')
plt.plot(tlist, vlist_put,'g',label='put')
plt.grid(True)
plt.legend()
plt.grid(True)
plt.xlabel('maturity')
plt.ylabel('present value')

4.波动率

同理,从公式可看出,随时波动率的增加,看涨期权和看跌期权的价格都会增加。从图中可以看出,同等情况下,看涨期权价格的增加程度更大一些。

# C(sigma) plot现值与波动率的关系
plt.figure(figsize=(10,8))
slist = np.linspace(0.01, 0.5, points)
vlist_call = [BSM_call_value(St, K, t, T, r, sigma) for sigma in slist]
vlist_put = [BSM_put_value(St, K, t, T, r, sigma) for sigma in slist]
plt.plot(slist, vlist_call,'r',label='call')
plt.plot(slist, vlist_put,'g',label='put')
plt.legend()
plt.grid(True)
plt.xlabel('volatility ')
plt.ylabel('present value')

5.无风险利率

无风险利率相对而言,对期权价格的影响没有那么大,当无风险利率增加时,代表着投资者对股票收益的期望值也会增加,同时又会让期权持有者未来收到的现金流贴现值降低,综合而言,看涨期权的价格会上涨,看跌期权的价格会下跌。

代码如下:

 # C(r) plot现值与短期利率的关系
plt.figure(figsize=(10,8))
rlist = np.linspace(0, 1, points)
vlist_call = [BSM_call_value(St, K, t, T, r, sigma) for r in rlist]
vlist_put = [BSM_put_value(St, K, t, T, r, sigma) for r in rlist]
plt.plot(rlist, vlist_call,'r',label='call')
plt.plot(rlist, vlist_put,'g',label='put')
plt.legend()
plt.grid(True)
plt.xlabel('short rate ')
plt.ylabel('present value')

6.股息

这里没有给出带有股息的计算公式(后文会讲述),所以这里直接给出结论,看涨期权价格与股息大小成负相关关系,看跌期权价格与股息大小成正相关关系。

代码:后文补上

总结

第二章的总结如下,稍微划水一下直接粘了书上的图片。

第三章 单一期权与股票策略

前言

这一章节主要会介绍期权的交易策略。前文简要的介绍了单一期权的盈利模式,接下来会通过组合的方式说明期权交易策略。

一、保本债券

在零售市场上,期权常常被用来构造保本债券,这种资产对保守的投资者很有吸引力。投资者的收益依赖于单个股票、股指或者其他风险资产的表现,但是本金却没有风险。

举个例子说明这句话的含义。

假设在t时刻投资者有1000元,三年期的连续复利为6%,投资者在t时刻以835.27元买入三年后面值为1000元的零息债券,并且假设有一个股票组合的价值为1000,提供的股息率为年1.5%,投资者用剩余的164.73元买入一份股票组合上的看涨期权合约,执行价为1000。

如果三年后组合价值增长,投资者会得到1000美元在组合上的增长价值,如果组合价值下跌,零息债券的收益保证了投资者的本金安全。

二、单一期权与股票的交易策略

1.股票多头与看涨期权空头组合

该组合由股票的多头与一个欧式看涨期权的空头组成,这种交易策略称为备保看涨期权呈约。其中,股票多头可以避免股价上涨对期权收益带来的损失。

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import pyplot as plt
import matplotlib
matplotlib.rc("font",family='DengXian')St=110
K=125
C=1
ST=np.linspace(80,150,1000)
# 到期日收益
# 买入1000份股票
S=(ST-St)*1000
# 卖出10份看涨期权合约,每份合约100手
OPT=-np.maximum(ST-K,0)*10*100+C*10*100
# 组合收益
pro=OPT+Splt.plot(ST,S,label='股票多头收益')
plt.plot(ST,OPT,label='看涨期权空头收益')
plt.plot(ST,pro,label='组合收益')plt.legend()
plt.title('股票多头与看涨期权空头组合收益')
plt.show()

2.股票空头与看涨期权多头组合

组合由股票空头与看涨期权多头组成,组合收益情况与备保看涨期权合约的收益相反。

plt.figure(figsize=(10,8))
St=110
K=125
C=1
ST=np.linspace(80,150,1000)
# 到期日收益
# 卖出1000份股票
S=-(ST-St)*1000
# 买入10份看涨期权合约,每份合约100手
OPT=np.maximum(ST-K,0)*10*100-C*10*100
# 组合收益
pro=OPT+Splt.plot(ST,S,label='股票空头收益')
plt.plot(ST,OPT,label='看涨期权多头收益')
plt.plot(ST,pro,label='组合收益')plt.legend()
plt.title('股票空头与看涨期权多头组合收益')
plt.show()

3.股票多头与看跌期权多头组合

组合由股票多头与看跌期权多头组成,这种组合称为保护看跌期权策略。

plt.figure(figsize=(10,8))
St=110
K=125
C=1
ST=np.linspace(80,150,1000)
# 到期日收益
# 买入1000份股票
S=(ST-St)*1000
# 买入10份跌期权合约,每份合约100手
OPT=np.maximum(K-ST,0)*10*100-C*10*100
# 组合收益
pro=OPT+Splt.plot(ST,S,label='股票多头收益')
plt.plot(ST,OPT,label='看涨期权多头收益')
plt.plot(ST,pro,label='组合收益')plt.legend()
plt.title('股票多头与看涨期权多头组合收益')
plt.show()

4.股票空头与看跌期权空头组合

plt.figure(figsize=(10,8))
St=110
K=125
C=1
ST=np.linspace(80,150,1000)
# 到期日收益
# 卖出1000份股票
S=-(ST-St)*1000
# 卖出10份跌期权合约,每份合约100手
OPT=-np.maximum(K-ST,0)*10*100+C*10*100
# 组合收益
pro=OPT+Splt.plot(ST,S,label='股票空头收益')
plt.plot(ST,OPT,label='看涨期权空头收益')
plt.plot(ST,pro,label='组合收益')plt.legend()
plt.title('股票空头与看涨期权空头组合收益')
plt.show()

总结

这一章主要是介绍了常见的单一股票和期权的策略,这些策略是比较基础的。

第四章:差价交易策略

前言

这一章将主要介绍多份期权合约的交易策略。
价差交易策略是指将相同类型的两份或者多份合约组成在一起的交易策略。

一、牛市差价

牛市差价策略是差价策略中最流行的一种交易策略,策略的思想就是买入一份某行权价的看涨期权合约,并且卖出一份相同标的资产的看涨期权合约(具有较高的行权价),并且买卖合约的期限是相同的。

策略的收益情况:这里假设买入看涨期权合约的行权价为k1,卖出看涨期权合约的行权价为k2,且k2>k1,ST为股票在到期日的价格。
①当ST<K1,看涨期权多头收益为0(max(ST-K1,0)),看涨期权空头收益为0(-max(ST-K2,0))。合约整理收益为0。
②K1<ST<K2,看涨期权多头收益为ST-K1,看涨期权空头收益为0,整体收益为ST-K1。
③ST>=K2,看涨期权合约多头收益为ST-K1,看涨期权空头收益为K2-ST(-max(ST-K2,0)),整体收益为K2-K1。

从收益情况来看,牛市差价组合策略的收益是有限的(K2-K1),但是同时其亏损也是有限的(期权多头的合约金)。

例1
投资者以3美元买入一份行权价为30美元的欧式看涨期权合约,同时以2美元卖出一份行权价为35美元的看涨期权合约。如果股价高于35美元,牛市差价组合的收益为35-30=5美元,如果股价低于30美元,则收益为0,而组合的成本为3-2=1美元。具体的盈利情况见代码和图示。

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import pyplot as plt
import matplotlib
matplotlib.rc("font",family='DengXian')
matplotlib.rcParams['axes.unicode_minus']=FalseK1=30
K2=35
ST=np.linspace(20,40,100)
long=np.maximum(ST-K1,0)-3
short=-np.maximum(ST-K2,0)+2
returns=long+short
plt.plot(long,'--r',label='看涨期权多头收益')
plt.plot(short,'--g',label='看涨期权空头收益')
plt.plot(returns,'-y',label='组合收益')
plt.xlabel('股票价格')
plt.ylabel('收益')
plt.title('看涨期权牛市差价组合')
plt.legend()
plt.grid(True)
plt.show()


同样的思想,牛市差价组合还可以通过买入行权价较低的欧式看跌期权,卖出行权价较高的欧式看跌期权进行构建。这种牛市看跌期权价差组合可以在最开始带来一个正向的现金流,但是需要保证金。

例2
投资者以3美元买入一份行权价为30美元的欧式看跌期权合约,同时以2美元卖出一份行权价为35美元的看跌期权合约。如果股价高于35美元,牛市差价组合的收益为0美元,如果股价低于30美元,则收益为35-30=5,而组合的成本为3-2=1美元。具体的盈利情况见代码和图示。

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import pyplot as plt
import matplotlib
matplotlib.rc("font",family='DengXian')
matplotlib.rcParams['axes.unicode_minus']=FalseK1=30
K2=35
ST=np.linspace(20,40,100)
long=np.maximum(K1-ST,0)-3
short=-np.maximum(K2-ST,0)+2
returns=long+short
plt.plot(long,'--r',label='看跌期权多头收益')
plt.plot(short,'--g',label='看跌期权空头收益')
plt.plot(returns,'-y',label='组合收益')
plt.xlabel('股票价格')
plt.ylabel('收益')
plt.title('看跌期权牛市差价组合')
plt.legend()
plt.grid(True)
plt.show()

二、熊市差价

持有牛市差价组合的投资者是希望股价上涨的,而与此相反,持有熊市差价组合的投资者对股价未来走势是看空的。熊市差价组合策略的思想就是买入某行权价的看跌期权的同时卖出另一行权价的看跌期权,并且买入期权的行权价要大于卖出期权的行权价。

**策略收益情况:**买入期权行权价为k1,卖出期权行权价为k2,股票价格为ST,且K1>K2
①ST<K2,看跌期权多头收益为K1-ST,看跌期权空头收益为ST-K2,整体收益为K1-K2
②K2<ST<K1,看跌期权多头收益为K1-ST,看跌期权空头收益为0,整体收益为K1-ST
③ST>K1,看跌期权多头收益为0,看跌期权空头收益为0,整体收益为0

例3
投资者以3美元买入一份行权价为35美元的欧式看跌期权合约,同时以2美元卖出一份行权价为30美元的看跌期权合约。如果股价高于35美元,熊市差价组合的收益为0美元,如果股价低于30美元,则收益为35-30=5,而组合的成本为3-2=1美元。具体的盈利情况见代码和图示。

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import pyplot as plt
import matplotlib
matplotlib.rc("font",family='DengXian')
matplotlib.rcParams['axes.unicode_minus']=FalseK1=35
K2=30
ST=np.linspace(20,40,100)
long=np.maximum(K1-ST,0)-3
short=-np.maximum(K2-ST,0)+2
returns=long+short
plt.plot(long,'--r',label='看跌期权多头收益')
plt.plot(short,'--g',label='看跌期权空头收益')
plt.plot(returns,'-y',label='组合收益')
plt.xlabel('股票价格')
plt.ylabel('收益')
plt.title('看跌期权熊市差价组合')
plt.legend()
plt.grid(True)
plt.show()

三、盒式差价

盒式差价组合策略是由行权价为k1、k2的看涨期权所构成的牛市差价与由相同行权价的看跌期权所构成的熊市差价组合的结合版本。

盒式差价组合策略只适用于欧式期权。

策略收益分析:
①ST<K1,此时牛市看涨期权多头收益为0,牛市看涨期权空头收益为0,熊市看跌期权多头收益为ST-K1,熊市看跌期权空头收益为K2-ST,整体收益为K2-K1
②K1<ST<K2,此时牛市看涨期权多头收益为0,牛市看涨期权空头收益为K2-ST,熊市看跌期权多头收益为ST-K1,熊市看跌期权空头收益为0,整体收益为K2-K1
③ST>K2,此时牛市看涨期权多头收益为ST-K1,牛市看涨期权空头收益为K2-ST,熊市看跌期权多头收益为0,熊市看跌期权空头收益为0,整体收益为K2-K1

由此可知,盒式差价组合的收益情况总是K2-K1,因此盒式差价组合的价值是此收益的贴现值,即(K2-K1)*e^(-rT)

四、蝶式差价

蝶式差价组合策略是由三种不同行权价的期权组成,构造方式为:买入一份较低行权价K1的欧式看涨期权,买入一份较高行权价K3的欧式看涨期权,然后卖出两份具有中间行权价K2的欧式看涨期权。

**策略收益情况:**K1<K2<K3,且K2=0.5(K1+K3)
①ST<K1,第一份看涨期权多头收益为0,第二份看涨期权多头收益为0,看涨期权空头收益为0,整体收益为0
②K1<ST<K2,第一份看涨期权多头收益为ST-K1,第二份看涨期权多头收益为0,看涨期权空头收益为0,整体收益为ST-K1
③K2<ST<K3,第一份看涨期权多头收益为ST-K1,第二份看涨期权多头收益为0,看涨期权空头收益为-2(ST-K2),整体收益为K3-ST
④ST>K3,第一份看涨期权多头收益为ST-K1,第二份看涨期权多头收益为ST-K3,看涨期权空头收益为-2(ST-K2)整体收益为0

例4
投资者以行权价K1=55买入一份看涨期权合约(费用10),以行权价K3=65买入一份看涨期权合约(合约费用5),以行权价K2=60卖出两份看涨期权合约(合约费用7),合约手续费为10+5-2*7=1,若到期日股价高于65或低于55,则投资者亏算手续费,若股价在55-65之间,投资者盈利。

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import pyplot as plt
import matplotlib
matplotlib.rc("font",family='DengXian')
matplotlib.rcParams['axes.unicode_minus']=FalseK1=55
K2=60
K3=65
ST=np.linspace(4,100,100)
long1=np.maximum(ST-K1,0)-10
long2=np.maximum(ST-K3,0)-5
short=2*(-np.maximum(ST-K2,0))+2*7
returns=long1+long2+short
plt.plot(long1,'--r',label='看涨期权多头收益')
plt.plot(long2,'--c',label='看涨期权多头收益')
plt.plot(short,'--g',label='看涨期权空头收益')
plt.plot(returns,'-y',label='组合收益')
plt.xlabel('股票价格')
plt.ylabel('收益')
plt.title('蝶式差价组合')
plt.legend()
plt.grid(True)
plt.show()

五、其余差价策略

1.鹰式差价
鹰式期权由4份期权组成,2个内部行权价格的期权和2个外部行权价格的期权。假设四个期权的执行价格关系为:K1<K2<K3<K4,则K1和K4所代表的期权称为外部行权价的期权,K2和K3所对应的期权称为内部行权价的期权。鹰式期权的比例永远是1:1:1:1,并且2个最低行权价格的差额一定要与2个最高行权价格的差额相等。

组合策略:鹰式期权多头:买入2个外部行权价格的期权、卖出2个内部行权价格的期权。
鹰式期权空头:卖出2个外部行权价格的期权、买入2个内部行权价格的期权。

适用场景:市场的小幅震荡有可能就超出蝶式价差所提供给投资者的获利区间,使得投资者蒙受亏损,可以捕捉小幅震荡市场中的获利机会。

例子:以同花顺策略中的多头看涨鹰式价差和空头看跌鹰式价差为例。

买入行权价为3.4和3.7的看涨期权,卖出行权价为3.5和3.6的看涨期权。具体的盈亏如下所示。


2.比率日历价差
接下来将结合比率价差策略和日历价差策略构建比率日历价差策略,该策略采用的是具有相同行权价,但是到期期限不同的看涨期权或者看跌期权进行组合,并且多头和空头的配置比率不一致。

组合策略:a份额的看跌(看跌)期权多头和b份额的看涨(看跌)期权空头,并且a不等于b。其中,对于看涨期权组合来说,看涨期权空头的到期期限较短,看涨期权多头的到期期限较长。

以看涨期权的时间价值为例,Theta(Θ) 用于描述 portfolio 价值随时间的变化率,Θ有时称为组合的时间损耗,即time decay。Theta 值大小反映了期权购买者随时间推移所损失的价值。

通过下图可知:期权合约随着时间的流逝其价值都是在减少的,但是处于实值、平值状态的期权对于时间的敏感度是不一样,所以对看涨期权而言,到期期限较长的期权的价格较贵

适用场景:投资者对市场预期极度悲观

例子:以同花顺策略中的比率日历价差组合为例。


买入一份行权价为3.4的看涨期权合约,卖出2份行权价为3.4的看涨期权期权合约。具体的盈亏如图所示:

总结

这一章主要介绍了多个期权合约的组合策略,较上一章略微复杂,但是仔细看一遍也发现不难,具体的更多策略可以在同花顺软件自己组合。

【期权机理与python实践】相关推荐

  1. 自学python推荐书籍同时找哪些来实践-机器学习:Python实践 PDF 原书完整版

    给大家带来的一篇关于人工智能相关的电子书资源,介绍了关于机器学习.Python实践方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小124.7 MB,魏贞原编写,目前豆瓣.亚马逊.当当.京 ...

  2. python数据挖掘例题_数据挖掘与python实践试题及答案

    数据挖掘与python实践试题及答案 更多相关问题 [填空题] 进厂检验之所以重要,因为它是涂料入厂()工序 [多选] 裂纹可能是由于下列哪些原因造成的:() [多选] 涂装车间常用的消防器材共有几种 ...

  3. 机器学习算法与Python实践之(六)二分k均值聚类

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  4. 机器学习算法与Python实践之(五)k均值聚类(k-means)

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  5. 机器学习算法与Python实践之(三)支持向量机(SVM)进阶

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  6. 机器学习算法与Python实践之(二)支持向量机(SVM)初

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  7. 机器学习算法与Python实践之(二)支持向量机

    http://blog.csdn.net/zouxy09/article/details/17291543 机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己 ...

  8. 机器学习算法与Python实践之(四)支持向量机(SVM)实现

    机器学习算法与Python实践之(四)支持向量机(SVM)实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考 ...

  9. 机器学习算法与Python实践之(二)支持向量机(SVM)初级

    机器学习算法与Python实践之(二)支持向量机(SVM)初级 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考 ...

  10. 机器学习算法与Python实践之(二)k近邻(KNN)

      机器学习算法与Python实践之(二)k近邻(KNN) (基于稀疏矩阵的k近邻(KNN)实现) 一.概述 这里我们先来看看当我们的数据是稀疏时,如何用稀疏矩阵的特性为KNN算法加速.KNN算法在之 ...

最新文章

  1. nginx服务器安装及配置文件详解
  2. 一行Java代码实现不用区分系统获取Tomcat下的某路径
  3. 六台机器搭建RedisCluster分布式集群
  4. 使用腾讯云发送短信API接口实现(完整流程)
  5. php imagemagick 漏洞,ImageMagick漏洞(CVE-2016-3714)修复方案
  6. raft协议 MySQL 切换_Raft 协议实战系列(二)—— 选主
  7. JavaMail中附件名称有乱码
  8. javascript权威指南(6) - 对象
  9. shell数组使用技巧
  10. java求最小生成树的权重_给定有权无向图的邻接矩阵如下,求其最小生成树的总权重,代码。...
  11. java用流实现复制功能_【java】IO流 实现简单的复制功能
  12. 合并HTTP请求 vs 并行HTTP请求,到底谁更快?
  13. #include《》和#include“”的区别
  14. 绘制地图其实并不难!如何绘制地图?看看Smartbi的制作方法
  15. Atom处理器喜迎周岁生日 主频达2GHz
  16. 用Python批量从本地导数据到postgres数据库,比人工导入快十倍,爽
  17. Oracle如何导出dmp文件
  18. python 虚拟串口通信
  19. pandas学习笔记—agg()函数详解
  20. 我研究了一个月阿里的岗位JD,不曾想.....

热门文章

  1. FydeOS | ChromeOS配置Flutter开发环境
  2. JavaScript 在线编辑器
  3. 小米蓝牙耳机持续白灯_小米蓝牙耳机不能自动串联问题
  4. Leetcode 5053. 地图分析 (150周赛)
  5. Checker框架学习笔记
  6. 用python的requests模块爬取上海地区链家二手房数据
  7. java随机产生long_java生成随机数
  8. 在ROS中使用行为树
  9. bp神经网络训练流程图,bp神经网络训练样本
  10. 自动驾驶之轨迹规划5——Apollo规划中的离散点曲线平滑数学原理