我正在为Python开发一个解算器,最好使用pytorch张量,它可以非常快速有效地解一系列非线性方程。该解算器基本上需要求解以下公式中的变量“s”,给定一定的“ob”值;i、 e.函数“f”返回的值应为零
from scipy.optimize import fsolve
from scipy.stats import norm
import numpy as np
d = 0.01
r = 0.02
v_base = 0.19
v_skew1 = -0.0035
v_skew2 = -0.0021
t = 1
def v(s):
return v_base + v_skew1 * (s-1) + v_skew2 * (s-1.1)
def f(s, ob):
v_temp = v(s)
k1 = np.log(1/s) + (r - d + 0.5 * v_temp**2)*t)/(v_temp * np.sqrt(t))
k2 = k1 - v_temp * np.sqrt(t)
result = np.exp(-d*t) * norm.cdf(k1) - strike * np.exp(-r * t) * norm.cdf(k2)
return (result - ob)
ob = 0.015 # only one value of ob for now, but need to solve for thousands of ob values
answer = fsolve(f, 0.01, args = ob)
ob将使用pytorch张量计算性能,同时求解大量值,因此我更希望求解ob的方法也使用张量。此外,当我试图求解数千个“ob”值时,即使我将张量参数传递到fsolve,运行时间也会增加很多。是否有一种方法可以实现所有这些单独FSolve的解算器功能,从而使用张量并行运行。另外,是否有使用torch.optim实现解算器的方法
目前没有回答
相关问题 更多 >
编程相关推荐