Ich bin ein Anfänger mit FE. Meine Anwendung ist die Preisgestaltung von Finanzderivaten, bei denen der Raum fünfdimensional ist. Wenn man also Zeit hinzufügt, hat das Problem sechs Dimensionen.
Ich habe versucht, mich umzuschauen (Fenics, escript, deal.II, ...), aber ich verstehe, dass diese Software auf 3 + 1 (3D-Raum + 1d Zeit) beschränkt ist. Ist das richtig?
Meine Zielsprache ist Python oder C ++.
Beschreibung meines Problems
Ich möchte ein Anlageprodukt bewerten, bei dem der Anleger jeden Monat die Freiheit hat, wieder zu investieren oder nicht. Ich würde dies gerne mit stochastischer Volatilität, stochastischem Zinssatz und stochastischer Mortalität tun.
Die stochastischen PDEs sehen folgendermaßen aus:
Wobei eine zeitabhängige Konstante ist, die dem Aktienkurs und μ S t
dS.tdσtdrtdqt= μS.tdt+ σt- -- -√dB.S.t= μσtdt + νσtdB.σt= μrtdt + νrtdB.rt= μqtdt + νqtdB.qt(Lager)(Flüchtigkeit)(Zinssatz)(Sterblichkeit)
μS.tS.B.S.tist ein unabhängiger Abgabenprozess, der Geräusche im Aktienkurs . Ähnliches gilt für die anderen Größen: ist eine zeitabhängige Größe, die der Volatilität .
Lassen die zulässigen Investitionen an Zeit bezeichnet . Das stochastische Steuerungsproblem sieht aus wie
Die obigen PDEs sind kontinuierlich, aber der Wert des Produkts wird nur zu vordefinierten Zeiten gelöst, beispielsweise jeden Monat.
S.νσtσCττVτ=max{c∈Cτ:P(death)E(rτf(Sτ+1))+P(alive)E(rτVτ+1)}.
Vττ
Ich denke, Monte-Carlo kann mein Problem immer brutal erzwingen, aber es ist sehr langsam.
Deterministische Form der stochastischen PDEs
Für diesen Teil wird angenommen, dass der Wert der Option
auf der natürlichen Zeit , nicht die Zeiten, wobei die Investition zum Zeitpunkt .
Definieren Sie den Differentialoperator
wobei zeitabhängige Konstante
V:(t,St,σt,rt,qt,ct)↦(t,Vt),
tτcttLtLStLrtLσtLqt=∂r,S+∂r,σ+∂σ,S=σt∂S+rt∂S,S=∂r+∂r,r=∂σ+∂σ,σ=∂q+∂q,q
{μSt,…}werden ignoriert. Die deterministische PDE ist dann
was an das optimale Steuerproblem zu den Zeiten angepasst werden kann .
∂tVt+(Lt+LSt+Lσt+Lrt+Lqt)Vt=0,
τ
Antworten:
Angenommen, Sie möchten die Black-Scholes-Gleichungen oder eine Variante eines Portfolios mit 5 Assets lösen, dann haben Sie tatsächlich 5 räumliche plus eine zeitliche Dimension. Ich kenne kein FEM-Paket, das das auf Anhieb kann (Deal. Ich kann es nicht ohne weiteres, aber siehe unten), aber ich denke, ich erinnere mich, dass einige Leute aus Chris Schwabs Gruppe an der ETH Zürich solche Probleme gelöst haben Probleme bei der Verwendung von spärlichen Maschen. Vielleicht haben Sie Glück, wenn Sie sich in seinen Veröffentlichungen umschauen.
Es gibt andere Gleichungen mit zusätzlichen Dimensionen. Ein Beispiel ist die Strahlungstransfergleichung mit 3 Raum + 1 Zeit + 2 Winkel + 1 Energiedimension. Die Art und Weise, wie dies normalerweise gelöst wird, besteht darin, den dreidimensionalen Raum wie gewohnt zu diskretisieren, dann die Winkel- und Energiedimensionen auf separaten zweidimensionalen und eindimensionalen Netzen zu diskretisieren und an jedem Knotenpunkt des räumlichen Netzes einfach viele Variablen zu haben (jeweils eine für Jeder Knoten des Winkelnetzes multipliziert mit der Anzahl der Knoten im Energienetz. Wir verwenden dieses Schema bei Deal.II-Implementierungen erfolgreich. Dies ist für die Strahlungstransfergleichung sinnvoll und kann für Ihre Gleichung emuliert werden, auch wenn sie dort nicht natürlich ist.
quelle
DUNE, die verteilte und einheitliche numerische Umgebung http://www.dune-project.org , enthält einige strukturierte Gitter beliebiger Dimension (SGrid und Yaspgrid), siehe die Funktionen von DUNE . Derzeit gibt es einen Zweig, der das Yaspgrid, eines der oben genannten Gitter, in ein Tensorproduktgitter verwandelt, wenn dies von Interesse ist. Seit Release 2.0 (das aktuelle ist 2.2.1 und 2.3 wird bald kommen) haben wir Referenzelemente für verschiedene Finite-Elemente-Methoden, die beliebige Dimensionen unterstützen. Daher sollte es möglich sein, Finite-Elemente-Diskretisierungen beliebiger Dimension mit beispielsweise dem Disrektierungsmodul dune-pdelab einzurichten . Dies wird jedoch möglicherweise nicht zu oft getestet.
Trotzdem gibt es immer noch den Fluch der Dimensionalität, wie Wolfgang betonte.
Für weitere Informationen verweise ich Sie auf die DUNE-Mailinglisten .
quelle
Ok, es sieht also so aus, als hätten Sie eine gekoppelte Menge von ODEs, da es, soweit ich das beurteilen kann, nur zeitliche Ableitungen und keine Ableitungen in Bezug auf irgendetwas anderes gibt. Es gibt eine ganze Reihe von Paketen zum Lösen von ODE-Systemen beliebiger Dimension (Matlab hat solche Sachen
ode45
). Schauen Sie sich für Python diese Frage an, um einige Vorschläge zu erhalten. Schließlich gibt es alten Netran- Code auf netlib , der ziemlich einfach mit C ++ verbunden werden kann (Benutzerfreundlichkeit ist eine andere Sache). Es gibt wahrscheinlich bessere Alternativen da draußen, seit ich eine Weile nachgesehen habe (andere sollten sich einschalten).quelle