【问题标题】:How would one write this out?怎么写出来?
【发布时间】:2017-09-04 12:26:01
【问题描述】:

所以我有这些方程式:

在 g 中,x 定义为 X/Sc(第一个方程的倒数)。我正在尝试正确地写出来,但我还很新。

更新:这是一个等价的表示,

val1 = (r+.5*vol*vol)*(tau-t)
val2 = exp(-alpha*(tau-t)*(r-.5*vol*vol)*(r-.5*vol*vol)/(2*vol*vol))
val3 = vol*vol*sqrt(alpha)/r/2.0
func = lambda g: exp(g*g/2) - val3 / (val1+g*vol*sqrt(tau-t)) / exp(val1+g*vol*sqrt  (tau-t)) / val2
g = fsolve(func,1.5)
exer_price = K * exp( -(r + .5 * vol * vol)*(tau-t) - g * vol * sqrt(tau-t))

exer_price 是 Sc,vol 是 sigma,a 是 alpha,K 是 X,(tau-t) 是 t。如果没有,我将如何在 python 中正确地写出来?

【问题讨论】:

  • 您的 Python 表达式似乎与图像中提供的数学公式完全不符。您确定我们的图片正确吗?

标签: math scipy


【解决方案1】:

这里的代码与您的不同,包括执行该代码所需的导入,以及用于测试它的变量定义和打印。请注意,我的变量名称以及val1val2 的含义与您的代码不同。另请注意,您的图形使用加号或减号,但我的代码只给出加号。您可以根据需要轻松修改它以减去。

from math import sqrt, exp, log

alpha = .1
r = .2
sigma = 3
tau = 4
x = 5

val1 = -alpha * (r+(1/2)*sigma**2)**2 * tau / (2*sigma**2)
val2 = sigma**2 / ((2*r/sqrt(alpha)) * x * log(x * exp(val1)))
g = sqrt(2 * log(val2))

print(g)

该代码的结果是

0.6939056413788061

有多种方法可以优化代码以提高速度或简洁性,但它符合您的既定目的。

【讨论】:

  • 我忘了提到(现在更新)x=e^((r+(1/2)*sigma^2)*tau+G * sigma * sqrt(tau))
  • @kb:您是说x 是根据g 定义的(如您的更新),并且g 是根据x 定义的(如形象的)?如果是这样,你有一个非常不同的,比你说的更困难的问题。您评论中的G 是否与更新中的g 相同?
  • 我现在添加了一些额外的信息,我希望这会让它更清楚
  • @kb:如果您的最新更新是正确的,那么xg 确实是相互定义的。我上面的代码显示了如何从x 获取g。给定其他变量的值,您的总体问题是找到满足两个方程的xg 吗?这相当于找到两条曲线的交点,这是一个不平凡的问题。
  • “在给定其他变量的值的情况下,找到满足两个方程的 x 和 g 是您的总体问题吗?”是的!
猜你喜欢
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 2021-11-05
  • 2020-11-30
  • 2018-08-13
  • 2013-03-02
相关资源
最近更新 更多