平均・分散モデルにおけるポートフォリオ最適化問題は「ポートフォリオの期待収益率が投資家の要求する期待収益率以上であるという制約のもとで、ポートフォリオの収益率の分散を最小化する投資比率を求める」2次計画問題として定式化されます。
最小化:
制約条件:
ここで、
![]() |
: 資産数 |
![]() |
: ポートフォリオの収益率の分散 |
![]() |
: 資産 ![]() ![]() |
![]() |
: 資産 ![]() |
![]() |
: 資産 ![]() ![]() |
![]() |
: 資産 ![]() |
![]() |
: ポートフォリオの期待収益率 |
![]() |
: 資産 ![]() |
![]() |
: 投資家の要求期待収益率 |
です。
参考文献
[1] 枇々木規雄,金融工学と最適化,朝倉書店,2001.
C# の Example プログラム
ここでは、nAG Library for .NET の e04nf メソッド (2次計画問題を解くメソッド)を用いて、ポートフォリオ最適化問題を解く C# の 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 プログラムのダウンロード
以下の C# ソースファイル MeanVariancePortfolioOptimisation.cs が Example プログラムです。
データファイル port5.txt と共にご利用ください。
Example プログラムをご利用いただくには、nAG Library for .NET(製品コード: DTW3A02DAL)が必要です。
下記の手順 ② ~ ④ に従って、nAG Library for .NET のセットアップを行ってください。
② nAG Library for .NET のダウンロードとインストール
以下の nAG Library for .NET のインストーラーをダウンロードして、インストールを行ってください。
dtw3a02dal_setup-2b.exe (27.1 MB)
※ ダウンロードした exe ファイルをダブルクリックするとインストーラーが起動します。
③ nAG Library for .NET のトライアルの申し込み
nAG Library for .NET のご利用にはトライアルライセンスキーが必要です。
以下のウェブページから nAG Library for .NET のトライアルの申し込みを行ってください。
nAG Library for .NET のトライアルの申し込み
ご記入のメールアドレス宛てに、通常1営業日以内に、本製品を4週間ご利用いただけるトライアルライセンスキー(ライセンスファイル)をお送りいたします。
送られてきたライセンスファイルを、ユーザーフォルダー C:¥Users¥[ユーザー名] の直下に置いてください。
④ nAG Library for .NET のリンク(Visual Studio)
ライブラリのリンクは、Visual Studio のメニューバー「プロジェクト > 参照の追加」から、アセンブリ(DLL ファイル)を追加してください。
この際、ご利用のソリューションプラットフォーム(Any CPU / x64 / x86)に合わせて、DLL ファイルを選択してください。
-
Any CPU:
NagLibrary.dll -
x64:
NagLibrary64.dll -
x86:
NagLibrary32.dll
DLL ファイルのデフォルトの格納先は、C:¥Program Files (x86)¥nAG¥DTW02 フォルダーになります。
⑤ Example プログラムの実行(Visual Studio)
プロジェクトに Example ソースファイル MeanVariancePortfolioOptimisation.cs を追加し、ご利用のソリューション構成に合わせて適切な実行フォルダーにデータファイル port5.txt を置いてください。
その後、例えば、Visual Studio のメニューバー「デバッグ > デバッグなしで開始」を選択してください。
ビルドが行われた後、プログラムが実行されます。
※ 補足:nAG Library for .NET のマニュアルについて
nAG Library for .NET のマニュアル(ライブラリマニュアル)は、HTML ファイル形式(CHM ファイル)で提供されます。
デフォルトでは、
C:¥Program Files (x86)¥nAG¥DTW02¥NagLibrary.chm
ライブラリマニュアルでは、ご利用のメソッドの詳細(引数の仕様など)を調べることができます。
なお、ライブラリマニュアルは nAG のウェブサイトでもご覧いただけます。
http://www.nag.com/numeric/DT/nagdotnet_dtw02/html/contents.html