 Herzlich willkommen zurück zu unserem nächsten Python Coding Video im Rahmen der ersten stochastischen Prozessvorlesung. In diesem Video werden wir uns ansehen, wie wir denn eine Brownshell-Molekular-Bewegung in Python simulieren können. Hier haben wir ein prinzipielles Problem, was sich technisch so nicht lösen lässt. Wir haben zwar hier ein NumPy-Package, was es uns erlaubt, normalverteilte Ziehungen vorzunehmen auf Basis eines Seed-Values. Allerdings ist es so, wir haben in der Vorlesung ja gelernt, dass eine Brownshell-Molekular-Bewegung kontinuierlich stetig ist. Und das können wir programmatisch halt leider nicht abbilden. Insofern ist es nicht zufällig, sondern in einer Art und Weise dennoch deterministisch, weil wir eben aus einer Pseudo-Normalverteilung ziehen und das kann ab und zu zu Problemen führen. Für uns spielt das jetzt erstmal keine Rolle. Für uns ist es jetzt so, wir machen hier Brownshell-Molekular-Bewegung und wir ziehen aus einer zufälligen Normalverteilung und wir gucken uns das jetzt hier gerade mal an. Wir benötigen hier eigentlich nur zwei Pakete, NumPy ASnP und unsere Mudplotlib ASpialty und was machen wir hier? Wir bedienen uns hier dem Zufallspaket von NumPy und setzen hier eine zufällige Seed, also einen Zufallswert auf dessen Basis dann die Verteilung generiert wird. Wir sagen, wir erzeugen uns hier eine Figur. Wir geben die Zeit an, die Punktanzahlen, die in diesem Intervall da geboten werden sollen. Hier sehen wir, dass wir halt keine Kontinuität programmatisch erzeugen können, sondern nur hinreichen große Datenmengen, die das eben substituieren. Wir geben hier das Delta-T, also die Zidesteps noch ein, definieren die Zeit selbst und wie viel Pfade dieses Brownshell-Molekular-Bewegungskonstruktes wir denn sehen möchten. Hier ist die Differenzialgleichung, so wie wir sie im Vorlesungsteil gesehen haben und was wir hier machen, wir iterieren hier quasi durch und sagen, ja, wir haben hier fünf Läufe, also machen wir das ganze fünfmal und das nächste, was wir hier eben tun ist, wir geben das ganze aus und wir machen uns da ein hübsches Bildchen draus. Ich reduziere hier oben auch mal die Anzahl der Punkte, dass wir da einfach nur ein paar sehen können, für fünf verschiedene Läufe und ich führe das jetzt einfach mal aus und dann sehen wir hier, dass das programmatisch nicht ganz bei Null losgeht, obwohl es eigentlich bei Null losgehen sollte. Sehen Sie diesen Fehler nach und wir sehen hier für relativ wenig Datenpunkte, die gezogen werden, wie denn sich so ein 1D Brownian Path abtragen kann. Das ist quasi unser eindimensionaler Brownshell Pfad, das heißt eine Realisierung einer Brownshell-Molekular-Bewegung oder auch eines Wiener Prozesses, je nachdem, welchen Begriff Sie denn jetzt favorisieren. Ich hatte gesagt, wir erhöhen die Schrittweite mal wieder und nehmen auch mal 50 dieser Box und gucken uns das ganze noch einmal an. Und wie Sie sehen können, beginnen wir jetzt alle mal bei Null, das heißt, das funktioniert schon mal ein bisschen besser und Sie können hier die verschiedenen Realisationen unserer Brownshell Pfade sehen und die Regeln sind hier exakt dieselben, wie die, die wir in der Vorlosung beschrieben haben. Und genau die, die wir bei den Random Works auch schon genannt haben, und zwar, dass wir hier unsere erste Standardabweichung haben und unsere Plus und Minus T, also Minimum und Maximum, das ändert sich hier insofern nicht. Und was Sie, denke ich, am meisten interessieren wird, ist, wie kann ich denn dieses Konstrukt jetzt nun nutzen und eine Finanzreihe damit simulieren. Daher springe ich hier einmal auf unser zweites Skript, was wir nutzen werden hierfür und gehe hier gleich näher darauf ein. Wie Sie hier sehen können, benötigen wir hier einige Pakete mehr. Wir haben hier unser Pandas Package, unsere Yahoo Packages, Smartplotlib und Ampai. Wir haben hier unsere altbekannte Funktion, die uns uns erlaubt, Finanzzeit rein aus Yahoo zu extrahieren. Wir haben hier eine Brownian Funktion, welche uns grundlegend eine Brownshell Bewegung angibt und wir haben uns hier noch ein besonderes Pickle, nenne ich es mal, herausgesucht. Und zwar, wir haben hier eine geometrische Brownshell Bewegung, die wir hier mit einem Drift und einer Diffusion darstellen möchten. Das ist das, was wir im Bereich der Ito-Integrale als Eingangsbeispiel vorgestellt haben. Hier können wir quasi tatsächlich dieses Differenzial, was wir gesehen haben, dieses stochastische Differenzial eines Wiener-Prozesses, grafisch visualisieren. Das heißt, das sind unsere drei Grundfunktionen, die wir benötigen. Das heißt, hier ist die erste Funktion, ich hole mir Daten. Ich simuliere eine Brownshell-Molekular-Bewegung und ich simuliere mir eine geometrische Brownshell-Molekular-Bewegung, welche natürlich auch auf unserer zuvor genannten Brownian Funktion aufbaut. Und hier ist es so, wir rufen diese Funktionen hier nacheinander auf. Das heißt, wir extrahieren uns Daten, wir berechnen unsere Returns, wir setzen die Seed-Values, wir berechnen hier zwei verschiedene Arten, geometrische Funktionen und wir machen uns ein hübsches Bildchen daraus. Und natürlich ist es so, dass wir hier hergehen und für die Länge dieses Laufers hier unsere Länge der Tesla-Aktien unterstellen und dass wir als Startwert hier auch die Aktienpreise hinterlegen, die am Anfang der von uns zu simulierenden Zeitreihe angegeben sind. Das heißt, ich führe das Ganze jetzt noch mal aus und fange noch mal von oben an. Wir importieren hier unsere Pakete, dann definieren wir relevante Funktionen, die wir dann hier unten aufrufen und ausführen werden und grafisch darstellen. So ist dieser Code aufgebaut, das heißt, die tatsächliche Action, nenne ich es mal, passiert hier unten, wo wir diesen Funktionen, die wir hier oben definiert haben, Werte übergeben und die dann auf Basis unserer Tesla-Zeitreihe Ergebnisse produzieren. Ich führe das jetzt einfach mal aus und mache dieses Bildchen ein bisschen größer und wir sehen hier, wir sehen den Startwert der Tesla-Aktien zum Zeitpunkt des Beginnens der Zeitreihextraktion und wir führen eine geometrische Brownshell-Molekular-Bewegung aus und diese Pfade oder dieser Pfad wird als Schrittweite für die Aktie angenommen. Das heißt, diese Aktie läuft hier tatsächlich einen simulierten Brownshell-Molekularenprozess ab und so können wir natürlich in einer einfachen Art und Weise Aktien simulieren. Da sind wir am Ende eigentlich schon angekommen der Brownshell-Molekular-Bewegung und der Simulation derselben. Wir werden, wenn wir zu Teil 2 kommen, hier die fraktale Brownshell-Molekular-Bewegung noch kennenlernen und sehen, wie wir mit dieser Simulation ausführen können. Nehmen Sie sich diesen Code doch mal zu Gemüte, spielen Sie damit, manipulieren Sie diesen Code, wählen Sie hier andere Zeitreihen aus und sehen Sie, was passiert, wenn Sie die Parameter verändern. Wenn Sie hier an den Funktionen spielen, bitte verändern Sie hier die Return Argumente nicht, da programmatisch eben eine Funktion gekapselt ist. Das bedeutet, wenn Sie diese Return Argumente hier entfernen, dann gibt Ihnen diese Funktion keine Ergebnisse mehr zurück und Sie werden unten mit sehr vielen Fehlermeldungen begrüßt werden. Ich hoffe, das hat Ihnen einen kurzen Einblick gegeben, wie man mittels Python eine Brownshell-Molekular-Bewegung, ich sage es mal auf anfänglichem Niveau darstellen kann, spielen Sie mit dem Code, seien Sie neugierig und bis zum nächsten Video.