【投资】如何绘制期权收益图 您所在的位置:网站首页 看跌期权价值图 【投资】如何绘制期权收益图

【投资】如何绘制期权收益图

2024-06-22 01:14| 来源: 网络整理| 查看: 265

excelpython

其实画期权最主要的是数据,既可以伪造,也可以用真实的,如果画出来的图和脑海里应该呈现的不一样,要不画错了,要不就代表当时具有很大的套利空间。

因此,我们接下来会通过两种工具分别用假数据与真数据来介绍如何画期权收益图。

excel

我们首先来使用excel来绘制图,由于手里没有真实的数据,但我们又迫切需要这么一张图,那我们就可以通过伪造数据来做到。

因为我们伪造的数据都是理想情况下且简化过的,因此画出来的图会非常平滑,与教科书里的一模一样。

一张期权的收益主要受到以下三个因素影响:

到期日价格行权价权利金

因此我们只需设计这三个变量即可。

我们可以在excel里设定固定的行权价与权利金,将到期日价格一个个列出来,如下表所示:

平值行权价格8权利金1 标的到期价格123456789101112131415

接下来就可以计算不同到期日价格情况下的收益情况了,最基础的4种期权:买入看涨、买入看跌、卖出看涨、卖出看跌。

取其中一种情况解释,具体收益有两段,一段是一条导数为±1的射线,另一端是导数为0的射线(理想情况下)。

假设以215美元,买入2020-10-6到期、行权价为8750的看跌期权

意味着,我在2020-3-6,有使用8750美金的价格卖出1个比特币的权利。

最终价格过程最终收益上涨至9000不行使权利-215上涨至10000不行使权利-215下跌至8000(8750-8000)-215535下跌至500(8750-500)-2158035

因此我们在写excel的函数的时候需要考虑两种情况,我们这里以if函数为例,买入看涨期权的写法如下:

=IF((-($B$1-B$2)-$D$1)'instrument_id': 'EOS-USD'} # 参数 price = float(pd.DataFrame(exchange.indexGetInstrumentIdConstituents(params=params)).loc['last', 'data']) # 获取现价 df['price'] = np.sort(np.append(np.linspace(price-0.5, price+0.5, 18), np.linspace(price-0.5, price+0.5, 18))) df['strike'] = float(3.10) # 计算数据 Call = df.groupby('type').get_group('C') Put = df.groupby('type').get_group('P') # 买入看涨 Call['call_buy'] = -(Call['strike'] - Call['price']) * 100 - Call['best_ask'] * 100 Call.loc[Call['price'] Put['strike'], 'put_buy'] = - Put['best_ask'] * 100 # 卖出看涨 Call['call_sell'] = (Call['strike'] - Call['price']) * 100 + Call['best_bid'] * 100 Call.loc[Call['price'] Put['strike'], 'put_sell'] = Put['best_bid'] * 100 # 再次整理 df2 = Call[['type', 'strike', 'price', 'call_buy', 'call_sell']] df2['put_buy'] = Put['put_buy'].tolist() df2['put_sell'] = Put['put_sell'].tolist() # 画图 fig1 = (Line(init_opts=opts.InitOpts(width='900px', height='400px')) .add_xaxis(df2['price']) .add_yaxis('买入看涨', df2['call_buy'], color='red', linestyle_opts=opts.LineStyleOpts(width=2)) .add_yaxis('买入看跌', df2['put_buy'], color='green', linestyle_opts=opts.LineStyleOpts(width=2)) .add_yaxis('卖出看涨', df2['call_sell'], color='black', linestyle_opts=opts.LineStyleOpts(width=2)) .add_yaxis('卖出看跌', df2['put_sell'], color='blue', linestyle_opts=opts.LineStyleOpts(width=2)) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts(xaxis_opts=opts.AxisOpts(min_=2.5), yaxis_opts=opts.AxisOpts(min_=-40, max_=40))) fig1.render_notebook()

以下是输出结果:

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有