Goodmorning. Ich bin neu hier. Vor dem Posten habe ich ähnliche Fragen durchsucht, aber ich habe etwas Ähnliches nur mit einer anderen Programmiersprache gefunden, und die gefundene Frage war jedoch unvollständig.Plotten von Trägern von GBM mit VBA
Ok, mein Problem ist es, einen VBA-Code zu finden, der, sobald er in Excel aufgerufen wurde, von mir nur die geometrischen Brownian Motions (GBM) -Parameter benötigt (Anfangsbestandswert s, Fälligkeit t, Volatilität z, risikofreie Rate) r, Dividend q, Anzahl der Schritte n), die Anzahl m der Trajektorien, die ich reproduzieren muss. Als Ausgang möchte ich keine Zahlen sehen, nur eine Grafik der überlagerten m Trajektorien.
Das Problem ist, dass ich es nicht direkt Zelle für Zelle (dann tragend) schreiben kann, weil es auf diese Weise vom Standpunkt der Rechenleistung aus zu komplex wäre; es würde erlauben, ungefähr 15 Trajektorien zu machen, nicht viel mehr. Die Lösung ist also in VBA zu arbeiten.
Mein erster Schritt war
Function GBMSimulation(s As Double, t As Double, z As Double, r As Double, q As Double, n As Double) As Variant
Dim dt, e, dlns, SimVar() As Double
ReDim SimVar(n + 1)
dt = t/n
SimVar(0) = s
For i = 1 To n
Randomize
e = WorksheetFunction.NormSInv(Rnd())
dlns = (r - q - z^2/2) * dt + z * e * dt^0.5
SimVar(i) = SimVar(i - 1) * Exp(dlns)
Next i
GBMSimulation = SimVar(n)
End Function
Dieser Code funktioniert; Ich meine, es gibt eine Nummer, die der n-te Schritt von ONE gbm ist.
Ändern
GBMSimulation = SimVar(n)
mit
GBMSimulation = SimVar(i)
würde ich den i-ten Schritt des dass insbesondere GBM erhalten.
So werden alle Schritte im Speicher gespeichert und das ist gut.
Mein Problem ist: Wie kann ich m verschiedene Realisierungen eines GBM erstellen (d. H. Meinen vorherigen Schritt m mal wiederholen, m als Eingabe angegeben) und für jeden von ihnen automatisch einen Plot erstellen?
Ich denke, einige für den Zyklus sollte berücksichtigt werden, aber ich bin ein Anfänger und ich weiß nicht, wie das geht.
Ich dachte ich könnte ein n-dimensionales Array erstellen, in dem die GBM-Schritte speichern, sie plotten und m mal wiederholen; Das Problem ist, dass ich die Sprache vermisse, ich lerne sie, aber es braucht Zeit und einige Hilfe könnte nützlich sein.
NUR AUS GRAFISCHEM PUNKT, sollte das Endergebnis like this sein (Ich spezifizierte die grafische Pov, weil in der Verbindung es Zahlen gibt, und die ganze Arbeit wird Zelle um Zelle gemacht, und wie ich vorher gesagt habe, muss ich vermeiden Dies).
Vielen Dank.
UPDATE: mein Problem wurde teilweise Dank an Tehscript gelöst. Der Code, den er/sie freundlicherweise zur Verfügung gestellt hat, ermöglicht es, die n Schritte von jedem der m GBMs in einem Array von Arrays zu speichern. Also bleibt ein letzter Schritt, um mein Problem zu lösen: Wie kann ich diese Daten darstellen?
Sie können die Funktion ein Array zurückgeben lassen und diese Funktion verwenden, um ein Array von Arrays zu haben. – Tehscript
@Tehscript: Danke für den Hinweis; aber ich bin wirklich ein Anfänger, kann ich dich bitten, mir bitte etwas mehr zu sagen? Danke – Joe
Ich weiß nicht wirklich, welche Zahlen zu verwenden, also habe ich 2 für alle von ihnen – Tehscript