低效的循环访问选项类型

时间:2015-11-29 20:58:30

标签: python options delta

我有一个变量词典(选项)来对它们进行一些计算。在选项类型下,我正在检查它是一个调用还是一个put选项,但我认为我通过循环无效地执行此操作。它有效,但我认为有更好的方法来做这个if语句。

#Calculate Delta
for opt in options:
    a = opt['newIV'] * (opt['Expiry_Days']) ** 0.5
    b = e ** -(opt['Risk_Rate'] * opt['Expiry_Days'])
    d1 = (np.log(opt['Underlying_Price'] / opt['Strike']) + (opt['Risk_Rate'] + opt['newIV']**2 / 2) * opt['Expiry_Days']) / a
    d2 = d1 - a
    opt['Delta'] = 0.0
    for type in range(0, len(opt['Type'])):
        if opt['Type'][type] == 'call':
            opt['Delta'][type] = norm.cdf(d1[type]) * b[type] 
        elif opt['Type'][type] == 'put':
            opt['Delta'][type] = (norm.cdf(d1[type]) - 1) * b[type]
        else:
            print 'Delta error!!! No call or put'

帮助将不胜感激,因为我将进行许多类似的计算,我不认为循环是一种有效的方法。

这是一个示例输入(不包括所有列)

      Strike     Expiry  Type               Symbol   Last    Bid    Ask
   0      90 2015-12-11  call  AAPL151211C00090000  28.05  27.80  28.10
   1      95 2015-12-11  call  AAPL151211C00095000  24.05  22.75  23.10
   2     100 2015-12-11  call  AAPL151211C00100000  19.08  17.85  18.15
   3     102 2015-12-11  call  AAPL151211C00102000  19.92  15.85  16.15
   4     103 2015-12-11  call  AAPL151211C00103000  15.26  14.90  15.15

0 个答案:

没有答案