複数の株式銘柄から構成されるポートフォリオの、リターン(投資収益率)とリスク(標準偏差)を求めるプログラムを作成するときに、行列の計算式をVBAでExcelシートにどうやってセットするのかを説明します。

結論から言うと、「range().FormulaArray()」を使います。

投資分析の流れを説明します。

(1)指定期間の複数銘柄の日足株価を取得します。

(2)日次リターン(投資収益率)を計算します。

(3)リスク(標準偏差)を計算します。

最初に、個々の銘柄の相関係数を計算してから、標準偏差の対角行列を作成します。

次に、相関係数を使って分散共分散を計算して、日率のリスク(標準偏差)と年率のリスクを計算します。

最後に、個々の銘柄の構成割合と分散共分散行列から、ポートフォリオのリスク(標準偏差)を計算します。

分散共分散行列の表の先頭セル(”C33″)にセットする計算式と、セットするためのVBAソースは以下の通りです。初めて、「.FormulaArray()」を使いました。

計算式 {=MMULT(MMULT(C25:F28,C17:F20),C25:F28)}

VBAソース Range(“C33:F36”).FormulaArray = “=MMULT(MMULT(C25:F28,C17:F20),C25:F28)”