【MVP検証】正規分布に従う変数の作成
全体を通じてやりたいこと
外れ値に対してロバストなポートフォリオの作成、検証をPythonで行う
参考サイト
https://commons.sk.tsukuba.ac.jp/wp-content/uploads/sites/13/2016/08/200520858.pdf
今回やること
正規分布に従う変数の作成
互いの相関係数を任意に設定(今回は0に設定)
参考サイト
それぞれが任意の分布に従う,相関を持つ2確率変数の(近似的)作り方メモ - Qiita
コード
使用関数
numpy.random.multitariate_normal
全体
import numpy as np import matplotlib.pyplot as plt import pandas as pd # メイン処理 if __name__ == '__main__': # 年率12%,標準偏差16%の正規分布、互いに独立 # パラメータ設定 config_return = 0.12 # 設定リターン config_var = 0.16 ** 2 # 設定分散 config_corr = 0 # 設定相関係数 return_list = [config_return] * 4 cov = np.diag([config_var] * 4) asset_name = ['asset1', 'asset2', 'asset3', 'asset4'] data = pd.DataFrame(np.random.multivariate_normal(return_list, cov, 10000), columns = asset_name) # 確認用 print(data.mean(axis = 0)) print(data.cov())
出力結果
asset1 0.118908 asset2 0.119569 asset3 0.121841 asset4 0.119605 dtype: float64 asset1 asset2 asset3 asset4 asset1 0.025623 0.000013 -0.000278 -0.000405 asset2 0.000013 0.025429 0.000467 -0.000148 asset3 -0.000278 0.000467 0.025539 0.000236 asset4 -0.000405 -0.000148 0.000236 0.025629
対角行列使うなら、相関係数を変数で設定する必要なかったなあ