平均・分散モデルにおけるポートフォリオ最適化問題は「ポートフォリオの期待収益率が投資家の要求する期待収益率以上であるという制約のもとで、ポートフォリオの収益率の分散を最小化する投資比率を求める」2次計画問題として定式化されます。
最小化:
制約条件:
ここで、
![]() |
: 資産数 |
![]() |
: ポートフォリオの収益率の分散 |
![]() |
: 資産 ![]() ![]() |
![]() |
: 資産 ![]() |
![]() |
: 資産 ![]() ![]() |
![]() |
: 資産 ![]() |
![]() |
: ポートフォリオの期待収益率 |
![]() |
: 資産 ![]() |
![]() |
: 投資家の要求期待収益率 |
です。
参考文献
[1] 枇々木規雄,金融工学と最適化,朝倉書店,2001.
Excel (VBA) の Example
ここでは、nAG C Library の nag_opt_qp (e04nfc) 関数 (2次計画問題を解く関数)を用いて、ポートフォリオ最適化問題を解く Excel (VBA) の Example を紹介します。
今回のポートフォリオ最適化問題では、以下の 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) のインストーラーをダウンロードして、インストールを行ってください。
※ ダウンロードした 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 ファイルをダブルクリックするとインストーラーが起動します。