【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

対角行列使うなら、相関係数を変数で設定する必要なかったなあ