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):'''获取期权的价值,权利金默认为50Parameters----------type:期权类型,put表示看跌,call表示看涨,str格式dir:交易方向,buy表示买入, sell表示卖出,str格式S:标的价格,int格式K:执行价格,int格式,可不填,默认值为2000cost:权利金,int格式,可不填,默认值为50Returns-------单一价格S对应的期权价值'''if K == None:K = 2000if cost == None:cost = 50if type == 'call':if dir == 'buy':price = max((S-K),0) - costelif dir == 'sell':price = cost - max((S-K),0)elif type == 'put':if dir == 'buy':price = max((K-S), 0) - costelif 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的可视化,主要是对于作图的一些细节比较复杂,没有必要用代码来耗费更多时间)
买入看涨:盈亏平衡点=行权价+权利金。亏损有限(最大为权利金),盈利无限。
买入看跌:盈亏平衡点=行权价-权利金。亏损有限(最大为权利金),盈利理论上有限。
卖出看涨:盈亏平衡点=行权价+权利金。亏损无限,盈利有限(最大为权利金)。
卖出看跌:盈亏平衡点=行权价-权利金。亏损理论上有限,盈利有限(最大为权利金)。
本期分享到此结束,有疑问欢迎留言。