Seite 1 von 1

Scipy optimize.minimize objective Variablen übergeben

Verfasst: Mittwoch 9. Juni 2021, 18:55
von YPython1

Code: Alles auswählen

def Buy_Hold(Backtest_start, Risk_Ret, Pref):
    const_b = constraint_B(Risk_Ret)
    Expect_B, varBH, Cov_B, corBH, r_f, cum_notrel = KeyFigures(Backtest_start)
    Opt_B = Optimizer(Expect_B , Cov_B, r_f, x0, const_b)
    return Opt_B
ich muss hier bei Expect_B und Cov_B als nonlocal Variable oder als globale Variable übergeben da man sonst nicht die Variablen im Objective Funktion von Scipy festlegen kann.

Würde mich über Hilfe extrem freuen

So geht es leider nicht

Code: Alles auswählen

def Buy_Hold(Backtest_start, Risk_Ret, Pref):
    const_b = constraint_B(Risk_Ret)
    global Expect_B
    global Cov_B
    Expect_B, varBH, Cov_B, corBH, r_f, cum_notrel = KeyFigures(Backtest_start)
    Opt_B = Optimizer(Expect_B , Cov_B, r_f, x0, const_b)
    return Opt_B

Re: Scipy optimize.minimize objective Variablen übergeben

Verfasst: Mittwoch 9. Juni 2021, 19:12
von rogerb
Hast du es mal mit "monkey patching" versucht?
Wird in Zusammenhang mit scipy, glaube ich, öfter verwendet.

Ist aber mit Vorsicht anzuwenden!

Re: Scipy optimize.minimize objective Variablen übergeben

Verfasst: Mittwoch 9. Juni 2021, 19:30
von Sirius3
Ich verstehe den Code nicht, weil keine von den Funktionen definiert wird und ich nicht sehe, wo Expect_B überhaupt benutzt wird. Normalerweise übergibt man Callback-Funktionen weitere Parameter per functools.partial.

Generell schreibt man Funktionen und Variablennamen klein und vermeidet kryptische Abkürzungen, damit der Code lesbar wird.

Re: Scipy optimize.minimize objective Variablen übergeben

Verfasst: Mittwoch 9. Juni 2021, 19:31
von YPython1
hat doch funktioniert weiß gerade nicht wo ich es hier löschen kann sorry dafür