Scipy optimize.minimize objective Variablen übergeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
YPython1
User
Beiträge: 26
Registriert: Mittwoch 24. Februar 2021, 21:06

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
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Hast du es mal mit "monkey patching" versucht?
Wird in Zusammenhang mit scipy, glaube ich, öfter verwendet.

Ist aber mit Vorsicht anzuwenden!
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
YPython1
User
Beiträge: 26
Registriert: Mittwoch 24. Februar 2021, 21:06

hat doch funktioniert weiß gerade nicht wo ich es hier löschen kann sorry dafür
Antworten