【发布时间】:2021-03-16 08:24:22
【问题描述】:
我正在尝试运行此功能:
def delta(d_1, contract_type):
if contract_type == 'c':
return norm.cdf(d1)
if contract_type == 'p':
return -norm.cdf(-d_1)
通过这样的方式通过数据框:
S = test.strike
K = test.stock_price_close
t = test.TtM/365
r = test.Rf
sigma = test.VSMI
test.apply(lambda x: delta(d1,'p'), axis=1, raw=False, result_type='expand')
但得到与结果相同的值:
2001-11-01 -0.752478
2001-11-02 -0.752478
2001-11-05 -0.752478
2001-11-06 -0.752478
2001-11-08 -0.752478
...
2006-10-26 -0.752478
2006-10-27 -0.752478
2006-10-30 -0.752478
2006-10-31 -0.752478
2006-11-01 -0.752478
Length: 960, dtype: float64
有什么想法吗?
【问题讨论】:
-
您没有使用 lambda 变量
x。d1是错字吗? -
不,我是这样定义增量的。这里的代码: def d(sigma, S, K, r, t): d1 = 1 / (sigmasqrt(t)) * (log(S/K) + (r + sigma **2/2 )*t) d2 = d1 - sigma * sqrt(t) return d1, d2 def call_price(sigma, S, K, r, t, d1, d2): C = norm.cdf(d1)*S - norm.cdf (d2)*Knp.exp(-rt) return C def put_price(sigma, S, K, r, t): P = -norm.cdf(d1)*S - norm。 cdf(d2)*Knp.exp(-r *t) return P def delta(d_1, contract_type): if contract_type == 'c': return norm.cdf(d1) if contract_type == 'p ': return -norm.cdf(-d_1) d1, d2 = d(sigma, S, K, r, t )
标签: python function dataframe options delta