Jungs Ich habe ein Problem mit meinem Python-Code.Python, Array in Klassen-Parameter haben nicht den richtigen Wert, wenn ich die Klasse anrufen
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
Dies ist meine Klasse und ich es so nennen:
BasketOption(name="basket", typeO="call",numbersU=2, numbersA=np.array([[2., 2.]]), maturity=1.,strike=110)
Ich habe nicht die guten Ergebnisse, damit ich auf debug gesucht und ich sah, dass numbersA
nicht die Werte nehmen haben 2.
und 2.
im Array, wenn ich es nennen, nimmt es das:
ndarray: [ 3.68777431e+180 1.04146313e-152]
ich weiß nicht, warum es diese Werte nehmen. Vielen Dank.
Gibt es ein fehlendes 'markets' Argument, das keinen Standardwert hat? –
Nein es dauert es Ich bin mir sicher, dass ich Ihnen diesen Teil des Codes nicht gezeigt habe –
Versuchen Sie, einen einfachen Ausdruck() nach der Initialisierung –