1.理论部分
期权的四种基本交易:买入看涨,买入看跌,卖出看涨,卖出看跌。
假设行权价格为K,标的价格未S,那么四种期内行权价值的表达式如下:
买入看涨:max((S-K),0)
买入看跌:max((K-S),0)
卖出看涨:-max((S-K),0)
卖出看跌:-max((K-S),0)
在上述行权价值的基础上,加上对应的权利金(买入为支出,卖出为收入),即可得到对应期权的实际价值。
2.代码复现
以下是代码复现的全过程
通过传入参数不同,计算某一标的价格下期权对应的定价(默认权利金为50,执行价格为2000):
def option_price(type, dir, S, K = None, cost = None):
'''
获取期权的价值,权利金默认为50
Parameters
----------
type:期权类型,put表示看跌,call表示看涨,str格式
dir:交易方向,buy表示买入, sell表示卖出,str格式
S:标的价格,int格式
K:执行价格,int格式,可不填,默认值为2000
cost:权利金,int格式,可不填,默认值为50
Returns
-------
单一价格S对应的期权价值
'''
if K == None:
K = 2000
if cost == None:
cost = 50
if type == 'call':
if dir == 'buy':
price = max((S-K),0) - cost
elif dir == 'sell':
price = cost - max((S-K),0)
elif type == 'put':
if dir == 'buy':
price = max((K-S), 0) - cost
elif dir == 'sell':
price = cost - max((K-S), 0)
return price
假设标的价格的区间为[1990,2100],计算期权价格随标的价格的变动:
def get_option_price(type, dir):
# 获取各类期权对应的时序价格
s_list = [x for x in range(1900,2100)]
price_list = []
for s in s_list:
price = option_price(type, dir,s)
price_list.append(price)
out_df = pd.DataFrame({'标的价格':s_list, dir + '_' + type :price_list})
return out_df
遍历参数,得到对应结果,并保存到本地:
type_list = ['put','call']
dir_list = ['sell','buy']
for type in type_list:
for dir in dir_list:
print(type, dir)
df = get_option_price(type, dir)
df.to_excel(dir + '_' + type + '_option.xlsx',index=False)
通过excel作图,我们可以得到四类期权对应的图像。(此处没有直接使用python的可视化,主要是对于作图的一些细节比较复杂,没有必要用代码来耗费更多时间)
买入看涨:盈亏平衡点=行权价+权利金。亏损有限(最大为权利金),盈利无限。
买入看跌:盈亏平衡点=行权价-权利金。亏损有限(最大为权利金),盈利理论上有限。
卖出看涨:盈亏平衡点=行权价+权利金。亏损无限,盈利有限(最大为权利金)。
卖出看跌:盈亏平衡点=行权价-权利金。亏损理论上有限,盈利有限(最大为权利金)。
本期分享到此结束,有疑问欢迎留言。