私のPythonコードに問題があります。Python、クラスを呼び出すときにクラスパラメータの配列に正しい値がありません
class BasketOption:
def __init__(self,name,markets,typeO,numbersU,numbersA,maturity,strike):
self.name = name
self.markets = markets
self.typeO=typeO
self.numbersU=numbersU
self.numbersA=numbersA
self.maturity = maturity
self.strike = strike
self.cache = DateCache()
def getnumbersA(self,numbersU):
self.numbersA=np.empty(self.numbersU)
return self.numbersA
def getdates(self):
return [self.maturity]
def getmarkets(self):
return [self.markets]
def getweight(self):
compt=0
totalweight=0
weight=np.empty(self.numbersU,dtype=float)
for i in range(self.numbersU):
totalweight+=self.getnumbersA(self.numbersU)[i]
total=np.array([totalweight]*self.numbersU)
weight=self.getnumbersA(self.numbersU)/total
return weight
def getsum(self,date):
prices=0
for i in range(self.numbersU):
prices+= self.markets.getspot(date,i)*self.getweight()[i]
return prices
@timecached
def getcf(self,date):
if date == self.maturity:
#FIXME: l'option peut aussi porter sur un forward, introduire
# plutôt la notion de produit.
if self.typeO=="call":
return np.maximum(self.getsum(date) - self.strike, 0.)
else:
return 0
これは私のクラスであり、私はこのようにそれを呼び出す:私はデバッグで検索し、私はnumbersA
は値2.
を取らなかったことを見た私は良い結果を持っていない
BasketOption(name="basket", typeO="call",numbersU=2, numbersA=np.array([[2., 2.]]), maturity=1.,strike=110)
と私はそれを呼び出す、アレイ内の2.
、これをとります
ndarray: [ 3.68777431e+180 1.04146313e-152]
それは、これらの値を取る理由を私は知りません。ありがとう。
デフォルト値を持たない 'markets'引数がありませんか? –
いいえそれがかかります私はあなたにコードのこの部分を見せていないことを確信しています –
初期化後単純なprint()を入れてみてください –