 Guten Tag und herzlich willkommen zurück. Wir haben uns im letzten Video eingänglich mit einer mathematischen Einführung befasst und haben die Grundlagen der Autokorrelation und Zeitreinanalyse kennengelernt, haben auch schon einige Bilder und Grafiken besprochen und in diesem Video soll es jetzt nun darum gehen, diese ganzen Grafiken und Messungen, die ich Ihnen schon präsentiert habe, selbst in Python auszuführen und den Code zu verstehen. Bevor wir jedoch dazu kommen, würde ich Sie bitten, hier auf dieser Internetseite sich eine Python 3.7 oder 3.8, sind wir inzwischen Installation runter zu laden und auf Ihrem Rechner zu installieren. Das ist die grundlegende Installation der Python Programmiersprache und damit Sie nicht in eine Konsole programmieren müssen, würde ich Sie zudem bitten, hier auf visualstudio.com Ihnen das Visual Studio Code herunter zu laden, das können Sie sich für Ihr Betriebssystem hier aussuchen, herunterladen ausführen und damit werden wir weiterhin arbeiten. Es gibt natürlich auch andere Umgebungen, in denen Sie den Code entwickeln und schreiben können. Sie können zum Beispiel PyCharm benutzen, wenn Sie eine professionelle Umgebung haben, wollen die auch für große Unternehmensprojekte geeignet ist oder Sie können auch mit Jupyter Notebooks arbeiten, wo Sie den Code etappenweise ausführen können, das ist ein gelähter NR, da funktioniert das genauso. Ich verwende für diesen Kurs Visual Studio Code, weil es ja einfach zu benutzen ist und sehr intuitiv ist, ohne dass Sie sich vorher mit der großen Einbindung von Paketen und der Installation von virtuellen Maschinen befassen müssen. Was wir weiter verwenden werden ist, das haben viele von Ihnen denke ich schon mal gesehen, ist die Yahoo Finance Seite. Das Interessante an der Yahoo Finance Seite ist, dass hier die sogenannten Yahoo Ticker zu jedem Finanzinstrument oder Index abgebildet sind. Anhand dieses Tickers hier, der hier in den Klammern steht, sind in der Lage die entsprechenden Historien sich automatisiert in den Python Code, den wir gleich besprechen werden, herunter zu laden. Zudem können Sie hier eine ganze Reihe an Finanzinformationen erhalten, Sie haben hier einen Newsticker, Viralermeldungen, Branchesortierungen und auch eine Bersonsortierung mit einem Eventkalender, Aktien, Rohstoffe und Sie finden hier eigentlich eine große Bandbreite an Instrumenten und Tickern und vor allem auch Daten, die Sie hier verwenden können. Hier oben sehen Sie die größten Indizes, die Gängigen und Sie können die alle mit diesem Ticker hier quasi verwenden. Ich klicke jetzt mal auf den Eurostox 50, da sehen Sie hier in den Klammern den Ticker, den brauchen Sie, um eben dieses Finanzinstrument in Python verwenden zu können. Wenn wir gerade darüber sprechen, wir verwenden das in Python, wir werden die gängigen Data Science und Statistik Pakete verwenden, die für Python entwickelt wurden. Zum einen verwenden wir Pandas. Pandas ist eine Bibliothek, die Datenmanipulation zur Verfügung stellt für Zeitserien und vor allem für DataFrames. Wir werden NumPy verwenden, das ist gemeinsam mit StatsMod und SciPy die wissenschaftliche Implementierung mit ganz vielen Modellen, Statistiken und Anwendungsformen. Zudem werden wir Matplotlib verwenden, was in Anlehnung an Matlab die Visualisierung vornimmt. Sie können sich das so vorstellen, wenn Sie Pandas, NumPy, SciPy, vielleicht noch StatsMod und Matplotlib zusammenrechnen, haben Sie effektiv eine Python Version von Matlab. Mit Matplotlib werden wir auch ein Großteil unserer Grafiken erzeugen, was wir später vielleicht noch verwenden werden, aber was Sie verwenden können, wenn es visuell noch schöner oder anspruchsvoller sein soll, ist zum Beispiel Sieborn. Das ist ein Paket, wo sehr anspruchsvolle Grafiken zur Verfügung stellt, wo Sie hier unten auch den Code dazu mitgeliefert bekommen in der Dokumentation. Ich mache jetzt zum Beispiel das hier nochmal auf. Sie können hier sehen, dass Sie hier sehr anspruchsvolle Grafiken erzeugen können, egal ob jetzt für Ihre Abschlussarbeiten, Hausarbeiten, Präsentationen, die Sie zufällig in irgendwelchen Wahlfächern halten müssen oder auch, wenn Sie schon berufstätig sind und für Kundenpräsentationen aufbereiten mögen, bieten sich diese Pakete sehr gut an, um ansprechende Grafiken zu erzeugen, ohne hier stundenlang mit aufwendigen Codierungen verbringen zu müssen. Also aus meiner Sicht ist die Zeit, schwarz ist auch eine Farbe in der Statistik längst vorbei. So, ich habe jetzt direkt umgeschalten in den Python Code. Den Python Code habe ich Ihnen in Ihrem Modelkurs zur Verfügung gestellt und bevor wir mit diesen Python Code hier, den Sie hier sehen können, anfangen, erzeuge ich hier erstmal nochmal ein neues Pfeil, wo Sie sehen können, dass hier eigentlich nur normale Wörter reingeschrieben sind, das ist nichts weiter als wie ein Texteditor. Hier unten sehen Sie in der Ecke die Codierung und so wie welcher Sprache der Sündtags eingestellt ist. Sie können hier durchgehen und von C Dockerfiles HTML alles einstellen, was Sie dann eigentlich haben möchten. Für unsere Zwecke benutzen wir hier Python, das heißt, ich klicke hier auf Python und der Code springt auf Python um. Wenn Sie natürlich die Pakete hier, die Sie hier sehen, die wir hier verwenden werden, importieren möchten, dann geht das über das PIP Package. Sie geben hier einfach ein PIP Install und dann geben Sie zum Beispiel Pandas ein Meinem Fall ist das schon installiert, dann drücken Sie hier im Terminal auf Enter und dann sehen Sie hier, dass das vorhanden ist. Ansonsten würde Ihr hier einige Dateien runterladen und eben diese Packages, die wir hier oben sehen, installieren. Wenn Sie hier ein Code ausführen, der diese Packages nicht installiert hat, wird das auch nicht funktionieren. Das heißt, Sie müssen hier über PIP Install die Packages auf Ihrem Rechner installieren, sofern Sie das nicht schon lange getan haben, sollte das hier nicht funktionieren, müssen Sie eben in den Systemumgebungen die variable path ändern, das PIP auf die richtigen Ordnerstrukturen zugreifen kann. Sollte es hier Probleme geben, ich habe im Moodle Kurs ein Forum eingerichtet, wo man solche Probleme posten kann, wenn es da Probleme gibt, lösen wir die natürlich gemeinsam, dass sie hier auch anfangen können. So, Sie sehen jetzt erstmal Auszüge des gesamten Python Codes, wir fangen hier erstmal an, indem wir die ganzen Pakete implementieren oder einbinden, die wir brauchen, das sind externe Programmier oder Programmbibliotheken, die eben Code enthalten, den wir nicht neu schreiben müssen, sondern den wir verwenden können. Ich scroll jetzt hier runter, wir fangen hier an, indem wir natürlich als erstes mal uns unsere Zeitreihe von Yahoo herunterladen, das funktioniert über eine sogenannte Funktion. Eine Funktion haben wir in der Theorie ja schon kennengelernt, die Funktion im Programmieren bedeutet, dass ich ein Funktionskörperhaber der gewisse Argumente übernimmt, die ich ihm geben kann. Für diese vorgefertigten Argumente, die sehen Sie hier, geschehen gewisse Dinge, die hier geschehen sind, dass ich eine variable erzeuge, und zwar hier mein T-Data-Data-Frame und mit dem JF-Download hier, das ist hier oben aus meinem Yahoo Finance und Yahoo Financials heraus, kann ich hergehen und eine Zeitreihe herunterladen und bei einer Funktion ist es immer wichtig, noch einen Return Argument dazu zu geben, sofern die Funktion ein Ergebnis zurückliefern möchte. Wenn wir hier nun weiter nach unten scrollen, sehen wir hier, dass ich zwei Zeitreihen herunterlade, zum einen die Tesla-Zeitreihe, die ich eben mit aufrufen der obigen Funktion, ich scroll hier nochmal nach oben mit dieser Funktion, die rufe ich hier auf, indem ich hier den Yahoo-Ticker eintrage, das heißt der Yahoo-Ticker hier oben ist hier unser Tesla und dann gebe ich noch ein Startdatum in amerikanischer Notierung und ein Enddatum in amerikanischer Notierung ein, Progressen brauchen wir hier nicht, das können Sie als falsch übergeben und damit habe ich schon mal die erste Zeitreihe heruntergeladen und was wir jetzt im Folgenden machen werden ist, ich bespreche mit Ihnen erst einmal den restlichen Code, wie dieser Code aufgebaut ist, was da alles passieren wird und dann führen wir diesen Code aus und interpretieren ihn. Wir beginnen einfach, nachdem wir jetzt gelernt haben, ich scroll hier nochmal nach oben, es ist guter Partenstil die Importierung oder die Einbindung von externen Bibliotheken am Anfang vorzunehmen, danach werden Definitionen oder Objekte definiert, je nachdem wie groß Ihr Code ist, können Sie das natürlich auch in verschiedenen Subprogrammen machen, ich werde hier der Einfachheit halber, nachdem ich keine peineten Programmierkenntnisse voraussetze, das nicht machen, ich werde für jedes Kapitel den Code in einem File zur Verfügung stellen und Sie müssen das dann eigentlich nur noch ausführen und können daran rumspielen, ne, ich das jetzt mal liebevoll, wir haben hier gesehen, wir definieren hier eine Funktion, die Funktion nimmt ein Yahoo-Ticker, ein Startdatum oder ein Enddatum und lädt mir danach genau diese Zeitreihe herunter, die Standardsetting hier sind Tagesdaten, wenn Sie eine andere Frequenz haben möchten, müssen Sie diese Funktion hier natürlich noch etwas erweitern. Wie Sie sehen können, laden wir hier Tesla herunter und wir laden den Nestec 100 Composite Index runter anhand der Yahoo-Ticker und der vorgefertigten Zeit, Intervalle, die wir hier angeben und nachdem wir das gemacht haben, möchten wir natürlich uns die Daten zunächst einmal ansehen, dazu dient hier dieses Punkt hat, das Punkt hat zeigt uns die ersten fünf bis zehn Zeilen eines DataFrames, somit können wir uns einen Blick oder ein Bild darüber machen, wie unsere Daten dann eigentlich beschaffen sind und was ich noch machen werde oder was ich hier mit eingefügt habe ist, dass ich diesen DataFrame, die Spalten des DataFrames Ihnen in einer Vorschleife hier mal ausgebe, das heißt für alle Spalten, die hier in diesem DataFrame vorhanden sind, drückt er mir den Spalten Namen in die Konsole, wie wir das später noch sehen werden. Das nächste, was ich hier gemacht habe, ist, ich habe darauf verzichtet, für die Grafiken eine neue, erneut eine Funktion zu schreiben oder gar ein Objekt dafür zu erzeugen. Es ist der einfache Grund, dass hier im ersten Python Video ich Ihnen die Möglichkeit geben will, einfach hier herumspielen zu können, sich an den Sündtags zu gewöhnen und nicht direkt irgendwelche Funktionen manipulieren zu müssen und danach sich zu wundern, was da denn jetzt genau nicht funktioniert hat. Ich möchte, dass Sie ja nach Ihrem ersten Python Code aushören, ein Erfolgserlebnis verbuchen können. Daher habe ich hier einen sehr einfachen Sündtags gewählt, der in der Programmierpraxis eher nicht unbedingt gut ist. Das nächste, was wir hier machen, wie Sie hier sehen, wir plotten die Preiserie von Tesla. Das geht über plt.plot, plt deswegen, weil ich hier oben die matplotlibpyplot Bibliothek als plt deklariert habe. Wenn ich das nicht mache, müsste ich jedes Mal matplotlib.pyplot abtippen und das ist immer etwas langwierig, deswegen verwendet man hier gängige Abkürzungen, Panda ist als pd oder matplotlib als plt und umpy snp, das sind Abkürzungen, die werden generell so verwendet und die können Sie auch nutzen. Ich scroll jetzt hier nochmal runter, das heißt, ich erzeuge hier ein matplotlibpyplotplot, das ist ein interessanter Name, deswegen steht hier auch plt, das ist einfach auszusprechen, das heißt, ich übergebe diesen plot die Datenzeitreihe, was möchte ich denn anzeigen und ich habe dem hier noch eine Farbe gegeben, in dem Fall die Farbe grün. Ich kann dann ein x-Label bestimmen, das heißt die x-Achse benennen, die y-Achse benennen und noch eine nette Überschrift hinzufügen. Wenn Sie mehrere Zeitreien gleichzeitig in einem Bild darstellen, können Sie natürlich auch noch eine Legende dazu einfügen, um Ihr Bild dann natürlich ansehen zu können, machen Sie ein plt.show, das bedeutet, dass die Grafik nicht nur berechnet, sondern auch angezeigt wird. Ich habe hier dasselbe nochmal gemacht für den nestag, wie Sie hier sehen können, das sind redundante Codeteile, die man, wenn man es ordentlich macht, am besten in eine Funktion, wie hier oben das herunterladen von Zeitreien oder in ein Objekt packt, damit nicht 20 mal derselbe Code im selben Script vorkommt. Das ist programmiert technisch, deswegen so, wenn ich jetzt hier eine Änderung vornehmen möchte und ich vergesse die 20 Kopien davon, dann komme ich mit dem die Backen und dem Fehler suchen nicht mehr hinterher, weswegen es eigentlich eleganter ist Funktionen von Objekte zu verwenden, was ich jetzt ausgesagten Gründen hier nicht getan habe. Das heißt, diese beiden blöcke Code hier plotten mir zum einen meine Tesla Preisserie, die Sie in den Unterlagen finden werden und die nestag Reihe, die Sie in den Unterlagen auch finden werden. Als nächstes können Sie hier sogenannte Subplots einfügen, das heißt, Sie können Ihr verfügbares Fenster in Unterfenster aufteilen, wenn Sie sich erinnern an das Volumen und den Tesla Preiss, den ich Ihnen in zwei separierten Grafiken dargestellt habe, das können Sie hier machen. Sie können hier Ihren Bildschirm in verschiedene Teile aufteilen, je nachdem welcher Parameter Sie hier oben einstellen und Sie können die Fenster dann auch entsprechend einzeln mit Grafiken befüllen. Was ich Ihnen hier nicht dargestellt habe, was aber auch möglich ist, ist, dass Sie eine dritte Achse einfügen und in eine Grafik mehrere Zeit rein mit unterschiedlichen Skalierungen abtragen. Das ist möglich. Darauf habe ich im Rahmen dieses Kurses jetzt aber erst mal noch verzichtet. Das heißt, ich fange hier nochmal von oben an. Wir binden die relevanten Pakete ein, wir erzeugen unsere erste Funktion, die ist unser Laub Finanzmarktzeit rein, von Yahoo.de herunterzuladen. Wir speichern uns hier gerade mal zwei davon in ein DataFrame, schauen uns hier die ersten Zeilen an, drucken uns die Spaltennamen, damit wir mal ein Gefühl dafür bekommen, was dann in so einem DataFrame eigentlich mit runtergeladen wird. Dann machen wir uns eine nette Grafik der Preisserie der ersten Aktie, also der Tesla Aktie. Dann machen wir uns nochmal ein hübsches Bildchen der Nesdeck 100 Composite Index-Zeit-Reihe und hier habe ich weiter gemacht, indem ich Ihnen nochmal die Tesla Aktie sowie das Volumen, das Volumen wird mit den Preisen im selben DataFrame angeliefert, abgetragen habe, damit Sie auch sehen können, dass Sie nicht nur die Bilder einzeln drucken können, sondern dass Sie das auch zusammenfügen können. So, was haben wir jetzt bisher gemacht? Wir haben unsere Pakete eingebunden, wir haben eine Funktion geschrieben, die ist unser Laubt, die Zeitreihe herunterzuladen, wir haben uns die Kopf der Zeitreihe angeguckt, wir haben uns die Spalten des DataFrames angesehen, wir haben uns ein paar hübsche Bildchen ausgedrucken lassen, damit wir auch einen grafischen Eindruck unserer Daten bekommen und jetzt möchten wir natürlich auch das, was wir jetzt in der Theorie gelernt haben, umsetzen. Wir schauen uns jetzt erstmal den Mittelwert, also den Erwartungswert an und die Standardabweichung unserer Daten, die wir heruntergeladen haben, deswegen habe ich hier noch mal ein paar temporäre Variablen definiert, zum einen nochmal die Preise und das Volumen jeweils von dem Nesdaq 100 Composite Index und der Tesla Aktie und Sie können hier über das NumPy Package NP-Mean oder NP-STD, das ist die Standardabweichung schlicht und ergreifend den Mittelwertung, die Standardabweichung berechnen, ich habe hier in einem Print Statement eben genau diese Ergebnisse ausgedruckt, die werden wir uns jetzt dann gleich anschauen, natürlich können wir nicht nur Mittelwerte und Standardabweichungen schön einzeln berechnen, wir können natürlich über das, über den Befehl.describe hier, Tesla DataFrame.describe oder Nesdaq 100 DataFrame.describe uns eine Summary Statistic ausgeben lassen, in der die gängigsten statistischen, deskriptiven Maße vorberechnet werden. Warum ich das nicht sofort gemacht habe, ist, Ihnen zu zeigen, dass Sie mit NumPy sich diese statistischen Maße einzeln aussuchen können, Sie können natürlich aber auch, wenn es ein, ich nenne es mal Quick and Dirty Overview sein soll, über das.describe Argument sich die statistischen, deskriptiven Maße direkt hier ausdrucken lassen. Zudem können wir uns hier die Korrelation zwischen den beiden Titeln ansehen, das heißt, wir können hier direkt eine Korrelationsmatrix uns in, ich sage es mal, Konsolenform ausgeben lassen. Es ist später natürlich auch möglich, wenn Sie viele Variablen haben, Heatmaps oder Korrelationsgrafiken zu erzeugen, die meines Achtens schon sehr gut aussehen. Was wir hier machen, ist wieder über das NumPy Package uns den Korrelationskoffizienten der Tesla Preise und des Volumens von Tesla anzusehen. Wir haben ja weiter oben uns einen dualen Plot ausdrucken lassen oder wir werden uns den ausdrucken, indem das Volumen und die Tesla Preise zusammen abgetragen sind und ich unterstelle jetzt hier einfach mal das Handelsvolumen und der Preis irgendwie zusammenhängen und deswegen berechne ich jetzt hier den Korrelationskoffizienten und da sind wir bei dem normalen Korrelationskoffizienten, wir sind noch nicht in der Autokorrelation zwischen den Preisen und dem Volumen. Ich möchte einfach wissen, kann ich die Preise durchs Volumen erklären, ja oder nein und das führt uns auch direkt hier weiter zu dem Plot, den Sie hier gesehen haben in Ihren Unterlagen, indem ich das Volumen der NASDAQ Indexzeitreihe mit dem Volumen der Tesla Preisserie in einem Streudiagramm darstellt, das können Sie hier über das Mudplot Lip Style Use GG Plot einstellen, Sie nehmen hier nicht mehr PLT.plot, das würde Ihnen nur die Zeitreihe abtragen, Sie machen hier einen Scatterplot, ein Streudiagramm, deswegen nehmen Sie aus dem Mudplot Lip hier das Scatter Argument und die Scatter Funktionalität, um hier eben die Argumente einzutragen, die gescattert werden sollen, Sie können hier wieder die Achsenbeschriften ein Titel eingeben und was ich hier weitergemacht habe ist, damit Sie das auch sehen, ich habe hier zwei Variablen simultan definiert und zwar über das NAMPAI Poly Fit, das ist effektiv nichts anderes wie eine gehobene Variante, eine Regressionsgerade durch den vorher genannten Datensatz zu legen, das heißt hier habe ich eine Steigung und einen Achsenabschnitt und mit dem Poly Fit, mit der Poly Fit Funktion, die NAMPAI zur Verfügung stellt, kann ich hier meine Regressionsgerade einzeichnen und was ich natürlich machen möchte ist, ich möchte hier die Regressionsgerade nicht nur berechnet haben, sondern ich möchte sie hier auch sehen, weswegen ich sie hier nochmal extra abtragen muss und dann kann ich mir das Ganze wieder ansehen. Wenn wir nun im Code fortfahren, sehen Sie das, was wir im Skript auch schon gezeigt haben, wir berechnen hier unsere Lockrenditen und unsere Quartriertenlockrenditen, das können Sie hier über den NAMPAI Befehl Lugarhythmus einstellen und einfach sagen hier, ich nehme die Formel und mache daraus Pinecode, das heißt ich berechne hier einfach nur die Renditen, die Wachstumsraten unserer Preiserie und das mache ich natürlich einmal für die Tesla Preise, da berechne ich hier die normalen Lockreturns und ich berechne die Quartriertenlockreturns und ich berechne die Lockreturns unseres NASDAQ 100 Composite Index. Interessant ist es hier, dass ich in diesem DataFrame hier eine neue Spalte definiere, die nenne ich hier Lockreturns und da passiert folgendes, was diese Formel hier sagt, wenn ich dieser Formel wieder einen DataFrame zur Verfügung stelle, dann rechnet er jeden einzelnen Punkt automatisch durch, da müssen Sie selber gar nichts mehr tun, er erzeugt Ihnen hier eine neue Spalte und berechnet für alle Werte, die eben diese andere Spalte hat die neuen Werte, das war früher nicht so, da mussten Sie das noch aufwendig zusammenfügen, das ist inzwischen eine sehr bequeme Art und Weise das zu tun. Wir schauen uns danach natürlich nochmal unseren DataFrame an und sehen uns den Kopf nochmal an, nachdem wir hier neue Spalten zugefügt haben und was wir wieder machen, ich denke so langsam verstehen Sie es, wir ploppen uns wieder diese Zeit rein und zwar die Returnzeit rein, die ich Ihnen vorher gezeigt habe und diesmal ist es so, dass wir die Tesla Returns und die Nasdaq Returns in einer Grafik abtragen, achten Sie bitte darauf, wenn Sie eine Legende wie hier unten mit einfügen möchten, dass bei der Plottfunktion hier oben ein Label mit als Parameter übergeben wird, sonst weiß die Legendenfunktion hier unten nämlich nicht, was Sie denn dahin schreiben soll. Das zeigen wir uns dann wieder an, also wir schauen uns dann diesen Plott wieder an und das gleiche machen wir hier nochmal für die Squared Returns, das ist dasselbe wie oben, da geben wir uns einfach das Bild aus und fertig ist das. Ich scroll jetzt nochmal ganz nach oben, damit Sie sehen, wie viel wir hier schon gemacht haben. Ich habe hier als TSA dieses Datmodels Graphics diese TSA Plots mir ausgeben lassen als Paket, die binde ich hier mit ein und was mache ich damit? Ich scroll jetzt hier fleißig nach unten, was ich hier unten damit mache ist, ich benutze die Autokorrelationsfunktion, die in diesem Package enthalten ist, um eben die Autokorrelationsplots der Preise Returns und Log Returns zu berechnen und auszugeben. Ich habe hier hinten den Parameter Lex, wo ich einstellen kann, wie viele Perioden ich denn nach hinten gehen möchte, was ich auch gerade Ihnen gezeigt habe, wenn Sie hier, das ist der große Vorteil von Visual Studio Code, über diese Funktion, über diesen Befehl drüber havern, sag ich mal, dann geht sofort das Hilfeminü auf, wo Sie sehen können, aus welchen Parametern diese Funktion besteht und was Sie dabei beachten müssen und welche Werte das hier annehmen kann. Was mir gerade noch aufgefallen ist, das habe ich auch gerade korrigiert, dass ich im bisherigen Video ein veraltete Version dieses Programmes Ihnen vorgestellt habe. Die einzigen Änderungen, die sich ergeben haben, sind eigentlich nur hier in diesen sechs Zeilen, fünf Zeilen und zwar ist es so, dass ich hier die Varianten berechnet habe, indem ich die Adjusted Closing Preise minus den Mittelwert quadriert habe. Ich habe aber hier die Spalte-Preis-Volatilität genannt und die Volatilität, so wie wir sie kennen, ist ja natürlich die Standardabweichung, das heißt, ich muss hier natürlich noch die Wurzel ziehen und das habe ich hier nachträglich noch eingefügt. An den Plots und an den Ergebnissen ändert sich hier ran jedoch nichts. Ich habe Ihnen auch die aktualisierte Version des Kodes, wo hier eben noch dieser 0,5er Exponent dabei ist, auf Moodle hochgeladen und was machen wir hier unten jetzt? Ich habe es gerade ja schon gesagt, wir berechnen die Volatilitäts-Serie auf Basis der Adjusted Closing Preise minus der Mittelwerte quadriert und dann gewurzelt. Das gleiche mache ich hier für die Lock-Returns und für die Quadrierten-Lock-Returns und was wir dann machen. Wir machen wieder ein Bildchen und das von allen beiden und am Ende plotten wir noch mal die Autokorrelation. Das heißt, wir sehen uns hier oben erst mal noch mal die Preis-Volatilitätszeitreihe an, sowie die Return-Zeitreihen, also die Return-Volatilitäten, die wir uns hier noch mal ansehen werden und dann hier unten, ganz unten hier in diesen drei Zeilen in FIG 3 bis FIG 5, machen wir folgendes. Das gleiche wie oben. Wir lassen uns die Autokorrelationsfunktionen ausgeben, die Autokorrelationsplots für 42 Lex, der Preis-Volatilität sowie der Return-Volatilitäten und lassen die uns hier anzeigen. Wir haben natürlich im Kurs auch gelernt, dass wir auf Autokorrelation testen können. Deswegen haben wir hier noch mal eine Funktion gebaut, die, wenn man jetzt ganz ordentlichen Code schreiben würde, oben am Anfang des Kriptes definieren würde. Ich habe das hier unten mal separiert, damit sie das eben auf einem Haufen sehen und nicht so auseinander gestückelt. Was machen wir hier? Wir machen als erstes eine OLS-Regression. Das heißt, wir machen hier eine gefittete OLS-linearere Regression über diesen Datensatz und lassen uns dann das Ergebnis des Durben-Worzen-Testes, das hier ist die Implementierung des Durben-Worzen-Testes, so wie sie ihn im Skript kennengelernt haben, ausgeben. Und wir lassen uns die Ergebnisse hier drucken. Das heißt, wir können für die Adjusted-Closing-Preise, für die Lock-Returns, für die Preis-Bulatilität und die Return-Bulatilität, die Durben-Worzen-Testergebnisse in der ersten Ordnung betrachten. Ich habe jetzt sehr lange diesen Code erklärt. Ich hätte gesagt, wir lassen diesen Code einfach mal laufen und wir sprechen über die Ergebnisse. So, Sie sehen, wenn ich dieses PLT.Show anklicke bzw. wenn ich das ausführe, sehe ich meinen Preis-Chart in einem gesonderten Fenster. Das kann ich hier groß machen. Ich habe hier unten noch Felder, wo ich die Charts manipulieren kann, drehen kann, skalieren kann. Ich kann die Bilder hier dann auch speichern und exportieren. Und was will ich hier unten sehen? Ich klicke jetzt hier nochmal in meine Konsole rein und ziehe das Terminal etwas größer. Das ist das .head, der .head-Befil, wo wir hier den DataFrame sehen und zwar die ersten fünf Zeilen dieses DataFrames. Und wir sehen, wir haben hier die Daten, wir haben die Zeitpunkte, wir haben den Eröffnungskurs, den Hochkurs, den tiefsten Kurs, den Closing-Preis, den Adjusted-Closing-Preis und das gehandelte Volumen jedes Tages hier richtig schön in einem DataFrame abgetragen. Und das haben wir hier für das, für den Nest-Deck auch nochmal. Das ist der zweite Header, den wir hier sehen können. Da sehen wir die ersten fünf Daten, den Opening-Preis, den höchsten Preis, den tiefsten Preis, den Closing-Adjusted-Preis für den jeweiligen Tag und das gehandelte Volumen. Und was wir hier noch sehen, ich markiere das nochmal, hier habe ich einfach nur zur Übersicht nochmal die Spaltenamen ausgegeben und es fällt ja auf, dass das Datum hier nicht als Extraspalte eingefügt ist, sondern automatisiert beachtet wird. Das ist der große Vorteil, wenn man einen DataFrame nutzt. Ich ziehe jetzt hier nochmal das Terminal ein bisschen weiter unten. Wir sind jetzt quasi hier, wir haben jetzt diesen Teil hier ausgeführt plus die erste Bildchen-Version, die wir uns hier angesehen haben. Der Code stoppt an dieser Stelle, solange hier diese Figurfelder offen sind. Wenn ich hier oben auf Schließen klicke, führt er mir das nächste Bildchen aus. Wir sehen jetzt, wir sind jetzt hier, wir lassen uns jetzt hier den NASDAQ 100 Composite Index anzeigen. Das ist dieselbe Grafik, die Sie in Ihren Vorlesungsunterlagen finden. Sie sehen, die Qualität der Grafik ist relativ gut. Machen wir hier mal weiter. Die nächste Grafik, die ich Ihnen gezeigt habe, das ist das mit den Subplots, in dem ich hier verschiedene Felder definieren kann. Deswegen werden wir hier auch zwei Zeitreihen, die einmal die Tesla-Preiszeitreihe, wie wir sie vorher gesehen haben und das Volumen aus demselben DataFrame in einem Bild angezeigt. Es gibt natürlich die Möglichkeit hier noch eine andere Achsen-Beschriftung einzufügen und das Volumen quasi mitsamt der Zeitreihe in einem Fenster zu plotten. Da stehen hier natürlich die Möglichkeiten offen. Wir machen jetzt hier weiter und sehen, wir sind jetzt, ich scroll mal hier runter, das ist das, was wir gerade gesehen haben, über das Volumen und wir sind jetzt quasi, ich scroll nochmal ein Stück runter, wir sind jetzt quasi hier in den Bildchen und wenn wir jetzt hier in unserem Terminal weiter nach unten gehen, sehen Sie, wir kriegen hier ganz viele interessante Sachen ausgedruckt. Zum Beispiel diese Zeile hier oben, diese deskriptiven Statistiken, die wir gerade besprochen haben, die ich hier ausgegeben habe, ist das hier, wo ich selbst definieren kann, dass hier dasteht, die Zeitreihe hat einen Mittelwert von 204 und eine Standarderweichung von 131. Das sind diese Zeilen hier im Code und ich habe ja natürlich vorher gesagt, wir können hier ein Dot Describe Befehl ausführen. Dieser Dot Describe Befehl erzeugt mir diese Tabelle hier, der mir für alle Spalten, die in diesem DataFrame enthalten sind, die Anzahl, Mittelwert, Standarderweichung, Minimum, Maximum und eben die Quartile berechnet und das ist eigentlich eine sehr elegante Möglichkeit, einen deskriptiven Überblick zu bekommen. Wenn wir hier weiter runter scrollen, wir haben vorher gesagt, wir können uns hier auch zwischen den Volumina den normalen Korrelationskoffizienten berechnen lassen und da sehen Sie hier unten, das ist quasi eine Korrelationsmatrix, wo in diesem Fall halt nur zwei Werte drin stehen und wir sehen hier, das ist eine symmetrische Matrix, das ist die Variance Covariance Matrix zwischen dem Tesla und dem Nasdaq Volumen und wir sehen bzw. dem Volumen von Tesla und den Preisen von Tesla, entschuldigen Sie mich bitte, und wir sehen, dass das Volumen auf dem Preis ein Einfluss von 0,55 hat, das bedeutet, dass grundsätzlich je höher das Volumen ist, desto höher der Preis wahrscheinlich auch sein wird. Wenn wir jetzt hier das nochmal runterziehen, dann sind wir im Moment hier, wenn wir das Bild hier noch dazu groß machen, dann sehen wir das hier. Das heißt, wir haben diesen Ggplot hier uns anzeigen lassen, wir haben uns hier statistische Maße plotten lassen, das haben wir hier schön jetzt in die Konsole gedruckt, damit ich Ihnen das zeigen kann. Es ist natürlich auch möglich, sich diese, sagen wir mal, Minimumserie über die Spalten eines Data Frames wieder an eine neue Variable zu speichern und weiter zu verwenden, das funktioniert natürlich, ist für mich als Dozent ein bisschen schwierig, wenn ich Ihnen das nicht zeigen kann, deswegen habe ich mir hier den Luxus rausgenommen, das in die Konsole zu drucken, damit ich Ihnen diese Tabellen auch zeigen kann. Sie können sich natürlich diese Maße auch in extravariablen speichern. Ich mache diesen Scatterplot hier nochmal groß, das hier ist der Scatterplot, den Sie aus dem Skript kennen, der mir das Volumen von Tesla gegen das Volumen von Nesdeck 100 Composite aufträgt und noch eine Regressionsgerade hier reinfittet. Hier stoppt der Code auch wieder, eben so lange bis Sie dieses Fenster geschlossen haben. Und dann geht sofort das nächste Fenster auf, ich scroll hier nochmal runter, wir haben hier unsere, unsere Turns berechnet, das sehen wir hier, ich habe hier nochmal neuen Header eingefügt, das heißt hier sehen wir wie hier oben Open, High, Low, Adjusted Closes und Volume, das ist das, was wir von Yahoo direkt beziehen können. Und wenn wir jetzt hier runter scrollen, sehen Sie, dass ich hier zwei Spalten mehr eingefügt habe, einmal die Lock Returns und einmal die Quadrierten Lock Returns und Sie sehen, das macht der Data Frame ganz automatisch und erfüllt mir hier auch die Blanks mit auf. Da müssen Sie sich selber nicht mehr drum kümmern und das ist das, was Sie auch aus dem Skript kennen, das ist hier die Return-Zeitreihe, die wir geplottet haben. Hier habe ich den Nesdeck 100 sowie die Tesla-Zeitreihe in das selbe Bild eingefügt und wenn Sie das jetzt hier so nebeneinander legen, dann können Sie sich hier die Zahlen angucken und Sie haben das Bild dazu und wir befinden uns im Code im Moment hier. Wir haben uns hier diesen Header nochmal angeschaut über diese Returns, die wir hier unten sehen können und wir haben jetzt das hier ausgeführt. Wenn wir hier dieses Fenster wieder schließen, läuft der Code weiter, das heißt wir sind im Code jetzt hier. Hier sehen wir quasi nochmal die Grafik über die Zeit der Quadrierten Return-Serie, wo wir sagen können, wir haben die Lock-Returns quadriert. Das sehen wir hier. Er rechnet jetzt ein bisschen für die Autokorrelation und ich habe das hier so eingestellt, dass in mir gleich drei Bilder gleichzeitig auswirft. Deswegen rechnet hier er hier auch ein bisschen mehr. Er rechnet mir hier, das sehen Sie über der Konsole hier, einmal die Adjusted Closing Preise, Lock-Returns und Squared Lock-Returns. Ich schließe jetzt hier einfach mal die Returns, weil wie Sie hier sehen, haben wir keine Autokorrelation. Wenn ich das hier größer mache, sehen wir die Grafik für die Tesla Preise in der Autokorrelation mit einem Lack von 42. Und das Schöne ist, dass dieses Package mir hier genauso direkt die Signifikanzschwellen nach oben und unten mit einzeichnet. Das heißt, die sehen auf einen Blick, ist mein Stäbchen hier, mein Streichholz über diesem Schwellwert oder nicht. Wenn er drüber liegt, ist es signifikant und ansonsten eben nicht. So, wir schließen das wieder. Beziehungsweise, bevor wir es schließen, scrollen wir hier noch mal im Code etwas weiter nach unten. Wir haben jetzt ausgeführt diesen Teil hier. Und was wir als nächstes machen werden, ist, sind die Volatilitäten zu berechnen, einmal der Preise und der Lock-Returns sowie der quadrierten Lock-Returns und uns diese grafisch erstmal anzeigen zu lassen. Der Code wird dann hier wieder stoppen und uns das Bildchen anzeigen, einmal von der Preis-Volatilitäts-Serie von Tesla und einmal von der Return-Volatilitäts-Serie von Tesla. Und wir müssen jeweils immer das Fenster hier schließen, bevor wir irgendwas weiter berechnen. So, wie Sie hier sehen können, das ist das, was wir vorher gesagt haben. Hier ist es relativ stabil. Dann haben wir ein bisschen gezuckel und dann geht es einfach mal knallhart nach oben. Das sind Dinge, die wir modellieren wollen, die uns auch in der Risikomodellierung beschäftigen. Bauer ein Modell, das das hier darstellen kann. Das funktioniert hier vielleicht ganz gut. Das funktioniert auch irgendwie noch. Aber das hier hinten wird dann schon schwierig und Volatilitätsmodelle interessieren mich in erster Linie und nur dann, wenn es kracht. Also, wenn das hier nicht richtig modelliert ist und ich bin hier auf der falschen Seite des Marktes, kann es durchaus passieren, dass ich am Ende vom Tag nicht mehr ganz so viel Geld besitze, wie ich es mir eigentlich vorgestellt habe. Ich schließe das hier jetzt nochmal. Und dann sind wir quasi hier drüben bei der Return und bei der Squared-Return-Volatilität, die ich Ihnen hier nochmal grafisch dargestellt habe. Sie sehen die Devolatilisierung, die Sie erreichen können, wenn wir die logaritmierten Returns quadrieren. Sie sehen aber auch, dass Returns auf Tagesbasis eine ganz schön hohe Volatilität haben können. Und zwar hier über 20% und das ist schon enorm. Das ist viel. Und wir versuchen im Verlauf des Kurses hier ein bisschen Modellierung mit reinzubringen und Modelle zu definieren und zu bauen, die das hier tatsächlich abbilden können. So, errechnet jetzt wieder ein bisschen. Und ich habe es immer so eingestellt, dass er mir die Autokorrelationswerte für alles ausspuckt, was er gerade hat. Wir befinden uns jetzt hier, wo wir für die Preise die Return-Vola und die quadrierte Return-Vola die Autokorrelationsfunktionen sehen. Das ist das, was Sie aus dem Skript kennen. Deswegen schließe ich das auch gerade mal nochmal. Und wir befinden uns jetzt hier bei den Tests, wo wir erst mal die Konsole noch mal etwas größer ziehen müssen. Und ich habe das hier unten relativ ugenschön hingeplottet. Sie können sich das natürlich auch wieder in eine Variable speichern oder hübscher in eine Datei schreiben lassen, was Ihnen da auch immer beliebt. Wir sehen jetzt hier der Durben-Watzen-Test für die Preise ist bei null, positive Autokorrelation. Für die Lock-Returns gibt es mir einen Nannen aus. Das bedeutet einfach, dass er hier keine Autokorrelation berechnen kann, was in dem Fall Sinn macht, dass wir keine Autokorrelation haben. Und für die Volatilität sind wir wieder im hoch positiven, autokorrelierten Bereich. Wie Sie sehen können, kann ich mir hier natürlich auch den kompletten Data-Frame ausspucken lassen. Dann sehe ich aber außer lauter Werten nichts mehr. Deswegen ist es sinnvoll, hier über die Head-Funktion sich das anzeigen zu lassen. Da können Sie ein Gefühl für die Daten bekommen. Sie sehen, wie sehen die denn aus, was für eine Struktur haben die Daten, was kann ich damit anfangen und in welche Spalten muss ich hier den überhaupt mit reingehen. Sie können sich hier deskriptive Schreibungen ausgeben lassen, entweder in so einer Summary-Table oder Sie können die auch selber definieren. Ich mache das jetzt noch mal klein und fasse das einfach alles noch mal zusammen. Was haben wir jetzt gelernt? Wir können Pakete in Peinten implementieren und deren Funktion nutzen. Wir können Funktionen selber definieren und ausführen. Wir können Finanzdaten selbstständig nun runterladen und uns ansehen. Das heißt, wenn Sie hier einen anderen Ticker reinschreiben, ist es so, dass Sie eine andere Zeitreihe angezeigt bekommen. Das Einzige, womit Sie leben müssen, ist, dass das immer noch Tesla heißt. Das ist der Nachteil von dieser einfachen Code Darstellung. Man kann das Ganze natürlich auch in verschachtelte Objekte und Definitionen von Funktionen packen. Das bewirkt dann, dass je nachdem, welchen Ticker ich mich herunterziehe, sich der Name und die Beschreibung und das Label und die Farbe ändert, je nachdem, was ich herunter lade. Das ist durchaus möglich, wo ich jetzt im Zuge dieser Veranstalter bzw. dieses ersten Videos einfach mal drauf verzichtet habe, dass Sie hier selber in den Parametern ganz einfach rumspielen können. Nehmen Sie sich die Zeit, sich den Code in Ruhe anzusehen. Ich habe Ihnen auch für diejenigen, die noch nie absolut gar nichts mit einer Programmiersprache zu tun hatten, auch einige Tutorials in den Moodle-Kurs gestellt. Sie können diesen Code nehmen, manipulieren, verändern, ausprobieren. Das habe ich mit den anderen Codesnipples, die wir in diesem Kurs lernen werden, genauso aufgesetzt, sage ich das mal. Und wir werden allerdings, gerade wenn es in die Maschinen-Learning und Data Science Thematiken geht, anspruchsvollere Code verwenden werden müssen, damit wir der Ergebnisse bekommen, mit denen wir auch etwas anfangen können. Nehmen Sie sich den Code, spielen Sie damit und ich hoffe, Sie haben da etwas Spaß und Freude daran und bis zum nächsten Video.