期权基础知识
Posted 最老程序员闫涛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了期权基础知识相关的知识,希望对你有一定的参考价值。
期权允许做非常复杂的策略,有策略之王的称号。同时我国已经引入期权交易5、6年之久,其中的50ETF期权交易非常活跃。由于期权可以在任意市场上环境下操作,具有高杠杆比的特点,是量化交易领域非常重要的一块。
然而要进行期权的量化交易,我们必须先搞清期权的基本概念。下面我们就以50ETF为例,向大家介绍期权的基本概念。
认购(看涨)期权
认购期权也称为看涨期权,如果认为50ETF会大涨,则可以考虑买入认购期权。
初始状态
我们假设张三持有12月到期的50ETF认购期权:
- 期权类型:认购期权;
- 行权价格:2.400元;
- 标的价格:当时50ETF的价格为2.440元;
- 期权价格:0.1480元/份,一张合约有10000份,因此价格为1480元;
假设李四买入该期权,则向张三支付1480元权利金。下面我们分为三种情况来分析张三、李四双方的盈利情况。
到期大涨
假设在到期日50ETF涨到2.800元,则此时李四可以以2.400元的价格买到2.800元的50ETF,其利润为:
p
r
o
f
i
t
=
(
2.8
−
2.4
)
∗
10000
−
1480
=
2520
profit = (2.8 - 2.4) * 10000 - 1480 = 2520
profit=(2.8−2.4)∗10000−1480=2520
既其利润为2520元。注意:虽然李四买入股票赚了4000元,但是他在一开始时支付给张三1480元权利金,因此其盈利就只有2520元了。
我们再来看张三,由于其需要以2.4元的价格卖出值2.8元的50ETF,其利润为:
p
r
o
f
i
t
=
(
2.4
−
2.8
)
∗
10000
+
1480
=
−
2520
profit = (2.4 - 2.8)*10000 + 1480 = -2520
profit=(2.4−2.8)∗10000+1480=−2520
既其亏损2520元。注意:虽然张三卖出50ETF时亏了4000元,但是他在一开始时还收到了李四的1480元的权利金,因此其亏损只有2520元。
到期未涨
假设在到期日50ETF跌到2.0元,则此时李四选择不行权,此时李四会亏损当初交给张三的权利金1480元。
张三此时不需要与李四交易50ETF,但是其在初始时收到了李四的1480元权利金,因此其利润为1480元。
讨论
根据上面的讨论,我们可以看出,对于认购(看涨)期权的买方李四来讲,50ETF在到期日涨得越多赚的越多,呈线性关系。而50ETF在到期日跌得再多,他也可以通过不行权,只亏初始时交易甲的权利金,因此50ETF的波动越大对认购(看涨)期权的买方来说越理想。
对于认购(看涨)期权的卖方而言,50ETF在到期日涨得越多,其亏损就越多,呈线性关系。而50ETF在到期日跌得再多,其也不能获利,只能收取权利金。
我们可以通过下面的程序画出认购(看涨)期权买方和卖方的盈亏图:
def option_call_demo(self):
exercise_price = 2.4
option_price = 0.148
units = 10000
plt.figure(figsize=(8,6))
plt.subplots_adjust(hspace=1) # 设置子图纵向距离
plt.subplot(2, 1, 1)
plt.title('认购(看涨)期权买方')
ax = plt.gca() # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none') # 将右边 边沿线颜色设置为空 其实就相当于抹掉这条边
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 设置中心的为(0,0)的坐标轴
ax.spines['bottom'].set_position(('data', 0)) # 指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))
# plt.xticks(rotation=45)#x轴数值倾斜45度显示
plt.xlim(-0.1, 5.0) #x轴数值设置
plt.ylim(-0.2, 2.5)
# 认购(看涨)期权买方盈利曲线
x11 = np.array([0.0, 2.4])
y11 = np.array([-0.1480, -0.1480])
plt.plot(x11, y11, 'r-')
x12 = np.array([2.4, 4.8])
y12 = np.array([-0.1480, (4.8-2.4)-0.148])
plt.plot(x12, y12, 'r-')
# 认购(看涨)期权卖方盈利曲线
plt.subplot(2, 1, 2)
plt.title('认购(看涨)期权卖方')
ax = plt.gca() # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none') # 将右边 边沿线颜色设置为空 其实就相当于抹掉这条边
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 设置中心的为(0,0)的坐标轴
ax.spines['bottom'].set_position(('data', 0)) # 指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))
# plt.xticks(rotation=45)#x轴数值倾斜45度显示
plt.xlim(-0.1, 5.0) #x轴数值设置
plt.ylim(-2.5, 0.2)
x21 = np.array([0.0, 2.4])
y21 = np.array([0.1480, 0.1480])
plt.plot(x21, y21, 'b-')
x22 = np.array([2.4, 4.8])
y22 = np.array([0.1480, (2.4-4.8)+0.1480])
plt.plot(x22, y22, 'b-')
plt.show()
绘制的图形如下所示:
通过上面的分析,我们可能会得到如下结论,认购(看涨)期权买方只承担权利金的有限损失,但是却可以得到50ETF上涨的无限大(理论上)的利润。而卖方则在最好的情况下可以赚到买方的权利金,最坏的情况下会有无限大的损失,那么谁还会当认购(看涨)期权的卖家呢?
通常认购(看涨)期权的卖家是投资机构,那么机构又是出于什么考虑当这个看似非常不讨好的卖家呢?我们来看上述情况的盈亏平衡点为2.4+0.148=2.548元,机构通过专业人士的计算,实际股价涨到2.548以上的概率是非常小的,例如只有10%的概率,那么在90%的情况下,机构都可以收到权利金,因此机构在大多数情况虽然赚得不多,但是却会在赚钱。相反,买家在少数情况下会很赚钱,但是在多数情况下,却会亏掉支付给卖家的权利金。
提前平仓
假设李四在八月份购买这份期权之后,在9月18日,这份期权的价格大涨到0.3000元,李四考虑提前平仓离场。
对于李四而言:
p
r
o
f
i
t
=
(
0.3003
−
0.1480
)
∗
10000
=
1523
profit = (0.3003 - 0.1480)*10000=1523
profit=(0.3003−0.1480)∗10000=1523
相应的张三将有1523的亏损。
认沽(看跌)期权
假设李四购买了张三12月到期的认沽(看跌)期权:
- 期权类型:认沽(看跌)期权
- 行权价格:2.5
- 标的价格:2.6
- 期权价格:0.15元/份,一张合约有10000份,因此价格为1500元
下面我们分大跌和上涨两种情况来分析张三和李四的盈利情况。
标的大跌
假设到期日50ETF大跌到2.0元,李四具有以2.5元的价格卖出的权利,其盈利为:
p
r
o
f
i
t
=
(
2.5
−
2.0
)
∗
10000
−
1500
=
3500
profit=(2.5-2.0)*10000-1500=3500
profit=(2.5−2.0)∗10000−1500=3500
李四把只值2.0元的50ETF卖到了2.5元,因此其赚了5000元,但是其在初始时需要支付给张三1500元权利金,因此其盈利为3500元。
我们再来看张三,其盈利为:
p
r
o
f
i
t
=
(
2.0
−
2.5
)
∗
10000
+
1500
=
−
3500
profit=(2.0-2.5)*10000+1500=-3500
profit=(2.0−2.5)∗10000+1500=−3500
张三本来可以以2.0元的价格买入50ETF,但是却必须以2.5元买入50ETF,因此其亏损5000元,但是其在初始时收取了1500元的权利金,因此其亏损为3500元。
标的大涨
假设到期日50ETF的价格上涨到2.8元,此时李四就会觉得以2.5元的价格卖出会比较亏,因此选择不行权,因此其损失权利金。
由于李四选择不行权,张三就不能以2.5元买入50ETF,因此其也只能赚取权利金1500元。
讨论
我们可以仿照认购(看涨)期权的方法,绘制出认沽(看跌)期权的盈利曲线:
def option_put_demo(self):
exercise_price = 2.5
option_price = 0.15
units = 10000
plt.figure(figsize=(8,6))
plt.subplots_adjust(hspace=1) # 设置子图纵向距离
plt.subplot(2, 1, 1)
plt.title('认沽(看跌)期权买方')
ax = plt.gca() # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none') # 将右边 边沿线颜色设置为空 其实就相当于抹掉这条边
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 设置中心的为(0,0)的坐标轴
ax.spines['bottom'].set_position(('data', 0)) # 指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))
# plt.xticks(rotation=45)#x轴数值倾斜45度显示
plt.xlim(-0.1, 5.0) #x轴数值设置
plt.ylim(-0.2, 2.5)
# 认沽(看跌)期权买方盈利曲线
x11 = np.array([2.5, 5])
y11 = np.array([-0.15, -0.15])
plt.plot(x11, y11, 'r-')
x12 = np.array([0.0, 2.5])
y12 = np.array([(2.5-0.0)-0.15, -0.15])
plt.plot(x12, y12, 'r-')
# 认购(看涨)期权卖方盈利曲线
plt.subplot(2, 1, 2)
plt.title('认沽(看跌)期权卖方')
ax = plt.gca() # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none') # 将右边 边沿线颜色设置为空 其实就相当于抹掉这条边
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 设置中心的为(0,0)的坐标轴
ax.spines['bottom'].set_position(('data', 0)) # 指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))
# plt.xticks(rotation=45)#x轴数值倾斜45度显示
plt.xlim(-0.1, 5.0) #x轴数值设置
plt.ylim(-2.5, 0.2)
x21 = np.array([2.5, 5.0])
y21 = np.array([0.15, 0.15])
plt.plot(x21, y21, 'b-')
x22 = np.array([0.0, 2.5])
y22 = np.array([(0.0 - 2.5) + 0.15, 0.15])
plt.plot(x22, y22, 'b-')
plt.show()
其图形如下所示:
以上是关于期权最基础的知识,但是如果我们来看50ETF期权,我们会看到其会有很多个报价,在下一篇博文中,我们将向大家介绍期权的各种价格以及形成原理。
以上是关于期权基础知识的主要内容,如果未能解决你的问题,请参考以下文章