Thema Datum  Von Nutzer Rating
Antwort
Rot Kovarianz Matrix aus Preismatrix
29.04.2016 02:15:26 vbaffet
NotSolved

Ansicht des Beitrags:
Von:
vbaffet
Datum:
29.04.2016 02:15:26
Views:
1872
Rating: Antwort:
  Ja
Thema:
Kovarianz Matrix aus Preismatrix

Folgendes Problem:

Ich muss eine Funktion schreiben, die aus einer Matrix bestehend aus Preisen von nA Produkten und nD Tagen (diese matrix ist auf einem worksheet vorgegeben) eine varianz/ kovarianz matrix (dimension (nA, nA) erstellt.
Dabei sei ausdrücklich erwähnt, dass der Zwischenschritt über die Renditen zwischen den jeweiligen Tagen nur virtuell erfolgen darf, die Renditen also auf keinem worksheet auftauchen dürfen.
Bis jetzt bin ich so weit gekommen, der code funktioniert jedoch nicht:

1
2
3
4
5
6
7
8
9
10
11
Function fxCovar(mP As Range) As Variant
 
Dim rMat As Range 'Return Matrix
Dim covM, rM As Variant 'Return und Kovarianz Matrix
Dim nA, nD, i, j As Integer 'Anzahl der Produkte, Preise, 2 Loopvariablen
 
nA = mP.Columns.Count
nD = mP.Rows.Count
 
ReDim covM(nA, nA)
ReDim rM(nD-1, nA)
1
2
3
4
5
6
'Diese schleife berechnet die returnmatrix als variant
For i = 1 To nD - 1
    For j = 1 To nA
    rM(i, j) = WorksheetFunction.Log(mP(i + 1, j) / mP(i, j))
    Next j
Next i

 

1
2
3
4
5
6
7
'Return matrix 'variant in range umwandeln (Hier bin ich mir nicht sicher ob das möglich ist ein range zu erstellen, das   _ <span style="font-family: Arial, Verdana, sans-serif;">nicht auf einem workshet exisitiert)
</span><span style="font-family: Arial, Verdana, sans-serif;">
For i = 1 To nD - 1
</span><span style="font-family: Arial, Verdana, sans-serif;">    For j = 1 To nD
</span><span style="font-family: Arial, Verdana, sans-serif;">    Set rMat(i, j) = rM(i, j)
</span><span style="font-family: Arial, Verdana, sans-serif;">    Next j
</span><span style="font-family: Arial, Verdana, sans-serif;">Next i</span>
1
2
3
4
5
6
7
8
9
10
'Covarianzmatrix aus Return-Matrix range berechnen
For i = 1 To nA
    For j = 1 To nA
    covM(i, j) = WorksheetFunction.Covar(Range(rMat(1, i), rM(nD - 1, i)), Range(rMat(1, j), rMat(nD - 1, j)))
    Next j
Next i
 
fxCovar = covM()
 
End Function


Es hapert jedoch schätzungsweise an der Tatsache, dass ich entweder die Range der Renditen/Matrix auf ein worksheet schreiben muss (was nicht erlaubt ist) oder die covarianzmatrix am ende aus einem variant statt range ausrechne, was in meinen augen auch unmöglich ist.

Wäre super, wenn sich jemand findet, der mir helfen kann!
Danke im Voraus!

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Kovarianz Matrix aus Preismatrix
29.04.2016 02:15:26 vbaffet
NotSolved