Verfasst am: 24.04.2014, 08:16
Titel: Anwendung von Befehlen nur für bestimmte Teile einer Matrix
Liebes MATLAB-Forum,
ich bin ein blutiger MATLAB-Anfänger und gerade dabei meine Bachelorarbeit im Financebereich zu schreiben. Ich habe mich zwar schon eingehend - auch in diesem Forum - eingelesen, jedoch komme ich an einigen Stellen einfach nicht weiter.
Ich habe einen Datensatz mit etwa 600.000 Optionskontrakten, die an 2035 verschiedenen Daten auslaufen.
Mein Ziel ist es für jedes einzelne Datum und jeden Kontrakt die implizite Volatilitat mit Hilfe des Befehls "blsimpv" zu berechnen und danach mit diesen Daten für jeden Tag eine lineare Regression laufen zu lassen.
Mein Problem ist nun folgendes: Wie schaffe ich es den Befehl zu geben "blsimpv" nur für ein bestimmtes Datum zu geben, soll heißen, dass ich die impliziten Volatilitäten eines jeden Tages in einem separatem Vektor stehen habe?
Ich wäre euch für eure Hilfe sehr dankbar. Ich hatte bisher meinen Datensatz in 2035 verschiedene Cell Arrays nach den einzelnen Daten aufgespalten und versucht dies mit einer for-Schleife zu bewerkstelligen. Leider bin ich aber an der Ausführung der Schleife gescheitert.
In der Folge hatte ich von meinem Betreuer den Tipp erhalten mit dem "unique" und "find" Befehlen zu arbeiten. Ich kann mir aber nicht erklären, wie mir diese dabei helfen sollen.. Meinungen und Ratschläge deshalb sehr erwünscht
Leider bin ich aber an der Ausführung der Schleife gescheitert.
Da wäre es dann hilfreich zu wissen, was genau du versucht hast (Code) und wo die Probleme aufgetreten sind. Wenn du einen verkleinerten Datensatz zur Verfügung stellen kannst, so dass man damit herumspielen kann, wäre das ideal.
es läuft sehr gut und ich bin fast am ziel meiner träume angelangt..
ein kleines mosaiksteinchen fehlt jedoch noch. um die regression zu starten muss an die angehängte datei in jedem cell array noch eine riehe mit einsen, um das intercept korrekt schätzen zu können. da die matrizen in den arrays unterschiedliche zeilananzahlen haben dachte ich mir mit folgendem befehl die reihen mit einsen zu erstellen und danach in die jeweiligen arrays einzufügen:
X = ones(sz)
führe ich diesen befehl per hand für einen array aus funktioniert das auch. bei meiner schleife kommt es jedoch zu einer fehlermeldung. sie sieht folgendermaßen aus:
erhalte ich genau einen vektor mit 117 zeilen voller einsen, wie ich ihn brauche
da die reihe mit den einsen unerlässlich für das schätzen des achsenabschnitts bei einer ols regression ist wäre es von großem vorteil das selbe für die 2034 verbleibenden arrays machen zu können.. problem nun klarer geworden bzw bin ich immer noch auf dem holzweg?
ich bin gerade dabei einige dinge zusammenzufassen bzw. zu vereinfachen. bei folgendem komme ich leider nicht zu meinem gewünschtem ergebnis, obwohl mir mein anstaz recht vernünftig erscheint.
ich will folgende beiden datensätze zur besseren übersichtlichkeit miteinander vereinen:
klappt es problemlos für einen array. ich weiß nur nicht was bei meiner schleife falsch läuft. es kommt zwar ein ergebnis ohne fehlermeldung dabei heraus, jedoch nicht sow ie ich mir das vorstelle:
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.