Passender Plot-Befehl gesucht < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Leider schaffe ich es nicht ganz, dass Mathematica mir das folgende plottet. Erst mal eine kurze Einleitung, was ich plotten möchte:
Die erwartete Rendite einer Aktie i sei [mm] r_i. [/mm] Ein Portfolio von Aktien hat dann die erwartete Rendite
[mm] r_P=\summe_{i=1}^{n}r_i*n_i [/mm]
, wobei [mm] n_i [/mm] der Anteil der i-ten Aktie im Portfolio ist und natürlich [mm] \summe_{i=1}^{n}n_i=1 [/mm] ist.
Die Varianz des Portfolios ergibt sich aus den einzelnen Varianzen der Aktien und deren Kovarianzen zu
[mm] Var[r_P]=\summe_{i=1}^{n}\summe_{k=1}^{n}n_i*n_k*Cov[r_i,r_k] [/mm]
, wobei [mm] Cov[r_i,r_i]=Var[r_i].
[/mm]
Die Standardabweichung ist wie immer [mm] \sigma_r=\wurzel{Var[r]}.
[/mm]
In meinem Fall sind alle Renditen [mm] r_i, [/mm] die Varianzen [mm] Var[r_i] [/mm] und die Korrelationskoeffizienten [mm] \rho_{i,j}, [/mm] mit denen sich dann auch die Kovarianzen errechnen lassen konstant. Nur die einzelnen Mengen [mm] n_i [/mm] bleiben als Parameter.
Was ich erreichen möchte ist ein Plot [mm] \sigma [/mm] über [mm] r_P [/mm] des Portfolios für alle möglichen Kombinationen von [mm] n_i. [/mm] Also alle Kombinationen die ich durch die gegebenen Werte [mm] (r_i, Var[r_i]) [/mm] erreichen kann, wenn ich nur die Anteile der einzelnen Aktien im Portfolio ändere.
Für n=2 und 3 konnte ich das schon mit ParametricPlot schaffen:
1: | ParametricPlot[
| 2: | {a*r1+b*r2+(1-a-b)*r3,
| 3: | Sqrt[a^2*s1^2+b^2*s2^2+(1-a-b)^2*s3^2+
| 4: | 2*a*b*s1*s2*r12+2*a*(1-a-b)*s1*s3*r13+2*b*(1-a-b)*s2*s3*r23]},
| 5: | {a,0,1}, {b, 0, 1}] |
(a, b und (1-a-b) sind dabei die [mm] n_i [/mm] und der Rest ausgedachte Zahlen (s=Standardabweichung, r=Korrelationskoeffizient))
Das Funktioniert auch alles, allerdings geht es bei n=4 nicht mehr, da man anscheinend keine weiteren Parameter verwenden kann. Fehlermeldung:
ParametricPlot::nonopt: Options expected
Wahrscheinlich ist ParametricPlot nicht geeignet. Mir würde eigentlich reichen, wenn nur die "Begrenzung" der Ergebnissmenge geplottet wird. Also nur die Umrandung um die Punkte die zu erreichen wären.
Hat da jemand einen Tipp? Danke!
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:06 Sa 01.08.2009 | Autor: | Sigma |
Hallo,
ich du hast schon richtig erkannt, dass Parametricplot nur bis 3 Aktien geht.
Im Fall n=4 gibt es keine analytische Lösung für die effiziente Portfoliomenge.
Um sich alle Kombinationen zu veranschaulichen kannst du entweder zufällig verschiedene Kombinationen der Aktien erzeugen(wie ich es gemacht habe). Oder du diskretisiert die Anteile der Aktien am Portfolio und errechnest für alle Möglichkeiten die Varianz und Rendite des Portfolios. Wobei ich die erste Variante bevorzugen würde.
Um nur die effiziente Portfoliomenge zu erhalten mache folgendes.
Maximiere die Portfoliorendite zu jeder möglichen Portfoliovarianz Oder
Minimiere die Portfoliovarianz zu jeder möglichen Portfoliorendite.
1: | r = {0.1, 0.2, 0.4};
| 2: | Kovarianz = ({
| 3: | {0.05, 0, -0.01},
| 4: | {0, 0.1, -0.02},
| 5: | {-0.01, -0.02, 0.1}
| 6: | });
| 7: | Lösung = Table[{i, 2}, {i, 10000}]; |
1: | For[i = 1, i <= 10000, i++,
| 2: | z = RandomReal[{0, 1}, 3];
| 3: | l = z/Plus @@ z;
| 4: | Lösung[[i]] = {Plus @@ Flatten[Kovarianz*Outer[Times, l, l]], r.l};
| 5: | ]
| 6: | ListPlot[Lösung]
|
Ich hoffe, das Beispiel funktioniert auch für n=4,5,...
Hab das mal schnell in mathematica erstellt. ich denke der Code geht bei etwas mehr Zeit auch noch übersichtlicher und effektiver zu gestalten.
Probiers mal aus.
gruß sigma
|
|
|
|