根据平价公式C + K*e^-rt = S + P ,左边是持有一份认购期权和到期行权价折现后的现值,右边是标的物的现价和持有一份认沽期权
这个模块只需要传入一个月份参数就能得到一个pandas格式,字段分别是strick_price、left、 right 、left-right
其中left-right就是等式左边-右边后套利的价差。
# 该Python代码用于模块定义,供其他Python代码或VBA调用。
from PythonApi import *
import numpy as np
import pandas as pd
def cal(month):
# 分别保存认购代码、认沽代码、行权价
call_list = optionlabel_book('510050','QQ',str(month), 1)
put_list = optionlabel_book('510050','QQ',str(month), 2)
K_list = [float(format(get_option_info(i,5), '.2f')) for i in call_list]
# 平价公式 C + K*e^-rt = S + P
# 期权到期天数到期天数
t = get_option_info(call_list[0],4)
data = []
for i in range(len(call_list)):
a = get_dynainf(call_list[i],7) + K_list[i]*np.e**(-0.04*t/365)
b = get_dynainf('510050',7) + get_dynainf(put_list[i],7)
data.append([K_list[i],a,b])
df = pd.DataFrame(data,columns=['strick_price','left','right'])
df['left-right'] = df['left'] - df['right']
df.sort_values(by='strick_price',inplace=True)
return df
# 通过传入年月,2011表示20年的11月
a = cal(2011)
b = cal(2012)
print(a)
print(b)