ポートフォリオ最適化

平均・分散モデル – Excel (VBA)

ホーム > 金融工学ライブラリ > ポートフォリオ最適化(平均・分散モデル) – Excel (VBA)

平均・分散モデルにおけるポートフォリオ最適化問題は「ポートフォリオの期待収益率が投資家の要求する期待収益率以上であるという制約のもとで、ポートフォリオの収益率の分散を最小化する投資比率を求める」2次計画問題として定式化されます。

最小化:

ポートフォリオの収益率の分散(目的関数)

制約条件:

ポートフォリオの期待収益率の制約

投資比率の合計の制約

資産 i の投資比率の制約

ここで、

資産数 : 資産数
ポートフォリオの収益率の分散 : ポートフォリオの収益率の分散
資産 i と資産 j の収益率の共分散 : 資産 添字 i と資産 添字 j の収益率の共分散
資産 i の投資比率 : 資産 添字 i の投資比率
資産 i と資産 j の収益率の相関係数 : 資産 添字 i と資産 添字 j の収益率の相関係数
資産 i の収益率の標準偏差 : 資産 添字 i の収益率の標準偏差
ポートフォリオの期待収益率 : ポートフォリオの期待収益率
資産 i の期待収益率 : 資産 添字 i の期待収益率
投資家の要求期待収益率 : 投資家の要求期待収益率

です。

参考文献

[1] 枇々木規雄,金融工学と最適化,朝倉書店,2001.

Excel (VBA) の Example

ここでは、nAG C Librarynag_opt_qp (e04nfc) 関数 (2次計画問題を解く関数)を用いて、ポートフォリオ最適化問題を解く Excel (VBA) の Example を紹介します。

今回のポートフォリオ最適化問題では、以下の QP1 タイプの目的関数を最小化します。
(特に、対称行列 対称行列 H に分散共分散行列を設定します。)

QP1:  QP1

本 Example は、日経 225 の過去のデータを用いて、ポートフォリオ最適化の計算を行います。

データは以下の論文のテスト問題の一つで、
OR–Library: http://people.brunel.ac.uk/~mastjjb/jeb/orlib/portinfo.html
に公開されている port5.txt を用いています。

"Heuristics for cardinality constrained portfolio optimisation"
Comp. & Opns. Res. 27 (2000) 1271-1302

このデータ(port5.txt)には以下の値が含まれています。

  • 資産数
  • 各資産の収益率の平均(期待収益率)と標準偏差
  • 資産間の収益率の相関係数

本 Example は、投資家の要求期待収益率 = 0.25%(0.0025)を入力パラメーターとして計算を行い、結果を出力します。

① Example のダウンロード

以下の Excel ワークシートファイル(Example)をダウンロードしてください。

mean_variance_portfolio_optimisation.xls

本 Example をご利用には、nAG C Library, Mark 25 for Windows 32-bit(製品コード: CLW3225DEL)が必要です。
下記の手順 ② ~ ③ に従って、nAG C Library (CLW3225DEL) のセットアップを行ってください。

② nAG C Library のダウンロードとインストール

以下の nAG C Library (CLW3225DEL) のインストーラーをダウンロードして、インストールを行ってください。

clw3225del_setup.exe (288 MB)

※ ダウンロードした exe ファイルをダブルクリックするとインストーラーが起動します。

③ nAG C Library のトライアルの申し込み

nAG C Library (CLW3225DEL) のご利用にはトライアルライセンスキーが必要です。
以下のウェブページから nAG C Library (CLW3225DEL) のトライアルの申し込みを行ってください。

nAG C Library (CLW3225DEL) のトライアルの申し込み

ご記入のメールアドレス宛てに、通常1営業日以内に、本製品を4週間ご利用いただけるトライアルライセンスキー(ライセンスファイル)をお送りいたします。

送られてきたライセンスファイルを、ユーザーフォルダー C:¥Users¥[ユーザー名] の直下に置いてください。

④ Example の実行

上記 ① でダウンロードした mean_variance_portfolio_optimisation.xls ファイルを開いてください。

「計算結果」シートを開き、「ポートフォリオ最適化」ボタンを押してください。

計算が行われ、結果が出力されます。

実行結果

※ 補足:nAG C Library のリンクについて

本 Example で利用している nAG ライブラリは CLW3225DE_nag.dll です。
(デフォルトの格納先は C:¥Program Files (x86)¥nAG¥CL25¥clw3225del¥bin¥CLW3225DE_nag.dll です。)

使用するライブラリと関数の宣言は、VBA コードに書かれています。

Alt + F11 キーを押すと、VBA エディターが起動します。

左側のプロジェクトエクスプローラーから「標準モジュール > Declarations」を開いてください。

本 Example で利用している nAG ライブラリ(CLW3225DE_nag.dll)と関数(e04nfc と e04xxc)の宣言が確認できます。

※ 補足:nAG C Library のマニュアルについて

nAG C Library のマニュアル(ライブラリマニュアル)では、nAG C Library が提供する関数の詳細(引数の仕様など)を調べることができます。

ライブラリマニュアルは、nAG のウェブサイトでご覧いただけます。

http://www.nag.com/numeric/cl/nagdoc_cl25/html/frontmatter/manconts.html

また、ライブラリマニュアルを PC にインストールしてローカルで閲覧することもできます。

setup_cl25_manual.exe (102 MB)

※ ダウンロードした exe ファイルをダブルクリックするとインストーラーが起動します。


関連情報
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks