期权基础知识

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.82.4)100001480=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.42.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.30030.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.52.0)100001500=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.02.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期权,我们会看到其会有很多个报价,在下一篇博文中,我们将向大家介绍期权的各种价格以及形成原理。

以上是关于期权基础知识的主要内容,如果未能解决你的问题,请参考以下文章

日历价差(calendar spread)

32句期权交易的浓缩精华

期权交易基本原理——买进看跌期权(Long Put),卖出看跌期权(Short Put)

利用akshare读取50EFF期权1

金融衍生品PK:期权和权证俩兄弟

英文缩写PE,LP,GP在金融中分别代表啥含义