Python二项期权定价

2024-10-01 09:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图完成这段代码,但我一直收到未知的错误消息。我不明白我做错了什么。对不起,我是python新手!在

我将非常感谢任何帮助!!在

import math

def nCr(n,r):
    f = math.factorial
    return f(n) / f(r) / f(n-r)

class Option(object):

    def __init__(self,s0,u,d,r,t,strike):
        self.s0=s0
        self.u=u
        self.d=d
        self.r=r
        self.t=t
        self.strike=strike

    def price(self):
        q = (self.r - self.d) / (self.u - self.d)
        prc = 0
        temp_stock = 0
        temp_payout = 0
        for x in range(1,self.t+1):
            temp_stock = self.strike*(self.u**(4-x))*(self.d**(x-1))
            temp_payout = max(temp_stock-self.strike,0)
            prc += nCr(self.t,x-1)*(q**(4-x))*((1-q)**(x-1))*temp_payout
        prc = prc / (self.r**self.t)
        return prc


newOption = Option(100,1.07,0.93458,1.01,3,100)
print newOption.price()

Tags: 代码selfreturndefstockmathpricetemp
1条回答
网友
1楼 · 发布于 2024-10-01 09:30:33

您的代码至少存在以下问题:

  • 你必须在课程开始时包括数学模块:

    导入数学

  • 必须将“^”运算符替换为“**”运算符。

(如果这还不够,请检查缩进,因为此消息中的缩进有一个小问题:函数price()向左移动)

通过这些更正,您的程序将生成一个输出: 6.77357485848。在

检查这是否是您想要的输出。在

相关问题 更多 >