 Ich darf Sie herzlich zum Python Coding Video für die Vorlesungssignal-Analyse zum Coding von Wevelets begrüßen. Es freut mich, dass Sie wieder dabei sind. Ich hoffe, Sie haben mit dem Code über die Fourier-Transformation viel Spaß gehabt, viel zum Experimentieren und einiges dabei gelernt. Wir haben für dieses Video zwei Python-Skripte dabei, das eine für die kontinuierliche Wevelet-Transformierung und das andere für die diskrete Wevelet-Transformation. Und Sie sehen schon, wir brauchen gar nicht mal so viele Pakete mehr. Wir haben die üblichen Verdächtigen, Pandas, NumPy, Mudplotlib, Random und das interessante Paket ist das hier. Das ist das PyWtWevelet für Python-Paket. Wenn Sie das per PIP einbinden möchten, achten Sie bitte darauf, dass Sie es zwar über PyWt importieren, aber bei PIP dem Befehl PIP install PyWevelets benutzen müssen, weil PyWt findet er nicht. Dann brauchen wir noch unser SciPy-Signal und unsere Yahoo-Pakete. Und was haben wir hier? Wir haben unsere Lieblingsfunktion zum Herunterladen von Finanzdaten. Wir haben hier den Teil aus dem Video zu Wiener Prozessen und geometrischer Brownschen-Molekular-Bewegung. Das sind dieselben Formeln. Daher verweise ich hier zur Erklärung einfach auf das andere Video, aber ich kann es nochmal kurz durchsprechen. Wir erzeugen hier ein Wiener Prozess und ein geometrischen Wiener Prozess und das ist erst mal alles, was ich dazu sagen werde, weil das haben wir ja schon abgefüllt. Die nächste Funktion ist etwas ekelhafter, dies etwas größer. Das ist die Funktion, die uns letzten Endes dieses Spektrum der Wevelets erzeugt und wir sehen schon, dass wir hier einiges an Argumenten übergeben müssen. Wir brauchen eine Zeit, wir brauchen ein Signal, wir brauchen die Skalen, wir brauchen einen Wavelet-Namen, also die Art des Wavelets. Wir müssen dem Ganzen noch eine Heatmap übergeben, damit er die koeffizienten Matrix auch entsprechend anmalen kann. Wir haben hier noch ein Titel und eine Achsen-Beschriftung dabei. Ich gehe nochmal hierauf ein. Wir haben im Kurs ja gelernt, dass wir eine Wavelet-Zerlegung so vornehmen können, dass wir ein Wavelet durch das Signal schieben, eine mathematische Befaltung berechnen und entsprechend einen Koeffizienten für jeden Zeitpunkt erhalten. Wenn wir hier natürlich die Skalen definieren, ist es so, wenn wir jetzt eine Standard-Zeitlereinlänge von 5000 Punkten nehmen und 256 Skalen berechnen, haben wir eben 5000 mal 256 mathematische Faltungen, die das Programm hier eben rechnet. Das heißt, hier können wir eingeben, welches Wavelet wird dann durch Signal geschoben. Und am Ende ist es so, wir erhalten hier eine Koeffizienten-Matrix, eine 256 auf 5000 der Koeffizienten-Matrix, wo eben diese Ergebnisse pro Zeitpunkt, pro Faltung, pro Skala abgetragen ist. Und es ist einfach so, dass wir pro Skala eben dieses Wavelet kürze oder länger denen ziehen, schnauchen und damit wir hier nicht einfach eine Matrix geplottet bekommen, die aus ganz vielen Koeffizienten besteht, machen wir da eine Heatmap daraus, weil das ist für das Auge überhaupt erfassbar und damit können wir überhaupt etwas anfangen. Wo können wir hier fortfahren? Wir sehen hier, wir machen hier unser Zeitdelta, hier legen wir die Frequenzen und die Koeffizienten fest. Hier haben wir noch einen Skalierungspower-Gesetz, die Perioden. Hier können Sie eingeben, welche Skalen denn überhaupt zu beachten sind. Hier geht es mal bis 2048, beachten Sie, dass das hier eine dyadische Regel ist, also eine Zweierpotenz. Und also machen wir noch, wir geben hier sehr viel darauf, dann das Ganze zu plotten, das heißt, die richtige Berechnung findet hier oben statt. Hier plotten wir das Ganze noch und hier unten stellen wir das noch ein bisschen ein, das heißt, Sie können diese Wavelet-Funktion in drei Teile teilen. Der erste Teil ist der Kopf mit den ganzen Argumenten der Funktion, die benötigt werden, die Berechnung findet letzten Endes hier statt und der Rest hier unten ist, um es kurz zu sagen, dafür da, dass es hübsch aussieht und wir eben die Wavelet-Koeffizienten-Matrix als Heatmap ordentlich und sauber sehen können. Das ist mal die Funktion, die brauchen wir später noch, das heißt, ich fange von oben an. Wir haben hier die Pakete, die wir einbinden. Hier laden wir uns die Finanzdaten runter. Hier erzeugen wir einen Brownschen-Molekular-Prozess, einen Wiener-Prozess und einen geometrischen Wiener-Prozess. Hier ist die Funktion, die wir später aufrufen werden, um unsere Wavelet-Matrix in Heatmap-Repräsentation auszugeben und ich scroll jetzt hier mal weiter runter. Was machen wir hier noch? Wir plotten hier eigentlich nur die Wavelets, die Sie hier oben einstellen können. Diesen Code werde ich gar nicht weiter läutern, weil der ist für die Analyse selbst total irrelevant. Das ist die Übersichtsdarstellung, die Sie in den Vorlesungen auch gesehen haben. Sie können hier oben natürlich verschiedene Wavelets eingeben und dann plottet der Ihnen die auch hier unten. Also das ist eigentlich nichts anderes, wie die Erzeugung dieses Bildchen, was Sie in der Vorlesung haben. Die tatsächliche Action nenne ich mal das Ganze startet hier unten. Wir fangen an, unsere Zeitreihe hier runter zu laden, die Returns zu berechnen, das Ganze hier noch zu skalieren, weil wir müssen hier die Returns ein bisschen skalieren, die None-Values zu entfernen, einige Momente zu berechnen, dann gehen wir her, das ist derselbe Teil Code, den Sie auch in dem anderen Video finden. Hier erzeugen wir einen Pfad einer geometrischen Brownschen Bewegung und wir rechnen hier noch die sogenannten Wachsumsraten und Renditen dieser Brownschen Molekularbewegung und lassen uns das Ganze erst mal anzeigen. Danach setzen wir hier unsere Signale, die wir für die Zerlegung brauchen, das heißt einmal unsere echten Daten und einmal die Daten der Brownschen Molekularbewegung, also effektiv die Renditen hier vorn. Dann müssen wir noch einige Parameter einsetzen, die wir eben für diese Zerlegung brauchen und ganz am Ende geben wir uns die Spektren aus. Ich skrolle nochmal ganz nach oben und fange nochmal von vorne an, damit sie sich hier in diesem Code auch zurecht finden können. Wir importieren hier unsere Pakete, dann definieren wir hier unsere Funktionen, die wir später benötigen werden. Einmal Daten runterladen, zweimal Brownschen Molekularbewegung erzeugen, einmal Wavelet Spektrum, einmal berechnen und grafisch wieder als Heatmap ausgeben. Das heißt, wir übergeben diese Funktionen später hier diese ganzen hellblauen Parameter, die die Funktion eben braucht. Dann berechnen wir hiermit die Koeffizienten, das bedeutet die mathematische Faltung unseres Wavelets für jedes Skala, für jeden Zeitpunkt und geben dann eben diese Koeffizienten Matrix in einer Heatmap bunt aus, damit wir mit dem Ergebnis überhaupt etwas anfangen können. Den Teil überspringen wir jetzt einfach mal liebevoll, weil der ist dazu da, uns einfach einige Wavelets grafisch zu plotten und mehr tut das Ganze nicht, da können sie ein bisschen darin rumspielen und ich fokussiere mich jetzt nochmal hier unten auf diesen Teil. Wir extrahieren hier aus Yahoo Daten, berechnen unsere Returns, skalieren diese Returns um den gegebenen Faktor. Wir entfernen hier die Nann-Values, erzeugen noch einige Momente, setzen einen Seedwert und danach machen wir das gleiche wie im vorherigen Video, wir simulieren eine geometrische brownsche Molekularbewegung, da erzeugen wir uns einen Pfad davon und erzeugen hier eben einmal die Renditen plus wir skalieren diese auch noch, geben uns den Plot davon aus, setzen hier noch die Daten richtig, einige Parameter und berechnen effektiv hier unsere Wavelets Erlegung, lassen die uns anzeigen und ich hätte jetzt gesagt, wir lassen das einfach mal laufen. Das ist der Teil, wo ich gesagt habe, den können sie erst mal getrost ignorieren, da ist sehr viel Code dabei, der mir sagt, okay, mach hier zwei Reihen draus, mach hier vier Spalten draus, bitte acht Bildchen draus machen und was da denn alles reingehört, das ist zu Übersicht, dass sie grafisch mal sehen können, wie sieht denn so ein Wavelet überhaupt aus, da können sie natürlich, wenn sie im Code sind, das ganze verändern, dass sie hier sich andere Wavelets ansehen können, ich schließe das ganze jetzt einfach mal und dann sind wir im Code sogar schon in diesem Teil, wo wir unsere Return Plot sehen können, das Blau ist leider etwas entglitten, da habe ich ein anderes Blau gewählt, da ich hoffe, man sieht es trotzdem, das ist das selbe Bildchen wie in der Vorlesung, wir sehen hier in Baby Knutsch Blau die Aktienrenditen und in Rot die Renditen unserer geometrischen, braunischen Molekularbewegung, wo ich nur nochmal darauf eingehen kann, dass eben unsere realen Renditen wesentlich höher sind, wie die einer geometrischen, braunischen Molekularbewegung, wo sie auch sehen, warum Finanzmodelle in Krisen grundsätzlich zu Versagen tendieren, sie sehen hier eine Krise und sie sehen hier eine Krise und sie sehen natürlich hier hinten die Corona Krise, wo sie natürlich die negativen und auch die positiven Returns bei Weibchen, bei Weibchen die simulierten geometrischen, braunischen Molekularreturns übersteigen sehen und was wir jetzt im Nachhinein noch machen werden ist, wir werden einmal die rote Zeitreihe hier mit einer Wavelets Erlegung zerlegen und die blaue Zeitreihe hier ebenfalls, deswegen schließe ich das ganze jetzt einmal und wir müssen ein bisschen warten, da diese Berechnung eben sehr rechnintensiv ist, besonders wenn man nur einen Kern verwendet und jetzt nicht den high end Graphic Rechner hat, ich mache das jetzt hier mal groß und wir sehen hier als erstes die Wavelet Erlegung, das Power Spectrum für die echten Finanz Renditen und was wir hier sehen können ist effektiv eine Matrix mit 256 auf 2500 Werten, die Koeffizienten, die eben bei dieser Berechnung herausgekommen sind, nur in Bund angemalt, also mal nach Zahlen für Fortgeschrittene und was sehen wir hier denn nun, wir sehen das in den Krisenbereichen hier wir höhere Frequenzen haben und wir sehen hier anhand der Skalen auch, auf welche Frequenz das stattfindet, wir werden im Ausblick in die Forschungszeilen noch dazu kommen, dass wir dieses Skalen durchaus als Zeitebenen interpretieren können und dass wir da mit diesen Wavelets ganz geschickte Erlegungen anstellen werden. Was wir hier sehen können ist natürlich, dass sich hier, wenn wir hier eine Jahresebene darunter plotten würden, dass wir hier in gewissen Krisenzeiten durch die Skalen hindurch Signifikanzen erkennen können, wo sich in der Forschung dann die große Frage stellt, was kann man mit diesem Konzept denn eigentlich noch so alles anstellen. Für uns reicht es jetzt erst einmal zu wissen, dass wir auf verschiedenen Frequenzebenen und Zeitebenen diese Returns zerlegen und interpretieren können. Den ästhetischen Aspekt muss ich denke ich nicht besonders hervorheben. Das heißt, wir können hier auf eine ganz sufficente Art und Weise unsere Aktienrenditen zerlegen und darstellen. Ich mache das mal noch mal klein und gehe noch mal darauf ein, was denn passiert, wenn wir eine geometrische, braunische Molekularbewegung in die Returnzeit rein zerlegen möchten, wo wir nicht nur anhand der Returns die Unterschiede zwischen der Simulation und den Echtdaten sehen können, sondern wir werden gleich sehen, was denn passiert, wenn ich eine braunische Molekularbewegung zerlege und wir sehen, dass wir faktisch das Licht ausschalten. Das ist wie wenn ich die Lichtschalter ausschalte, zack Information weg, Frequenzinformation nicht vorhanden und jetzt können Sie sich natürlich auch auf einer ganz fachlich hohen Ebene erklären, warum Finanzmarktmodelle, die einer braunischen Molekularbewegung unterliegen, nicht in der Lage sein können, reale Finanzmarktdaten sauber darzustellen, weil reale Finanzmarktdaten inherent Frequenzinformation aufweisen, die sich über die Zeit auch noch verändern, das heißt dynamische Frequenzinformation, die ebenso ein stochastischer Prozess gar nicht haben kann. Im Grunde genommen ist eine braunische Molekularbewegung auch nichts anderes, wie gezogen aus einer Normalverteilung und wie können wir hier denn natürlich Frequenzen haben, die sich über verschiedene Ebenen bewegen. Das ist nicht möglich. Ich schließe das Ganze nochmal und das soll auch schon mein Schlusswort sein, Sie können hier rumspielen, nehmen Sie diesen Code, nehmen Sie andere Wavelets, nehmen Sie, Sie haben hier einige Funktionen gegeben. Nehmen Sie die andere Wavelets, nehmen Sie andere Zeit rein, andere Zeiträume, Sie können sich das auch für Bitcoins mal anschauen, wenn Sie an Blockchain-Technologie interessiert sind. Auf jeden Fall sind Sie hier jetzt in der Lage, eine kontinuierliche Waveletserlegung selbst zu erzeugen. Und mehr möchte ich zu dieser CVT eigentlich auch gar nicht mehr loswerden, weil wir dieses ganze Thema im Bereich der Aussicht in die Forschung Vorlesung nochmal auffassen werden. Den zweiten Teil, den ich Ihnen hier noch zeigen möchte und der ist relativ kurz, ist, wie Sie eine Diskrete Waveletserlegung vornehmen können. Und wir sehen hier, wir brauchen ja eigentlich nur drei Pakete, unser Wavelet Package, NumPy und Matplotlib und das ist eigentlich der Code von vorher. Wir erzeugen uns einen Grillensignal, lassen uns das Ganze ausgeben und danach erzeugen wir hier mehrere Dinge. Zum einen legen wir ein Wavelet fest und zum anderen machen wir hier nichts weiter, wie eben diese Filterbänke durchlaufen zu lassen. Und natürlich ist es so, nachdem diese Filtrierung durchgeführt würde, gehen wir her und zerlegen das, was der Filter ausgibt mit einem Wavelet. Und wir gucken uns die Ergebnisse an. Ich hätte auch hier gesagt, wir lassen das durchlaufen. Das heißt, wir sehen hier, ich ziehe das mal ein bisschen hübscher, das ist irgendwie etwas missraten. Ich habe gedacht, ich kann das so schön einstellen, dass man das alles schön untereinander sieht, aber irgendwie möchte der Computer heute nicht. Ich ziehe das nochmal in die Länge ein bisschen und dann sehen wir hier oben unser originales Grillensignal. Und wir sehen hier die Hochpässe und hier die Tiefpässe, wie Sie mit diesem Wavelet dann zerlegt werden. Und wir sehen hier die Approximationskoffizienten der Hochpastöne und hier sehen wir die Tiefpastöne sozusagen. Und dann können wir auf dieser Ebene feststellen, was denn für Frequenzen über die Zeit unser Grillensignal hier oben eigentlich besteht. Ich hoffe, Ihnen war das jetzt nicht zu schnell, sollte Ihnen dieses Video zu schnell gegangen sein. Und ich bin hier relativ zügig durch, um eben die Videolänge nicht ins Unermessliche laufen zu lassen. Dann haben Sie die Möglichkeit im Forum, im Moodle-Kurs zu posten oder eben Fragen in unserem nächsten Webinar zu stellen. Seien Sie neugierig, spielen Sie mit dem Code, benutzen Sie ihn nach Belieben. Ich hoffe, Sie haben was gelernt, ich hoffe, Sie hatten Spaß dabei. Bis dahin, alles Gute.