# 期权探秘2
> 来源:https://uqer.io/community/share/54c479f1f9f06c276f651a4a
版本:1.0
作者:李自龙
联系:zilong.li@datayes.com
上一篇中,李博简单介绍了期权和影响期权价格的各种因素。本篇中,我们重点介绍期权与不同资产的组合能够给我们带来什么样新颖的盈利方式,例如:
+ 期权 + 零息债券
+ 期权 + 标的资产
+ 同一标的资产上的多个期权
如此通过构造包含期权的头寸组合,能够实现丰富多彩的未来收益形式,给我们的想象力提供了最大的舞台,请看下文!
```py
import numpy as np
from matplotlib import pylab
```
## 1. 期权 + 零息债券 = 保本债券
期权推出后,银行可以向客户提供以下形式的价格1000元的理财产品:
+ 面值为1000元的三年期零息债券
+ 标的为股票组合的三年期欧式平值看涨期权
该产品三年到期后:如果股票组合的价值增长,通过行使期权,投资者将得到1000元债券收益外加1000元股票组合头寸对应的增值部分;如果股票组合下跌,期权便没有价值,但是投资者仍然可以得到1000元的债券收益。总的来看,投资者此时的1000元投资在三年后是保本的,即本金不会有任何风险,这就是保本债券(principle-protected notes)的由来。
对于银行来说,发行保本债券也不是赔本的买卖。如果三年期复利利率为5%,那么三年后1000元的今日帖现值为1000e−0.05×3=860.71元。也就是说,投资者今日花1000元买入该产品,在完全无风险的情况下,银行也可以拿出差额139.29元来购买该产品中的看涨期权。我们来看看该看涨期权在今日价值几何(利用BSM期权定价公式,假定股票组合的波动率为10%、收益率为1.5%,无风险利率为5%):
```py
price = BSMPrice(Option.Call, 1000, 1000, 0.05, 0.015, 0.1, 3)['price']
print "看涨期权价格: ", price[1]
看涨期权价格: 121.470487448
```
这就是说,差额139.29元完全足够购买该理财产品中的必须的看涨期权,银行在推出该保本债券理财产品时,其成本是低于售价1000元的。聪明的投资者可能会想,比购买该理财产品更好地投资做法是:自己购买标的期权,并将剩余的本金投入到无风险投资上。但这个想法有点理想化:
+ 普通投资者入市期权门槛太高,也会面临更大的买入卖出差价
+ 剩余本金的投资利息比银行要低
因此银行推出这一产品可以给投资者带来收益,同时自己也能得到盈利。由于期权价格和标的资产波动率密切相关,如果波动率过高,差额139.29元可能不够购买这一看涨期权:
```py
price = BSMPrice(Option.Call, 1000, 1000, 0.05, 0.015, 0.2, 3)['price']
print "波动率为20%时看涨期权价格: ", price[1]
波动率为20%时看涨期权价格: 178.183351319
```
此时银行的可以通过购买更高行权价格的期权:
```py
price = BSMPrice(Option.Call, 1100, 1000, 0.05, 0.015, 0.2, 3)['price']
print "波动率为20%、行权价为1100时的看涨期权价格: ", price[1]
波动率为20%、行权价为1100时的看涨期权价格: 135.48518416
```
此时,三年后,只有该标的资产的价格增长超过10%时,投资者才能获利。
在此基础上(标的波动率为20%、期权行权价为1100),我们讨论投资者今日投入1000元、三年后到期的收益情况:如果标的组合三年期间价格增加30%,那么投资者到期收益1200元;这一收益仍大于将1000元直接存入银行的收益`1000e ** 0.05*3=1161.83`元。总之,投资者投资这一产品的收益和标的资产的价格增长情况息息相关;如果标的资产为上证50ETF,那么在接下来普遍看好的牛市中该产品应该可以带给投资者不错的收益,且投资该产品是保本的。
## 2. 股票与单一期权相组合的策略
前一节我们讨论了,单一期权与零息债券的组合,本节我们将讨论单一期权与股票的组合。
```py
# 定义看涨看跌期权到期收益函数
def call(S):
return max(S - 100.0,0.0) - 40.0
def put(S):
return max(100.0 - S,0.0) - 40.0
callfunc = np.frompyfunc(call, 1, 1)
putfunc = np.frompyfunc(put, 1, 1)
```
2.1 备保看涨期权承约(writing covered call)
策略构造:
+ 卖出以股票为标的的看涨期权
+ 持有相应于期权空头的该标的股票
策略到期收益和股票价格的关系如下图:
```py
spots = np.linspace(0,200,21)
pylab.figure(figsize=(10,7))
pylab.plot(spots, -callfunc(spots), 'b-.',linewidth = 2)
pylab.plot(spots, spots, 'r--',linewidth = 2)
pylab.plot(spots, -callfunc(spots) + spots, 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权空头',u'股票多头',u'策略组合收益'], prop = font, loc = 'best')
pylab.title(u'备保看涨期权承约', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbdd9a51.png)
由上图中所见,在股票价格急剧上涨时,投资者持有的股票保护(cover)了其看涨期权空头将带来的损失。可以看出,采用Covered Call策略的投资者对未来该股票的表现持中性态度,认为该股票价格在未来一段时间内将保持在当前价格附件区间。
和Covered Call相反,如果对未来某股票的表现持中性或者看跌态度,投资者利用该股票看涨期权构建策略:
+ 持有以股票为标的的看涨期权
+ 卖空相应份额的该股票
策略到期收益和股票价格的关系如下图:
```py
spots = np.linspace(0,200,21)
pylab.figure(figsize=(10,7))
pylab.plot(spots, callfunc(spots), 'b-.',linewidth = 2)
pylab.plot(spots, -spots, 'r--',linewidth = 2)
pylab.plot(spots, callfunc(spots) - spots, 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权多头',u'股票空头',u'策略组合收益'], prop = font, loc = 'best')
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbdf25d7.png)
## 2.2 保护性看跌期权策略(Protective Put)
策略构造:
+ 持有以某股票为标的的看跌期权
+ 买入相应于看跌期权份额的该股票
策略到期收益和股票价格的关系如下图:
```py
spots = np.linspace(0,200,21)
pylab.figure(figsize=(10,7))
pylab.plot(spots, putfunc(spots), 'b-.',linewidth = 2)
pylab.plot(spots, spots, 'r--',linewidth = 2)
pylab.plot(spots, putfunc(spots) + spots, 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看跌期权多头',u'股票多头',u'策略组合收益'], prop = font, loc = 'best')
pylab.title(u'受保护看跌期权策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbe12889.png)
由上图可以看到,投资者对于自身持有的股票持看涨态度,但是又不愿意承担股票下跌的损失,所以采用保护性看跌期权策略(Protective Put),能够在获取股票升值收益的情况下,同时利用持有的看跌期权保护自己不受股票下跌的影响。
与保护性看跌期权策略相反,如果投资者对于股票持中性或者轻微看跌态度时,可以通过卖出看跌期权来构造如下策略:
+ 卖出以某股票为标的的看跌期权
+ 卖空相应于看跌期权份额的该股票
策略到期收益和股票价格的关系如下图:
```py
spots = np.linspace(0,200,21)
pylab.figure(figsize=(10,7))
pylab.plot(spots, -putfunc(spots), 'b-.',linewidth = 2)
pylab.plot(spots, -spots, 'r--',linewidth = 2)
pylab.plot(spots, -putfunc(spots) - spots, 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看跌期权空头',u'股票空头',u'策略组合收益'], prop = font, loc = 'best')
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbe29620.png)
## 3. 差价策略(spread)
差价策略,是指将两个或者多个相同类型(同为看涨或同为看跌)期权组合在一起的期权交易策略。
```py
def call(S, K, c):
return max(S - K,0.0) - c
def put(S, K, p):
return max(K - S,0.0) - p
callfunc = np.frompyfunc(call, 3, 1)
putfunc = np.frompyfunc(put, 3, 1)
```
## 3.1 牛市差价(bull spread)
策略构造:
+ 买入一份股票标的看涨期权
+ 卖出同一股票标的、期权期限相同,但执行价格较高的看涨期权(对于看涨期权来说,执行价格高意味着期权费用较低)
策略到期收益和股票价格的关系如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, callfunc(spots, 75, 40), 'b-.',linewidth = 2)
pylab.plot(spots, -callfunc(spots, 125, 20), 'r--',linewidth = 2)
pylab.plot(spots, callfunc(spots, 75, 40) - callfunc(spots, 125, 20), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权多头,执行价格75',u'看涨期权空头,执行价格125',u'策略组合收益'], prop = font, loc = 'best')
pylab.title(u'看涨期权构造的牛市差价策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbe4002f.png)
如上图所示,牛市价差策略虽然限制了投资者在股票大涨时的收益,但也控制了股价下跌时候的损失幅度。换句话说,投资者持有一个执行价格75的看涨期权,同时卖出一个执行价格较高为125的看涨期权而放弃了股票上涨时候的潜在收益。可以看出,放弃获取这些潜在收益的补偿,就是卖出执行价格125的期权而得到的期权费用。
进一步的,市场上的牛市差价策略可以分成3种类型:
+ 两个看涨期权均为虚值期权
+ 持有的看涨期权为实值期权,卖出的期权为虚值期权
+ 两个看涨期权均为实值期权
第一种牛市差价策略最为激进,这一策略的成本很低;最后一种牛市差价策略趋于保守。
实际上,利用看跌期权也可以构造牛市差价策略,策略的结构为:
+ 买入一份股票标的看跌期权
+ 卖出同一股票标的、期权期限相同,但执行价格较高的看跌期权(对于看跌期权来说,执行价格高意味着期权费用较高)
看跌期权构造的牛市差价策略在开始时带给投资者一个正的现金流,策略到期收益和股票价格的关系如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, putfunc(spots, 75, 20), 'b-.',linewidth = 2)
pylab.plot(spots, -putfunc(spots, 125, 40), 'r--',linewidth = 2)
pylab.plot(spots, putfunc(spots, 75, 20) - putfunc(spots, 125, 40), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看跌期权多头,执行价格75',u'看跌期权空头,执行价格125',u'策略组合收益'], prop = font, loc = 'best')
pylab.title(u'看跌期权构造的牛市差价策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbe5c4ca.png)
## 3.2 熊市差价(bear spread)
投资者构造3.1节中的牛市差价策略时,看好的是股票价格上涨;类似的,此处构造熊市差价策略时,投资者看好股票价格下跌。
策略构造:
+ 买入一份股票标的看跌期权
+ 卖出同一股票标的、期权期限相同,但执行价格较低的看跌期权(对于看跌期权来说,执行价格低意味着期权费用较低)
与牛市差价策略中卖出较高执行价格看跌期权相反,熊市差价策略中我们总是卖出执行价格较低的期权。
策略到期收益和股票价格的关系如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, putfunc(spots, 125, 40), 'b-.',linewidth = 2)
pylab.plot(spots, -putfunc(spots, 75, 20), 'r--',linewidth = 2)
pylab.plot(spots, putfunc(spots, 125, 40) - putfunc(spots, 75, 20), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看跌期权多头,执行价格125',u'看跌期权空头,执行价格75',u'策略组合收益'], prop = font, loc = 'best')
pylab.title(u'看跌期权构造的熊市差价策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbe76b54.png)
由上图可以看到,熊市差价策略限定了收益上限,也控制了损失幅度。投资者看好股票价格下跌,买入执行价格为125的看跌期权;同时,投资者卖出一份执行价格为75的看跌期权,虽然放弃了股票大幅下跌时候的额外收益,但也收取了卖出期权的期权费用。
和牛市差价策略类似,也可以通过看涨期权构造熊市差价策略:
+ 买入一份股票标的看涨期权
+ 卖出同一股票标的、期权期限相同,但执行价格较低的看涨期权(对于看涨期权来说,执行价格低意味着期权费用较高)
策略到期收益和股票价格的关系如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, callfunc(spots, 125, 20), 'b-.',linewidth = 2)
pylab.plot(spots, -callfunc(spots, 75, 40), 'r--',linewidth = 2)
pylab.plot(spots, callfunc(spots, 125, 20) - callfunc(spots, 75, 40), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权多头,执行价格125',u'看涨期权空头,执行价格75',u'策略组合收益'], prop = font, loc = 'best')
pylab.title(u'看涨期权构造的熊市差价策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbe9214d.png)
## 3.3 盒式差价(box spread)
盒式差价是指由看涨期权构造的一个牛市差价和由看跌期权构造的一个熊市差价的组合。
利用上面的讨论,我们具体地构造这一策略:
+ 牛市差价:价格`c1`买入执行价格为K1的看涨期权,同时卖出执行价格为`K2`的看涨期权并获得期权费用c2
+ 熊市差价:价格`p1`买入执行价格为K1的看跌期权,同时卖出执行价格为`K2`的看跌期权并获得期权费用p2
可以看出,构造这一策略我们需要付出初始现金:`(c2−c1)+(p2−p1)`。
策略到期收益和股票价格的关系示意如下图(相应参数为 `c1=40`,`c2=20`,`p1=45`,`p2=20`,`K1=75`,`K2=125`):
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, callfunc(spots, 75, 40) - callfunc(spots, 125, 20), 'b-.',linewidth = 2)
pylab.plot(spots, putfunc(spots, 125, 45) - putfunc(spots, 75, 20), 'r--',linewidth = 2)
pylab.plot(spots, callfunc(spots, 75, 40) - callfunc(spots, 125, 20) + putfunc(spots, 125, 45) - putfunc(spots, 75, 20), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权构造的牛市差价',u'看跌期权构造的熊市差价',u'策略组合收益'], prop = font, loc = 'best')
pylab.title(u'盒式差价', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.ylim(-50,50)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbea95d8.png)
由上图可见,由四个期权构成的盒式差价策略,其期权到期日的收益为一常数;换句话说,盒式差价策略的收益是无风险的!
实际上,盒式差价策略的到期收益贴现值为`K2−K1`的贴现值![](https://box.kancloud.cn/2016-07-30_579cbdbebf880.jpg)(上面作图时,我们假定了无风险利率`r=0`)减去初始构建策略投资现金`(c2−c1)+(p2−p1)`:
![](https://box.kancloud.cn/2016-07-30_579cbdbed2220.jpg)
因为这一收益是无风险的,所以如果期权市场价格合理的话,该收益应该为0;也就是,盒式差价策略是一个套利策略,如果我们能够通过购买以上四个期权头寸而构建出`Rbox>0`的盒式差价组合的话,说明市场对期权定价不合理,可以通过盒式差价套利。
###3.4 蝶式差价(butterfly spread)
蝶式差价由三个相同标的,且到期日相同而行权价不同的看涨期权构成。
策略构造:
+ 买入一个具有较低执行价格`K1`的欧式看涨期权
+ 买入一个具有较高执行价格`K3`的欧式看涨期权
+ 卖出两个具有中间执行价格K2的欧式看涨期权,其中`K1<K2<K3`,一般来讲,K2接近于当前标的股票价格
策略到期收益和股票价格的关系示意如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, callfunc(spots, 75, 40), 'b-.',linewidth = 2)
pylab.plot(spots, callfunc(spots, 125, 20), 'g.',linewidth = 2)
pylab.plot(spots, -2*callfunc(spots, 100, 25), 'r--',linewidth = 2)
pylab.plot(spots, callfunc(spots, 75, 40) + callfunc(spots, 125, 20) - 2*callfunc(spots, 100, 25), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权多头,行权价75',u'看涨期权多头,行权价125',u'2个看涨期权空头,行权价100', u'蝶式差价组合'], prop = font, loc = 'best')
pylab.title(u'蝶式差价', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.ylim(-75,75)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbee4aa3.png)
如上图所示,构造蝶式差价时,投资者对于标的股票持中立态度,认为期权行权日前股价将会稳定在K2附近(也就是在今日股价附近)。
如果到期时候股价保持在`K2`附近,蝶式差价将会产生收益;如果到期时候股价远远偏离K2,投资者将损失少量的初始投资。
类似于看涨期权构造的蝶式差价,看跌期权也可以用来构造蝶式差价组合:
+ 买入一个具有较低执行价格`K1`的欧式看跌期权
+ 买入一个具有较高执行价格`K3`的欧式看跌期权
+ 卖出两个具有中间执行价格`K2`的欧式看跌期权,其中`K1<K2<K3`,一般来讲,`K2`接近于当前标的股票价格
策略到期收益和股票价格的关系示意如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, putfunc(spots, 75, 20), 'b-.',linewidth = 2)
pylab.plot(spots, putfunc(spots, 125, 40), 'g.',linewidth = 2)
pylab.plot(spots, -2*putfunc(spots, 100, 25), 'r--',linewidth = 2)
pylab.plot(spots, putfunc(spots, 75, 20) + putfunc(spots, 125, 40) - 2*putfunc(spots, 100, 25), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看跌期权多头,行权价75',u'看跌期权多头,行权价125',u'2个看跌期权空头,行权价100', u'蝶式差价组合'], prop = font, loc = 'best')
pylab.title(u'蝶式差价', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.ylim(-75,75)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbf0a7a0.png)
和蝶式差价组合相反,投资者如果看好股价在未来将有巨大的波动,但却不确定波动方向时,可以卖空蝶式差价,从而在股价大幅波动时赚取收益。见下图(卖空一个由看涨期权构成的蝶式差价组合):
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, -callfunc(spots, 75, 40), 'b-.',linewidth = 2)
pylab.plot(spots, -callfunc(spots, 125, 20), 'g.',linewidth = 2)
pylab.plot(spots, 2*callfunc(spots, 100, 25), 'r--',linewidth = 2)
pylab.plot(spots, - callfunc(spots, 75, 40) - callfunc(spots, 125, 20) + 2*callfunc(spots, 100, 25), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权空头,行权价75',u'看涨期权空头,行权价125',u'2个看涨期权多头,行权价100', u'卖空蝶式差价组合'], prop = font, loc = 'best')
pylab.title(u'卖空蝶式差价', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.ylim(-75,75)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbf23251.png)
3.5 日历差价(calendar spread)
目前为止,我们讨论的差价组合策略中,总是假定所有期权具有相同的到期日。现在,我们看一下构成组合的期权具有相同的行权价但期权到期日不同的情况,即是所谓的日历差价。
策略构造:
+ 卖出一个具有较短期限的欧式看涨期权
+ 买入一个具有较长期限,且行权价和上一个期权相同的看涨期权
对于看涨期权来说,期限越长,期权价格越贵,所以构造日历差价需要一定的初始投资。
讨论日历价差的盈利曲线时候,我们假定盈利实现在短期限期权的到期日,届时长期限期权被出售。
较短期限期权到期日的策略收益和股票价格的关系示意如下图:
```py
spots = np.linspace(0,200,41)
longCall = np.zeros(spots.size)
for i in range (1, spots.size):
longCall[i] = BSMPrice(Option.Call, 100, spots[i], 0.05, 0.04, 0.2, 1.5)['price'][1]
pylab.figure(figsize=(10,7))
pylab.plot(spots, - callfunc(spots, 100, 27.5), 'b-.',linewidth = 2)
pylab.plot(spots, longCall - 30, 'r--',linewidth = 2)
pylab.plot(spots, - callfunc(spots, 100, 27.5) + longCall - 30, 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权空头,执行价格100',u'看涨期权多头,执行价格100,提前出售',u'日历差价策略组合收益'], prop = font, loc = 'best')
pylab.title(u'日历差价在短期限期权到期日收益示意图', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbf3ca17.png)
如上图所示,与蝶式差价组合类似,在短期限期权到期日,如果股票价格接近于期权执行价格,则投资者可获利;相反,如果股票价格远离期权执行价格,则投资者要付出一定损失。
进一步讨论日历差价的收益,在短期限期权到期日:
+ 股票价格较低时,两个期权都是看涨期权,故其价值均接近于0;投资者损失了构造组合的初始投资费用
+ 股票价格很高时,短期限期权空头带来损失`S−K`(其中`S`为股票价格,`K`为行权价);长期限期权价格接近于`S−K`;总体上,投资者也会损失构造组合的初始投资
+ 股票价格接近行权价时,短期限期权带来损益接近于0;长期限期权因为未到期,仍具有潜在价值;投资者会获得一定收入
类似地,可以利用看跌期权构造日历差价组合:
+ 卖出一个具有较短期限的欧式看跌期权
+ 买入一个具有较长期限,且行权价和上一个期权相同的看跌期权
对于看跌期权来说,期限越长,期权价格越贵,所以利用看跌期权构造日历差价需要一定的初始投资。
较短期限期权到期日的策略收益和股票价格的关系示意如下图:
```py
spots = np.linspace(5,200,40)
longPut = np.zeros(spots.size)
for i in range (0, spots.size):
longPut[i] = BSMPrice(Option.Put, 100, spots[i], 0.05, 0.04, 0.2, 1.5)['price'][1]
pylab.figure(figsize=(10,7))
pylab.plot(spots, - putfunc(spots, 100, 27.5), 'b-.',linewidth = 2)
pylab.plot(spots, longPut - 30, 'r--',linewidth = 2)
pylab.plot(spots, - putfunc(spots, 100, 27.5) + longPut - 30, 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看跌期权空头,执行价格100',u'看跌期权多头,执行价格100,提前出售',u'日历差价策略组合收益'], prop = font, loc = 'best')
pylab.title(u'日历差价在短期限期权到期日收益示意图', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbf56ff7.png)
根据构造日历差价时候选择的期权执行价不同,日历差价可以分成三种类型:
+ 中性日历差价: 执行价接近于股票当前价
+ 牛市日历差价: 执行价高于股票当前价
+ 熊市日历差价: 执行价低于股票当前价
和蝶式差价类似,如果投资者看好股价在未来会有很大的波动,可以选择卖空日历差价组合,达到股价大幅波动时获益的效果。
### 3.6 对角差价(diagonal spread)
牛市差价、熊市差价里面的期权长短头寸,都具有相同的到期日和不同的行权价;日历差价中的期权长短头寸,则具有相同的行权价和不同的到期日;进一步推广,可以构造对角差价组合:
对角差价中的期权长短头寸,到期日和行权价都不相同,会产生更加多样化的盈利曲线。
对角差价比较复杂,此处暂时略过。
## 4. 组合策略(combination)
相对于差价策略包括同一股票标的行权价不同的同类(看涨或看跌)期权,组合策略中包括同一种股票的看涨和看跌期权。
### 4.1 跨式组合(straddle combination)
策略构造:
+ 买入一个看涨期权
+ 买入一个标的相同、期限相同、行权价相同的看跌期权
跨式组合策略收益和股票价格的关系示意如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, callfunc(spots, 100, 20), 'b-.',linewidth = 2)
pylab.plot(spots, putfunc(spots, 100, 30), 'r--',linewidth = 2)
pylab.plot(spots, callfunc(spots, 100, 20) + putfunc(spots, 100, 30), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权多头,行权价100',u'看跌期权多头,行权价100',u'策略组合收益'], prop = font, loc = 'best')
pylab.title(u'跨式组合策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbf6ef3a.png)
如上图所示,如果投资者认为股票价格会有很大的波动,但却不确定波动方向时候,可以选择跨式组合。
上图中的跨式组合有时被称为底部跨式组合(bottom straddle)或者买入跨式组合(straddle purchase);与此相反,投资者可以构造顶部跨式组合(top straddle)或者卖出跨式组合(straddle write):
+ 卖出一个看涨期权
+ 卖出一个标的相同、期限相同、行权价相同的看跌期权
顶部跨式组合策略收益和股票价格的关系示意如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, -callfunc(spots, 100, 20), 'b-.',linewidth = 2)
pylab.plot(spots, -putfunc(spots, 100, 30), 'r--',linewidth = 2)
pylab.plot(spots, -callfunc(spots, 100, 20) - putfunc(spots, 100, 30), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权空头,行权价100',u'看跌期权空头,行权价100',u'策略组合收益'], prop = font, loc = 'best')
pylab.title(u'顶部跨式组合策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbf8c455.png)
如上图,当到期日股价接近于行权价时候,顶部跨式组合和蝶式差价类似,都是获得一定收益;但是,当股票价格在到期日变化剧烈时:
蝶式差价只损失一小部分构造费用,但是顶部跨式组合却可能让投资者血本无归,因为顶部跨式组合此时的损失是无限的!
## 4.2 序列组合(strip)和带式组合(strap)
序列组合策略构造:
+ 买入一个欧式看涨期权
+ 买入两个标的相同、期限相同、行权价相同的看跌期权
跨式组合策略收益和股票价格的关系示意如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, callfunc(spots, 100, 20), 'b-.',linewidth = 2)
pylab.plot(spots, 2*putfunc(spots, 100, 30), 'r--',linewidth = 2)
pylab.plot(spots, callfunc(spots, 100, 20) + 2*putfunc(spots, 100, 30), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权多头,行权价100',u'两个看跌期权多头,行权价100',u'序列组合收益'], prop = font, loc = 'best')
pylab.title(u'序列组合策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbfa2905.png)
带式组合策略构造:
+ 买入两个个欧式看涨期权
+ 买入一个标的相同、期限相同、行权价相同的看跌期权
带式组合策略收益和股票价格的关系示意如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, 2*callfunc(spots, 100, 20), 'b-.',linewidth = 2)
pylab.plot(spots, putfunc(spots, 100, 30), 'r--',linewidth = 2)
pylab.plot(spots, 2*callfunc(spots, 100, 20) + putfunc(spots, 100, 30), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'两个看涨期权多头,行权价100',u'一个看跌期权多头,行权价100',u'带式组合收益'], prop = font, loc = 'best')
pylab.title(u'带式组合策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbfb936c.png)
结合上述两张图可知,无论是序列组合还是带式组合,投资者都认为股票价格会有较大幅度的变化,区别在于:
+ 序列组合中,投资者认为股价下降的可能性较大
+ 带式组合中,投资者认为股价上涨的可能性较大
## 4.3 异价跨式组合(strangle combination)
异价跨式组合有时被称为底部垂直组合(bottom vertical combination)。
策略构造:
+ 买入一个看涨期权,行权价较高
+ 买入一个标的相同、期限相同的看跌期权,行权价较低
异价跨式组合策略收益和股票价格的关系示意如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, callfunc(spots, 135, 20), 'b-.',linewidth = 2)
pylab.plot(spots, putfunc(spots, 65, 30), 'r--',linewidth = 2)
pylab.plot(spots, callfunc(spots, 135, 20) + putfunc(spots, 65, 30), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权多头,行权价135',u'看跌期权多头,行权价65',u'异价跨式组合收益'], prop = font, loc = 'best')
pylab.title(u'异价跨式组合策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbfd4564.png)
如上图所示,与跨式组合类似,如果投资者认为股票价格会有很大的波动,但却不确定波动方向时候,可以选择异价跨式组合(底部垂直组合)。与跨式组合不同的是:
+ 底部垂直组合需要股价变动更大才能盈利
+ 同时,底部垂直组合当股价比较稳定时的损失却也比较小
相反地,可以构造顶部垂直组合(top vertical combination):
+ 卖出一个看涨期权,行权价较高
+ 卖出一个标的相同、期限相同的看跌期权,行权价较低
顶部垂直组合策略收益和股票价格的关系示意如下图:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, -callfunc(spots, 135, 20), 'b-.',linewidth = 2)
pylab.plot(spots, -putfunc(spots, 65, 30), 'r--',linewidth = 2)
pylab.plot(spots, -callfunc(spots, 135, 20) - putfunc(spots, 65, 30), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权空头,行权价135',u'看跌期权空头,行权价65',u'顶部垂直组合收益'], prop = font, loc = 'best')
pylab.title(u'顶部垂直组合策略', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdbff2863.png)
如上图可见,构造顶部垂直组合后,如果股价变动非常大,投资者的损失是无限的!
## 5. 具有任意收益形式的组合
上面的一系列策略组合中,我们看到利用期权可以产生很多有趣的盈利形式。实际上,如果:
+ 对于到期日`T`,任意行权价的欧式期权均可以交易
那么,理论上讲,可以构造任何形式的到期日收益。这可以利用下图来说明:
```py
spots = np.linspace(0,200,41)
pylab.figure(figsize=(10,7))
pylab.plot(spots, callfunc(spots, 95, 5), 'b-.',linewidth = 2)
pylab.plot(spots, callfunc(spots, 105, 3), 'g.',linewidth = 2)
pylab.plot(spots, -2*callfunc(spots, 100, 4), 'r--',linewidth = 2)
pylab.plot(spots, callfunc(spots, 95, 5) + callfunc(spots, 105, 3) - 2*callfunc(spots, 100, 4), 'k-',linewidth = 2)
font.set_size(15)
pylab.legend([u'看涨期权多头,行权价95',u'看涨期权多头,行权价105',u'2个看涨期权空头,行权价100', u'蝶式差价组合'], prop = font, loc = 'best')
pylab.title(u'蝶式差价', fontproperties = font)
pylab.xlabel(u'标的价格', fontproperties = font)
pylab.ylabel(u'偿付', fontproperties = font)
pylab.ylim(-50,50)
pylab.grid()
```
![](https://box.kancloud.cn/2016-07-30_579cbdc0191f5.png)
上图是一个蝶式差价,其中三个行权价`K1`、`K2`、`K3`非常接近,所以我们构造了一个类似于小尖刺的收益形式。将很多的这样的尖刺组合起来,就可以构造成功任意形式的收益。
- Python 量化交易教程
- 第一部分 新手入门
- 一 量化投资视频学习课程
- 二 Python 手把手教学
- 量化分析师的Python日记【第1天:谁来给我讲讲Python?】
- 量化分析师的Python日记【第2天:再接着介绍一下Python呗】
- 量化分析师的Python日记【第3天:一大波金融Library来袭之numpy篇】
- 量化分析师的Python日记【第4天:一大波金融Library来袭之scipy篇】
- 量化分析师的Python日记【第5天:数据处理的瑞士军刀pandas】
- 量化分析师的Python日记【第6天:数据处理的瑞士军刀pandas下篇
- 量化分析师的Python日记【第7天:Q Quant 之初出江湖】
- 量化分析师的Python日记【第8天 Q Quant兵器谱之函数插值】
- 量化分析师的Python日记【第9天 Q Quant兵器谱之二叉树】
- 量化分析师的Python日记【第10天 Q Quant兵器谱 -之偏微分方程1】
- 量化分析师的Python日记【第11天 Q Quant兵器谱之偏微分方程2】
- 量化分析师的Python日记【第12天:量化入门进阶之葵花宝典:因子如何产生和回测】
- 量化分析师的Python日记【第13天 Q Quant兵器谱之偏微分方程3】
- 量化分析师的Python日记【第14天:如何在优矿上做Alpha对冲模型】
- 量化分析师的Python日记【第15天:如何在优矿上搞一个wealthfront出来】
- 第二部分 股票量化相关
- 一 基本面分析
- 1.1 alpha 多因子模型
- 破解Alpha对冲策略——观《量化分析师Python日记第14天》有感
- 熔断不要怕, alpha model 为你保驾护航!
- 寻找 alpha 之: alpha 设计
- 1.2 基本面因子选股
- Porfolio(现金比率+负债现金+现金保障倍数)+市盈率
- ROE选股指标
- 成交量因子
- ROIC&cashROIC
- 【国信金工】资产周转率选股模型
- 【基本面指标】Cash Cow
- 量化因子选股——净利润/营业总收入
- 营业收入增长率+市盈率
- 1.3 财报阅读 • [米缸量化读财报] 资产负债表-投资相关资产
- 1.4 股东分析
- 技术分析入门 【2】 —— 大家抢筹码(06年至12年版)
- 技术分析入门 【2】 —— 大家抢筹码(06年至12年版)— 更新版
- 谁是中国A股最有钱的自然人
- 1.5 宏观研究
- 【干货包邮】手把手教你做宏观择时
- 宏观研究:从估值角度看当前市场
- 追寻“国家队”的足迹
- 二 套利
- 2.1 配对交易
- HS300ETF套利(上)
- 【统计套利】配对交易
- 相似公司股票搬砖
- Paired trading
- 2.2 期现套利 • 通过股指期货的期现差与 ETF 对冲套利
- 三 事件驱动
- 3.1 盈利预增
- 盈利预增事件
- 事件驱动策略示例——盈利预增
- 3.2 分析师推荐 • 分析师的金手指?
- 3.3 牛熊转换
- 历史总是相似 牛市还在延续
- 历史总是相似 牛市已经见顶?
- 3.4 熔断机制 • 股海拾贝之 [熔断错杀股]
- 3.5 暴涨暴跌 • [实盘感悟] 遇上暴跌我该怎么做?
- 3.6 兼并重组、举牌收购 • 宝万战-大戏开幕
- 四 技术分析
- 4.1 布林带
- 布林带交易策略
- 布林带回调系统-日内
- Conservative Bollinger Bands
- Even More Conservative Bollinger Bands
- Simple Bollinger Bands
- 4.2 均线系统
- 技术分析入门 —— 双均线策略
- 5日线10日线交易策略
- 用5日均线和10日均线进行判断 --- 改进版
- macross
- 4.3 MACD
- Simple MACD
- MACD quantization trade
- MACD平滑异同移动平均线方法
- 4.4 阿隆指标 • 技术指标阿隆( Aroon )全解析
- 4.5 CCI • CCI 顺势指标探索
- 4.6 RSI
- 重写 rsi
- RSI指标策略
- 4.7 DMI • DMI 指标体系的构建及简单应用
- 4.8 EMV • EMV 技术指标的构建及应用
- 4.9 KDJ • KDJ 策略
- 4.10 CMO
- CMO 策略模仿练习 1
- CMO策略模仿练习2
- [技术指标] CMO
- 4.11 FPC • FPC 指标选股
- 4.12 Chaikin Volatility
- 嘉庆离散指标测试
- 4.13 委比 • 实时计算委比
- 4.14 封单量
- 按照封单跟流通股本比例排序,剔除6月上市新股,前50
- 涨停股票封单统计
- 实时计算涨停板股票的封单资金与总流通市值的比例
- 4.15 成交量 • 决战之地, IF1507 !
- 4.16 K 线分析 • 寻找夜空中最亮的星
- 五 量化模型
- 5.1 动量模型
- Momentum策略
- 【小散学量化】-2-动量模型的简单实践
- 一个追涨的策略(修正版)
- 动量策略(momentum driven)
- 动量策略(momentum driven)——修正版
- 最经典的Momentum和Contrarian在中国市场的测试
- 最经典的Momentum和Contrarian在中国市场的测试-yanheven改进
- [策略]基于胜率的趋势交易策略
- 策略探讨(更新):价量结合+动量反转
- 反向动量策略(reverse momentum driven)
- 轻松跑赢大盘 - 主题Momentum策略
- Contrarian strategy
- 5.2 Joseph Piotroski 9 F-Score Value Investing Model · 基本面选股系统:Piotroski F-Score ranking system
- 5.3 SVR · 使用SVR预测股票开盘价 v1.0
- 5.4 决策树、随机树
- 决策树模型(固定模型)
- 基于Random Forest的决策策略
- 5.5 钟摆理论 · 钟摆理论的简单实现——完美躲过股灾和精准抄底
- 5.6 海龟模型
- simple turtle
- 侠之大者 一起赚钱
- 5.7 5217 策略 · 白龙马的新手策略
- 5.8 SMIA · 基于历史状态空间相似性匹配的行业配置 SMIA 模型—取交集
- 5.9 神经网络
- 神经网络交易的训练部分
- 通过神经网络进行交易
- 5.10 PAMR · PAMR : 基于均值反转的投资组合选择策略 - 修改版
- 5.11 Fisher Transform · Using Fisher Transform Indicator
- 5.12 分型假说, Hurst 指数 · 分形市场假说,一个听起来很美的假说
- 5.13 变点理论 · 变点策略初步
- 5.14 Z-score Model
- Zscore Model Tutorial
- 信用债风险模型初探之:Z-Score Model
- user-defined package
- 5.15 机器学习 · Machine Learning 学习笔记(一) by OTreeWEN
- 5.16 DualTrust 策略和布林强盗策略
- 5.17 卡尔曼滤波
- 5.18 LPPL anti-bubble model
- 今天大盘熔断大跌,后市如何—— based on LPPL anti-bubble model
- 破解股市泡沫之谜——对数周期幂率(LPPL)模型
- 六 大数据模型
- 6.1 市场情绪分析
- 通联情绪指标策略
- 互联网+量化投资 大数据指数手把手
- 6.2 新闻热点
- 如何使用优矿之“新闻热点”?
- 技术分析【3】—— 众星拱月,众口铄金?
- 七 排名选股系统
- 7.1 小市值投资法
- 学习笔记:可模拟(小市值+便宜 的修改版)
- 市值最小300指数
- 流通市值最小股票(新筛选器版)
- 持有市值最小的10只股票
- 10% smallest cap stock
- 7.2 羊驼策略
- 羊驼策略
- 羊驼反转策略(修改版)
- 羊驼反转策略
- 我的羊驼策略,选5只股无脑轮替
- 7.3 低价策略
- 专捡便宜货(新版quartz)
- 策略原理
- 便宜就是 alpha
- 八 轮动模型
- 8.1 大小盘轮动 · 新手上路 -- 二八ETF择时轮动策略2.0
- 8.2 季节性策略
- Halloween Cycle
- Halloween cycle 2
- 夏买电,东买煤?
- 历史的十一月板块涨幅
- 8.3 行业轮动
- 银行股轮动
- 申万二级行业在最近1年、3个月、5个交易日的涨幅统计
- 8.4 主题轮动
- 快速研究主题神器
- recommendation based on subject
- strategy7: recommendation based on theme
- 板块异动类
- 风险因子(离散类)
- 8.5 龙头轮动
- Competitive Securities
- Market Competitiveness
- 主题龙头类
- 九 组合投资
- 9.1 指数跟踪 · [策略] 指数跟踪低成本建仓策略
- 9.2 GMVP · Global Minimum Variance Portfolio (GMVP)
- 9.3 凸优化 · 如何在 Python 中利用 CVXOPT 求解二次规划问题
- 十 波动率
- 10.1 波动率选股 · 风平浪静 风起猪飞
- 10.2 波动率择时
- 基于 VIX 指数的择时策略
- 简单低波动率指数
- 10.3 Arch/Garch 模型 · 如何使用优矿进行 GARCH 模型分析
- 十一 算法交易
- 11.1 VWAP · Value-Weighted Average Price (VWAP)
- 十二 中高频交易
- 12.1 order book 分析 · 基于高频 limit order book 数据的短程价格方向预测—— via multi-class SVM
- 12.2 日内交易 · 大盘日内走势 (for 择时)
- 十三 Alternative Strategy
- 13.1 易经、传统文化 · 老黄历诊股
- 第三部分 基金、利率互换、固定收益类
- 一 分级基金
- “优矿”集思录——分级基金专题
- 基于期权定价的分级基金交易策略
- 基于期权定价的兴全合润基金交易策略
- 二 基金分析
- Alpha 基金“黑天鹅事件” -- 思考以及原因
- 三 债券
- 债券报价中的小陷阱
- 四 利率互换
- Swap Curve Construction
- 中国 Repo 7D 互换的例子
- 第四部分 衍生品相关
- 一 期权数据
- 如何获取期权市场数据快照
- 期权高频数据准备
- 二 期权系列
- [ 50ETF 期权] 1. 历史成交持仓和 PCR 数据
- 【50ETF期权】 2. 历史波动率
- 【50ETF期权】 3. 中国波指 iVIX
- 【50ETF期权】 4. Greeks 和隐含波动率微笑
- 【50ETF期权】 5. 日内即时监控 Greeks 和隐含波动率微笑
- 【50ETF期权】 5. 日内即时监控 Greeks 和隐含波动率微笑
- 三 期权分析
- 【50ETF期权】 期权择时指数 1.0
- 每日期权风险数据整理
- 期权头寸计算
- 期权探秘1
- 期权探秘2
- 期权市场一周纵览
- 基于期权PCR指数的择时策略
- 期权每日成交额PC比例计算
- 四 期货分析
- 【前方高能!】Gifts from Santa Claus——股指期货趋势交易研究