编程金融小白学 股票期权 lv.0 基本概念

编程金融小白学 股票期权

最近 沉迷股市 学习期权,所以 学了半斤八两的我 来写写 关于 股票期权 的介绍手册, 帮助 像我一样的小白 从 编程 与 数学的角度 了解期权。若有哪里不对,欢迎大佬在评论区留言。

基本概念

什么是期权?

  • 2015年 2月 9日,股票期权(option)入驻了我国证券市场。
  • 期 -> 未来,权 -> 权利
  • 期权 顾名思义 就是追寻未来的权利
  • 说起来 期权也没有那么的复杂,和买保险是一个意思。
    • 例:张三 买了辆新车,并买入了一份一个月的保险(一个月的期权),如果 他的车在这个月内没有出问题,那么他就损失了这一部分保险费,如果这个月 车出了大毛病,那么他就有权利 去保险公司 所取赔偿(在期权内就是有权 不损失保险以外的金额)。
  • 在期权里 定金是不退的。

认购期权

  • 又称 看涨期权
  • 认购期权(call option),就是上面举的例子,购买认购期权就是 拥有 未来买入某个东西的权利。如果 这个东西在未来 价格 比你订的价格低,那么你就有权利不购买它,你就只损失这一笔 定金。
  • 锁定 买入价

认沽期权

  • 又称 看跌期权
  • 认沽期权(put option),和认购相反,就是 在未来拥有卖出的权利。
  • 锁定 卖出价

Python 期权类

  • 好了 我们现在知道了 认购与认沽期权 那么就可以来构建期权类了。

option_price: 期权价

deposi: 定金

current: 现价

class Option:
    def __init__(self, option_price:float, deposit:float):
        self.opt = option_price
        self.dep = deposit
    
    def call_opt(self, current:float):
        '''
        认购期权(买)
        若 现价 - 期权价 < 0 ,不履行合约, 扣除定金
        若 现价 - 期权价 > 0 ,履行合约,扣除定金
        '''
        return max(current-self.opt, 0) - self.dep
    
    def put_opt(self, current:float):
        '''
        认沽期权(卖)
        若 期权价 - 现价 < 0 ,不履行合约, 扣除定金
        若 期权价 - 现价 > 0 ,履行合约,扣除定金
        '''
        return max(self.opt-current, 0) - self.dep
    
    def __repr__(self):
        return f"期权(期权价{self.opt},定金{self.dep})"
  • 好了 我们现在 构建 好了 这个期权类。接下来可以,就可以绘制 认购 与 认沽的线性图 更直观的理解它了。

  • 为了绘图 导入库

 # 导入 需要的 library 库  
import numpy as np # 科学计算
import matplotlib.pyplot as plt # 画图
plt.rcParams['font.sans-serif'] = ['FangSong'] # 设置中文
plt.rcParams['axes.unicode_minus'] = False # 设置中文负号
买入认购线性图
  • 设定 我们 买入 期权价 500元的认购期权,定金100元。(支付100元 约定 一个月后 以500 元 价格 购买它)
  • 一个月后 它的价格 变为 X。(若 X为 600,那么我不赚钱 ( 600 − 500 ) − 100 (600-500)-100 (600500)100 ,若700 我赚一百 ( 700 − 500 ) − 100 (700-500)-100 (700500)100, 若 400 我不履行合约 亏定金100 ( 0 − 100 ) (0-100) (0100))。
  • 设定 因变量 Y 为 赚的钱, 就可以 画出:
# 买入 期权价 500元的认购期权,定金100元。
buy = Option(500,100)
X = np.linspace(0,1000,100)
Y1 = np.array([buy.call_opt(x) for x in X])
plt.figure(figsize=(8,5), dpi=600)
plt.axhline(y=0,ls="-",c="green")
plt.plot(X,Y1)
plt.grid(True)
plt.title('买入认购期权')
plt.ylabel('收益')
plt.xlabel('到期价格')
plt.ylim((-300,300))
plt.show()

01

买入认沽线性图
  • 设定 我们 买入 期权价 500元的认沽期权(就是觉得一个月后 会跌),定金100元。(支付100元 约定 一个月后 以500 元 价格 卖出它)
  • 一个月后 它的价格 变为 X。(若 X为 600,那么我不履行合约亏一百 0 − 100 0-100 0100 ,若700 我不履行合约还亏一百 0 − 100 0-100 0100, 若 400 我履行合约 但不赚钱 ( 500 − 400 ) − 100 (500-400)-100 (500400)100)。
  • 设定 因变量 Y 为 赚的钱, 就可以 画出:
# 买入 期权价 500元的认沽期权,定金100元。
buy = Option(500,100)
X = np.linspace(0,1000,100)
Y2 = np.array([buy.put_opt(x) for x in X])
plt.figure(figsize=(8,5), dpi=600)
plt.axhline(y=0,ls="-",c="green")
plt.plot(X,Y2)
plt.grid(True)
plt.title('买入认沽期权')
plt.ylabel('收益')
plt.xlabel('到期价格')
plt.ylim((-300,300))
plt.show()

02

  • 那么 有了买入 那么 就有卖出 所以 我们 可以由买入 期权 变成卖出期权。
  • 也就是 把 买入图 按x轴 倒一下
卖出认购线性图
  • 设定 我们 卖出 期权价 500元的认购期权(就是觉得一个月后 不会涨),收入定金100元。(收入100元 约定 一个月后 以500 元 价格 卖出它),由于卖方没有权利毁约,所以一个月后必须卖出。
  • 一个月后 它的价格 变为 X。
  • 设定 因变量 Y 为 赚的钱, 就可以 画出:
# 卖出 期权价 500元的认购期权,定金100元。
sell = Option(500,100)
X = np.linspace(0,1000,100)
Y3 = np.array([-sell.call_opt(x) for x in X])
plt.figure(figsize=(8,5), dpi=600)
plt.axhline(y=0,ls="-",c="green")
plt.plot(X,Y3)
plt.grid(True)
plt.title('卖出认购期权')
plt.ylabel('收益')
plt.xlabel('到期价格')
plt.ylim((-300,300))
plt.show()

03

卖出认沽线性图
  • 设定 我们 卖出 期权价 500元的认沽期权(就是觉得一个月后 不会跌),收入定金100元。(收入100元 约定 一个月后 以500 元 价格 买入它),由于卖方没有权利毁约,所以一个月后必须卖出。
  • 一个月后 它的价格 变为 X。
  • 设定 因变量 Y 为 赚的钱, 就可以 画出:
# 卖出 期权价 500元的认沽期权,定金100元。
sell = Option(500,100)
X = np.linspace(0,1000,100)
Y4 = np.array([-sell.put_opt(x) for x in X])
plt.figure(figsize=(8,5), dpi=600)
plt.axhline(y=0,ls="-",c="green")
plt.plot(X,Y4)
plt.grid(True)
plt.title('卖出认沽期权')
plt.ylabel('收益')
plt.xlabel('到期价格')
plt.ylim((-300,300))
plt.show()

04

期权线性图
  • 我们学会了 四种期权的简单构成 那么就可以画出所有的图 进行对比。
  • 红色 为认购,绿色 为认沽
  • 实线 为买入,虚线 为卖出
plt.figure(figsize=(8,5), dpi=600)
plt.axhline(y=0,ls="-",c="black")
plt.plot(X,Y1, color='red', label='买入认购')
plt.plot(X,Y2, color='green', label='买入认沽')
plt.plot(X,Y3, color='red', label='卖出认购',ls = '--')
plt.plot(X,Y4, color='green', label='卖出认沽',ls = '--')
plt.grid(True)
plt.title('期权')
plt.ylabel('收益')
plt.xlabel('到期价格')
plt.ylim((-300,300))
plt.show()

05

  • 在 图中 我们可以看到 这属于 零和博弈,有买入 那么 就有买出。在不考虑 税等因素情况下,买入的收益 就是卖出的亏损。

  • 所以 期权是一种 即使 市场处于波动情况下 投资方 依然可以盈利的 金融产品。

  • 补充说明(欧式期权 与 美式期权):

    • 在全球 有两种 期权 (或三种)
    • 欧式期权:一种买方只能到期日当天行使权利 (中国使用的类型)
    • 美式期权:一种买方可以在交易期间任何时间都可以行使权利
    • 第三种:在到期前指定一段时间可以行使权利
  • 您 看到这 基本上了解了 期权的最基本的原理,现实交易肯定不可能这么的简单,那么接下来就 再 聊聊 现实中的 期权的时间价值 和 内在价值吧。

合约要素

实值,虚值与平值
  • 实值,虚值与平值 这三要素 理解起来很是简单:
    • 实值:如果我现在行使权利 那我就赚了
    • 虚值:如果我现在行使权利 那我就亏了 所以我不会行使权利
    • 平值:如果我现在行使权利 不赚也不亏
  • 我们用实例 来解释一下(我用的是 tushare,这是我的推荐码https://tushare.pro/register?reg=361123):
import pandas as pd
import tushare as tus
pro = tus.pro_api()
print(tus.__version__)
1.2.54
# 获取 期权合约信息
opt_name = pro.opt_basic(exchange='SSE', fields='ts_code,name,exercise_type,list_date,delist_date')
# 选取 当月的合约
opt_name.query('list_date > "20200401" and delist_date < "20200529"')
ts_codenameexercise_typelist_datedelist_date
92510002475.SH华夏上证50ETF期权2005认购3.00欧式2020042020200527
92610002476.SH华夏上证50ETF期权2005认沽3.00欧式2020042020200527
101910002471.SH华夏上证50ETF期权2005认购2.95欧式2020040820200527
102010002472.SH华夏上证50ETF期权2005认沽2.95欧式2020040820200527
188510002469.SH华夏上证50ETF期权2005认购2.45欧式2020040220200527
188610002470.SH华夏上证50ETF期权2005认沽2.45欧式2020040220200527
231410002473.SH华泰柏瑞沪深300ETF期权2005认购4.20欧式2020040820200527
231510002474.SH华泰柏瑞沪深300ETF期权2005认沽4.20欧式2020040820200527
  • 介绍一下 上表信息。
  • 50 ETF 和 300 ETF 是目前 中国唯二 的 两个 在证券交易所可交易的期权。
  • 10002475.SH 为 在 tushare 的编号
  • 华夏上证50ETF期权2005认购2.95 的意思是 投资者有权利以2.95元每份 买入 10000份 在2020年05月的 50ETF合约。也就是预期 在 5月 价格 会比 2.95元 高。
  • 2020年4月17日 收盘价为 2.793 元。当天的价格如图:

06

  • 若我们 在 2020年4月17日 以 0.0150元每份 买入 华夏上证50ETF期权2005认购2.95, 那么这时候 收盘价 对于行权价 2.95元 就为虚值,就是说 我现在就行使权利不合算,会亏本。
  • 若我们 在 2020年4月17日 以 0.1978元 买入 华夏上证50ETF期权2005认沽2.95, 那么这时候 收盘价 对于行权价 2.95 就为实值,就是说 我现在就行使权利 会赚, 但是 我们还要考虑到买入的成本。
内在价值与时间价值
  • 我们通过上面的例子 可以算出 若 0.1978元 买入 2.95元的5月期货,那么对于 4月17日那天 收盘价2.793元 就直接行使权利的话 它的 内在价值为 2.95 − 2.793 = 0.157 2.95 - 2.793 = 0.157 2.952.793=0.157元。但是我们 又以 0.1978元购入,所以可以得出 它的时间价值为 0.1978 − 0.157 = 0.0408 0.1978 - 0.157=0.0408 0.19780.157=0.0408元。

  • 在其他因素不变的话,距离到期时间越短,它的时间价值就越低。呈抛物线加速衰减。

  • 接下来 看一下 认购期权 与 认沽期权 在 2020年04月的数据 (今日为4月19日 周日)

call295 = pro.opt_daily(ts_code='10002471.SH', start_date='20200408')
call295
ts_codetrade_dateexchangepre_settlepre_closeopenhighlowclosesettlevolamountoi
010002471.SH20200417SSE0.01040.01040.01160.02250.01160.01500.01503.87116559168.051792.0
110002471.SH20200416SSE0.01110.01110.01050.01170.00910.01040.01041.41481466280.039377.0
210002471.SH20200415SSE0.01210.01210.01200.01700.01070.01110.01111.66492153384.034645.0
310002471.SH20200414SSE0.00940.00940.01010.01230.00810.01210.01211.61541615393.028321.0
410002471.SH20200413SSE0.01600.01600.01600.01600.00890.00940.00941.65601915005.023352.0
510002471.SH20200410SSE0.01950.01950.01900.02160.01580.01600.01601.35662392633.017205.0
610002471.SH20200409SSE0.02060.02060.02230.02280.01830.01950.01951.37232803389.012130.0
710002471.SH20200408SSE0.02780.02780.02460.02660.02060.02060.02060.90212119503.05423.0
put295 = pro.opt_daily(ts_code='10002472.SH', start_date='20200408')
put295
ts_codetrade_dateexchangepre_settlepre_closeopenhighlowclosesettlevolamountoi
010002472.SH20200417SSE0.22500.22500.20790.20790.18100.19780.19780.40367704138.07258.0
110002472.SH20200416SSE0.23200.23200.23960.23990.22000.22500.22500.24735640617.06228.0
210002472.SH20200415SSE0.21750.21730.21850.23200.21180.23200.23200.31166925738.05288.0
310002472.SH20200414SSE0.24820.24820.23820.24600.21730.21730.21750.14503281409.03741.0
410002472.SH20200413SSE0.24210.24070.24750.25290.23960.24820.24820.12813179785.02868.0
510002472.SH20200410SSE0.24190.24140.24150.24830.21350.24070.24210.12602941148.01855.0
610002472.SH20200409SSE0.24960.24960.24210.24370.23450.24140.24190.05721370615.01278.0
710002472.SH20200408SSE0.24330.24330.24810.25690.24060.24960.24960.15243806835.01044.0
  • 可以看到 由于认购期权 为虚值 购入的价格很低。这是因为 购买 虚值的期权 就像赌博,以小博大。例如,我在 04月17日时 购买了 一亿份 华夏上证50ETF期权2005认购2.95 花费 150万元 定金。若在5月27日时,价格涨到了3.05元 每份,那么我就相当于 赚了一千万元。若是没有比 2.95元高,那么我就损失 150万。在虚值交易中,这和杠杆类似。
  • 看到这 你可能会冲动 去购买期权,但如果现实都这么容易能赚钱 大家都不用辛苦劳作了。金融市场 风险和利润成正比,以后 如果我有时间的话,会继续补完后面的 各种交易策略 与简易代码,在 预测哪种情况下 可以使用哪种策略等等。
  • 若有帮助请给我 “一键三连”支持一下 (CSDN 应该没有这功能吧)

下一篇 期权的定义

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值