WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Korrelation zwischen zwei Zufallsprozesse

 

goalyralf
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2010, 11:30     Titel: Korrelation zwischen zwei Zufallsprozesse
  Antworten mit Zitat      
Hallo liebe Forum-Mitglieder,

ich habe nur ne kurze Frage und vll ist einer so freundlich und kann sie mir beantworten.

In meiner Monte Carlo Simulation habe ich zwei Zufallsprozesse. Eine geometrisch brownsche Bewegung und einen mean reversion Prozess.

Bisher sehen die zwei so aus und die Simulation funktioniert:

R(:, a)=R(:,a).*exp((my(:,a)-lam_R*sigma_t-sigma_t^2/2)+sigma_t*anti(a,1)*R_randn);

gamma_next(:, a)=gamma(:,a)*exp(-k_gamma)+(1-exp(-k_gamma))*(gamma_quer-lam_gamma*phi_t/k_gamma)+sqrt((1-exp(-2*k_gamma))/(2*k_gamma))*phi_t*anti(a,1).*gamma_randn;

Ich möchte jetzt gerne, dass die zwei Zufallsvariablen miteinander um 0,5 korreliert sind, da normalerweise sich die Kosten in die gleiche Richtung wie der Umsatz bewegen.

Hat hier zufälligerweise einer eine Lösung am Start? Ihm wäre ich sehr dankbar...

Thanks,

Ralf Smile
Private Nachricht senden Benutzer-Profile anzeigen


Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 26.08.2010, 12:38     Titel:
  Antworten mit Zitat      
Hi,

gib doch einfach in den Commandfenster:
Code:

doc corr % für autokorrelation und
doc xcorr % für kreuzkorrelation
 

Ansonsten kann du dir folgende Links mal anschauen:
http://www.koders.com/matlab/fid578.....19C85A008F66DFA27FD4.aspx
http://www.aos.wisc.edu/~dvimont/matlab/Stat_Tools/corr.html
http://cran.r-project.org/doc/contrib/Hiebeler-matlabR.pdf

Gruß,
Vito
Private Nachricht senden Benutzer-Profile anzeigen
 
goalyralf
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2010, 18:05     Titel:
  Antworten mit Zitat      
Hallo Vito

Danke für den Hint, aber der bringt mich momentan auch nicht all viel weiter.

Ich will eigentlich nur, dass wenn der erste random generator bspw. 0.7 zieht, dass dann der zweite random generator nicht -0.7 zieht, sondern eine korrelation von 0.5 besitzt und somit bspw. 0.5 zieht...

Wäre euch sehr dankbar, wenn das jemand knacken könnte, da meine DA-Abgabe relativ zeitnah erfolgen muss Smile

Vielen Dank,

Ralf
Private Nachricht senden Benutzer-Profile anzeigen
 
Vladi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2010, 09:30     Titel:
  Antworten mit Zitat      
Hallo Ralf,

zwei korrelierte Prozesse kannst du folgendermaßen entkoppeln:

Sei P1 und P2 deine beiden Prozesse mit Wiener Prozessen W1 und W2 und Korrleation r zwischen W1 und W2, dann gilt:
Code:

dW2 = r * dW1 + sqrt(1 - r^2)dW3
 

wobei W3 unabhängig von W1 ist, das d vor den Prozesses steht für das Inkrement.
Die Aussage gilt für die Inkremente der Bewegungen, müsste aber auch für die Lösung gelten.
Du benutzt
Code:
weil die Zuwäche der Brownschen bewegungen normal verteilt sind. Das gleiche machst du hier jetzt auch.
Allerdings berechnest du den Wert W2 über obige Formel.

Viele Grüße
der Vladi
 
goalyralf
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2010, 19:43     Titel:
  Antworten mit Zitat      
Hallo Vladi,

vielen Dank für deine ausführliche Antwort. Ich habe es soeben in die Simulation eingebaut und Sie läuft jetzt mit Korrelation durch Smile

Ich hoffe, dass ich es so richtig eingebaut habe?
R_randn=randn(n,1);
dummy_gamma=randn(n,1);
gamma_randn=rho_R_gamma(i)*R_randn+sqrt(1-rho_R_gamma^2)*dummy_gamma;

kannst du mir eventuell noch freundlicherweise sagen, wieso der Wurzelterm hinzukommt bzw. wo ich dies nachlesen könnte, damit ich dann in der Lage bin diesen Zusammenhang meinem Betreuer zu erklären? Wäre super lieb von dir?!? Hab zwar Statistik als Spezialisierung aber dieser Term ist mir neu...

Nochmals herzlichen Dank und dir ein schönes Wochenende,

Viele Grüße,

Ralf
Private Nachricht senden Benutzer-Profile anzeigen
 
goalyralf
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2010, 11:02     Titel:
  Antworten mit Zitat      
Hallo Vladi, hallo Forum

habe nochmals nachgedacht und dein Tipp ist super, wenn ich korrelierte Prozesse habe, aber ich will doch erst eine Korrelation erzeugen.

beisp. dW1*dW2=r*dt

reicht das, wenn ich dann einfach folgendes eingebe?
Code:

R_randn=randn(n,1);
gamma_randn=randn(n,1)

R_randn*gamma_randn=r*t ????
 


ich muss gamma_randn so erzeugen, dass die Korrelation zwischen gamma_randn und R_randn mit 0,5 korreliert ist...

Vielleicht kann mir da jemand noch nen coolen Tipp geben...

Nochmals vielen Dank,

Ralf

Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Vladi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2010, 13:31     Titel:
  Antworten mit Zitat      
Hallo Ralf,

so genau versteh ich deinen letzten Beitrag nicht. dW1 * dW2 = r dt ist eine andere Schreibweise um zu betonen, dass die beider brownschen Inkremente korreliert sind. Wenn man genau hinsieht, erkennt man, dass die Korrelation sich auf die Inkremente bezieht. Es sind nicht die Pfade korreliert. Das ist wichtig zu verstehen...

Du kannst das z.B.: in "Paul Glasserman: Monte Carlo Methods in Financial Engeneering" (Seite 71, "2.3.3 Generating Multivariate Normals")

Grob gesagt: Die Korrelationsmatrix S lässt sich mittels Cholesky Zerlegung eindeutig, bis aufs Vorzeichen, in eine Dreiecksmatrix L zerlegen, so dass S = L*L'.
Dann berechnest du X_i = mu_i + L_i*Z_i mit Z_i ~ N(0,1) und bekommst dann X_i ~ N(mu_i, S_i).

Viele Grüße
der Vladi
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.