【发布时间】:2020-09-30 20:06:42
【问题描述】:
以下功能完美运行,只需要一件事: 删除创建 1000 元素数组 arr 的 for 循环。
你能帮我摆脱那个 for 循环吗? 代码如下
#Test with european call
import numpy as np
T = 1
N = 1000
sigma = 0.5
r = 0.02
S = 1
K = 0.7
u = np.exp(sigma*np.sqrt(T/N))
d = 1/u
arr = np.zeros(N+1)
arr[0] = S*np.power(u,N)
coeff = np.exp(-r*(T/N))
p = (np.exp(r*(T/N))-d)/(u-d)
for i in range(1, N+1):
arr[i] = arr[i-1] * (d/u)
def get_payoff(S=arr, K=K):
payoff = np.maximum((S - K), 0)
return payoff
payoff = get_payoff()
def binomial_tree(payoff,S,K,T,r,sigma,N):
for i in range(0, N):
upper_vector = np.delete(payoff, N - i)
lower_vector = np.delete(payoff, 0)
payoff = coeff*(p*upper_vector + (1-p)*lower_vector)
return payoff[0]
print(binomial_tree(payoff,1,0.7,1,0.02,0.5,1000))
【问题讨论】:
-
你有定义模型的参考吗?
-
请正确格式化您的代码,它不会按原样运行
-
其实这不是一个可怕的问题。肯定不是很好,但我认为你不应该为此获得-6。当然,除非你在编辑之前得到它们。