文章目录

  • 编程金融小白学 股票期权
    • 基本概念
      • 什么是期权?
      • 认购期权
      • 认沽期权
      • Python 期权类
        • 买入认购线性图
        • 买入认沽线性图
        • 卖出认购线性图
        • 卖出认沽线性图
        • 期权线性图
      • 合约要素
        • 实值,虚值与平值
        • 内在价值与时间价值
    • 下一篇 [期权的定义](https://blog.csdn.net/Varalpha/article/details/105639256)

编程金融小白学 股票期权

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

基本概念

什么是期权?

  • 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_priceself.dep = depositdef call_opt(self, current:float):'''认购期权(买)若 现价 - 期权价 < 0 ,不履行合约, 扣除定金若 现价 - 期权价 > 0 ,履行合约,扣除定金'''return max(current-self.opt, 0) - self.depdef put_opt(self, current:float):'''认沽期权(卖)若 期权价 - 现价 < 0 ,不履行合约, 扣除定金若 期权价 - 现价 > 0 ,履行合约,扣除定金'''return max(self.opt-current, 0) - self.depdef __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 (600−500)−100 ,若700 我赚一百 ( 700 − 500 ) − 100 (700-500)-100 (700−500)−100, 若 400 我不履行合约 亏定金100 ( 0 − 100 ) (0-100) (0−100))。
  • 设定 因变量 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()

买入认沽线性图

  • 设定 我们 买入 期权价 500元的认沽期权(就是觉得一个月后 会跌),定金100元。(支付100元 约定 一个月后 以500 元 价格 卖出它)
  • 一个月后 它的价格 变为 X。(若 X为 600,那么我不履行合约亏一百 0 − 100 0-100 0−100 ,若700 我不履行合约还亏一百 0 − 100 0-100 0−100, 若 400 我履行合约 但不赚钱 ( 500 − 400 ) − 100 (500-400)-100 (500−400)−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()

  • 那么 有了买入 那么 就有卖出 所以 我们 可以由买入 期权 变成卖出期权。
  • 也就是 把 买入图 按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()

卖出认沽线性图

  • 设定 我们 卖出 期权价 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()

期权线性图

  • 我们学会了 四种期权的简单构成 那么就可以画出所有的图 进行对比。
  • 红色 为认购,绿色 为认沽
  • 实线 为买入,虚线 为卖出
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()

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

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

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

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

合约要素

实值,虚值与平值

  • 实值,虚值与平值 这三要素 理解起来很是简单:

    • 实值:如果我现在行使权利 那我就赚了
    • 虚值:如果我现在行使权利 那我就亏了 所以我不会行使权利
    • 平值:如果我现在行使权利 不赚也不亏
  • 我们用实例 来解释一下(我用的是 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_code name exercise_type list_date delist_date
925 10002475.SH 华夏上证50ETF期权2005认购3.00 欧式 20200420 20200527
926 10002476.SH 华夏上证50ETF期权2005认沽3.00 欧式 20200420 20200527
1019 10002471.SH 华夏上证50ETF期权2005认购2.95 欧式 20200408 20200527
1020 10002472.SH 华夏上证50ETF期权2005认沽2.95 欧式 20200408 20200527
1885 10002469.SH 华夏上证50ETF期权2005认购2.45 欧式 20200402 20200527
1886 10002470.SH 华夏上证50ETF期权2005认沽2.45 欧式 20200402 20200527
2314 10002473.SH 华泰柏瑞沪深300ETF期权2005认购4.20 欧式 20200408 20200527
2315 10002474.SH 华泰柏瑞沪深300ETF期权2005认沽4.20 欧式 20200408 20200527
  • 介绍一下 上表信息。
  • 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 元。当天的价格如图:

  • 若我们 在 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.95−2.793=0.157元。但是我们 又以 0.1978元购入,所以可以得出 它的时间价值为 0.1978 − 0.157 = 0.0408 0.1978 - 0.157=0.0408 0.1978−0.157=0.0408元。

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

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

call295 = pro.opt_daily(ts_code='10002471.SH', start_date='20200408')
call295
ts_code trade_date exchange pre_settle pre_close open high low close settle vol amount oi
0 10002471.SH 20200417 SSE 0.0104 0.0104 0.0116 0.0225 0.0116 0.0150 0.0150 3.8711 6559168.0 51792.0
1 10002471.SH 20200416 SSE 0.0111 0.0111 0.0105 0.0117 0.0091 0.0104 0.0104 1.4148 1466280.0 39377.0
2 10002471.SH 20200415 SSE 0.0121 0.0121 0.0120 0.0170 0.0107 0.0111 0.0111 1.6649 2153384.0 34645.0
3 10002471.SH 20200414 SSE 0.0094 0.0094 0.0101 0.0123 0.0081 0.0121 0.0121 1.6154 1615393.0 28321.0
4 10002471.SH 20200413 SSE 0.0160 0.0160 0.0160 0.0160 0.0089 0.0094 0.0094 1.6560 1915005.0 23352.0
5 10002471.SH 20200410 SSE 0.0195 0.0195 0.0190 0.0216 0.0158 0.0160 0.0160 1.3566 2392633.0 17205.0
6 10002471.SH 20200409 SSE 0.0206 0.0206 0.0223 0.0228 0.0183 0.0195 0.0195 1.3723 2803389.0 12130.0
7 10002471.SH 20200408 SSE 0.0278 0.0278 0.0246 0.0266 0.0206 0.0206 0.0206 0.9021 2119503.0 5423.0
put295 = pro.opt_daily(ts_code='10002472.SH', start_date='20200408')
put295
ts_code trade_date exchange pre_settle pre_close open high low close settle vol amount oi
0 10002472.SH 20200417 SSE 0.2250 0.2250 0.2079 0.2079 0.1810 0.1978 0.1978 0.4036 7704138.0 7258.0
1 10002472.SH 20200416 SSE 0.2320 0.2320 0.2396 0.2399 0.2200 0.2250 0.2250 0.2473 5640617.0 6228.0
2 10002472.SH 20200415 SSE 0.2175 0.2173 0.2185 0.2320 0.2118 0.2320 0.2320 0.3116 6925738.0 5288.0
3 10002472.SH 20200414 SSE 0.2482 0.2482 0.2382 0.2460 0.2173 0.2173 0.2175 0.1450 3281409.0 3741.0
4 10002472.SH 20200413 SSE 0.2421 0.2407 0.2475 0.2529 0.2396 0.2482 0.2482 0.1281 3179785.0 2868.0
5 10002472.SH 20200410 SSE 0.2419 0.2414 0.2415 0.2483 0.2135 0.2407 0.2421 0.1260 2941148.0 1855.0
6 10002472.SH 20200409 SSE 0.2496 0.2496 0.2421 0.2437 0.2345 0.2414 0.2419 0.0572 1370615.0 1278.0
7 10002472.SH 20200408 SSE 0.2433 0.2433 0.2481 0.2569 0.2406 0.2496 0.2496 0.1524 3806835.0 1044.0
  • 可以看到 由于认购期权 为虚值 购入的价格很低。这是因为 购买 虚值的期权 就像赌博,以小博大。例如,我在 04月17日时 购买了 一亿份 华夏上证50ETF期权2005认购2.95 花费 150万元 定金。若在5月27日时,价格涨到了3.05元 每份,那么我就相当于 赚了一千万元。若是没有比 2.95元高,那么我就损失 150万。在虚值交易中,这和杠杆类似。
  • 看到这 你可能会冲动 去购买期权,但如果现实都这么容易能赚钱 大家都不用辛苦劳作了。金融市场 风险和利润成正比,以后 如果我有时间的话,会继续补完后面的 各种交易策略 与简易代码,在 预测哪种情况下 可以使用哪种策略等等。
  • 若有帮助请给我 “一键三连”支持一下 (CSDN 应该没有这功能吧)

下一篇 期权的定义

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

  1. 编程金融小白学 股票期权 lv.5 希腊字母 Delta

    上一篇 隐含波动率 文章目录 编程金融小白学 股票期权 希腊字母 I 波动率 Sigma (σ)(\sigma)(σ) Delta (Δ)(\Delta)(Δ) - 标的资产价格 特征 I 特征 II ...

  2. 编程金融小白学 股票期权 lv.6 希腊字母 Gamma

    上一篇 隐含波动率 文章目录 编程金融小白学 股票期权 希腊字母 II 波动率 Sigma (σ)(\sigma)(σ) Delta (Δ)(\Delta)(Δ) - 标的资产价格 特征 I 特征 I ...

  3. 编程金融小白学 股票期权 lv.7 希腊字母 Theta

    上一篇 希腊字母 Gamma 文章目录 编程金融小白学 股票期权 希腊字母 IV 波动率 Sigma (σ)(\sigma)(σ) Delta (Δ)(\Delta)(Δ) - 标的资产价格 特征 I ...

  4. 编程金融小白学 股票期权 lv.3 PCP 平价

    上一篇 期权策略 文章目录 编程金融小白学 股票期权 PCP PCP 平价原理 PCP 现货 正向套利操作 (Forward) 反向套利操作 (Reversal) PCP 期货套利 策略构造 保护性看 ...

  5. 小白学编程“Java小白”入门解疑大全

    成功的人分几种,有一种人叫做关系户,他们渠道多,广织关系网,有一种叫做平台户,他们平台有多硬,他们就有多硬,但无论是关系户还是平台户,依靠的总是别人的手.别人的嘴巴.别人辛苦创立下来的资源,归根到底, ...

  6. 学金融会python_大学生金融小白自学Python做量化投资需要注意哪些?

    大学生金融小白自学python做量化投资需要注意些什么?量化金融其实是一个交叉复合学科,需要掌握数学.计算机.金融等方面的知识.显而易见,对于金融学背景的同学来说,就需要另外学习计算机编程的知识,而计 ...

  7. 编程小白学python知乎周刊_在知乎上学 Python - 入门篇

    写在前面 本文对知乎上关于Python入门方面的问答.文章.专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间. 这一篇主要针对的是零基础或初学Python,包括 ...

  8. 0基础学python有多难-0基础纯小白学Python,请注意这2个坑

    0基础的纯小白学Python有哪些坑需要避免?有没有适合小白的Python教材推荐? 很多纯0基础,毫无编程经验的小白在学习Python的过程中总是无法坚持下来,究其原因,其实就是因为毫无经验,方向不 ...

  9. 0基础小白学理财从入门到进阶 | 2019年最新书单

    0基础小白学理财从入门到进阶-2019年最新书单 生活中经常会遇到一些朋友:突然对投资理财感兴趣了,但又不知道看什么书比较好. 2016年,我们曾整理过一份**<"财务自由" ...

最新文章

  1. Linux iptables防火墙设置与NAT服务配置
  2. Leetcode 67. 二进制求和 (每日一题 20210826)
  3. [云炬创业基础笔记] 第四章测试10
  4. BUUCTF-WEB:[强网杯 2019]随便注 1
  5. java普通类跳转到jsp_JSP跳转到Servlet的两种配置
  6. php 响应时间,PHP下解决ajax请求服务器响应时间过长问题
  7. 前端到底是自学好还是培训好?
  8. 普华基础软件笔试_【2019更新版】中国人民大学计算机软件考研信息汇总
  9. 正则表达式,一篇就够了
  10. Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析
  11. 电影mysql设计_电影院数据库设计(案例)
  12. Google Picasa2
  13. mysql数据抽取_史上最简单的数据抽取
  14. AlexNet 参数计算
  15. 【IO/NIO】Java NIO浅析
  16. JS计算数组各数据所占百分比
  17. 安装MinIO和使用MinIO Java SDK实现对文件的基本操作
  18. 抢先报名 Google 谷歌 菊与刀的金矿岛国 - 细说日本游戏出海 线上研讨会
  19. 虚拟数字人行业现状和技术研究
  20. 【solo】环境配置

热门文章

  1. 关于微信服务号 /微信 小程序
  2. 塔望食业洞察|烘焙行业市场规模、消费研究、发展趋势及思考
  3. word2007中快捷键的设置【接受修订】
  4. 数字化时代的企业进取心精神:建立大数据和机器学习战略
  5. 解决Tableau做漏斗图转化率不对的问题
  6. 板绘和绘画的超级全色调色公式
  7. Java大牛考自学_Java语言程序设计外行人能自考得来吗?
  8. 中M2019春C入门和进阶练习 7-69 猴子选大王 (20 分)
  9. Ubuntu下VSCode的安装与卸载【闲聊】
  10. python语言面试基础_Python面试宝典之基础篇-04