vorab: Ich bin neu hier und entschuldige mich, falls ich etwaige Gepflogenheiten übersehen sollte. Ich habe ein wenig Programmiererfahrung in C# und in Matlab. In Python versuche ich mich allerdings erst noch einzuarbeiten. Ich beschäftige mich derzeit mit Portfolio-Optimierung und bin auf einen theoretisch fertigen Code gestoßen, den ich sehr interessant finde http://dspace.library.uu.nl/handle/1874/345758.
Ich glaube, mit dem könnte man ganz gut weiter herumspielen
Da der Verfasser eine CSV-Datei übergibt, wollte ich stattdessen erstmal per Hand Daten mitgeben. Soweit so gut. Dabei muss ich etwas Grundlegendes übersehen haben:
Ich benutze Python 3.8.8. und meine "main" sieht stattdessen einfach so aus:
Code: Alles auswählen
def main():
import numpy as np
import CLA
covar = np.array([ [0.000246, 0.000084, 0.000122, 0.000142], [0.000084, 0.000219, 0.000085, 0.000092], [0.000122, 0.000085, 0.000221, 0.000176], [0.000142, 0.000092, 0.000176, 0.000333] ])
mean = np.array([[0.3612, 0.1626, 0.1554, 0.2959]]).T
lB = np.array([[0,0,0,0]]).T
uB = np.array([[1,1,1,1]]).T
#3) Invoke object
cla=CLA.CLA(mean,covar,lB,uB)
cla.solve()
...
Jetzt kommt aber folgender Fehler:
Traceback (most recent call last):
File "C:/Users/rodef/Desktop/code/bache.py", line 50, in <module>
main()
File "C:/Users/rodef/Desktop/code/bache.py", line 34, in <module>
cla.solve()
File "C:\Users\rodef\Desktop\code\CLA.py", line 18, in solve
f,w=self.initAlgo()
File "C:\Users\rodef\Desktop\code\CLA.py", line 80, in initAlgo
a[:]=zip(range(self.mean.shape[0]),b) # fill structured array
builtins.TypeError: int() argument must be a string, a bytes-like object or a number, not 'zip'
Wenn ich das weiter verfolge, dann sieht die nun problematische Funktion so aus:
Code: Alles auswählen
def initAlgo(self):
# Initialize the algo
#1) Form structured array
a=np.zeros((self.mean.shape[0]),dtype=[('id',int),('mu',float)])
b=[self.mean[i][0] for i in range(self.mean.shape[0])] # dump array into list
a[:]=zip(range(self.mean.shape[0]),b) # fill structured array
#2) Sort structured array
b=np.sort(a,order='mu')
#3) First free weight
i,w=b.shape[0],np.copy(self.lB)
while sum(w)<1:
i-=1
w[b[i][0]]=self.uB[b[i][0]]
w[b[i][0]]+=1-sum(w)
return [b[i][0]],w
Viele Grüße und Danka im Voraus