1

資産クラスのリターンから分散共分散行列をモデル化して推定する必要があるため、https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-forの第 6 章にある株式リターンの例を見ていました。 -ハッカー

これは、既知の平均と分散共分散行列を持つ多変量法線を使用したサンプルから始める簡単な実装です。次に、非情報プリロールを使用してそれを推定しようとします。

見積もりは既知の以前のものとは異なるため、実装が正しいかどうかはわかりません。誰かが私が間違っていることを指摘していただければ幸いです。

import numpy as np
import pandas as pd
import pymc as pm


p=3
mu=[.03,.05,-.02]
cov_matrix= [[.025,0.0075, 0.00175],[0.0075,.007,0.00135],[0.00175,0.00135,.00043]]

n_obs=10000
x=np.random.multivariate_normal(mu,cov_matrix,n_obs)

prior_mu=np.ones(p)

prior_sigma = np.eye(p)


post_mu = pm.Normal("returns",prior_mu,1,size=p)
post_cov_matrix_inv = pm.Wishart("cov_matrix_inv",n_obs,np.linalg.inv(cov_matrix))

obs = pm.MvNormal( "observed returns", post_mu, post_cov_matrix_inv, observed = True, value = x )

model = pm.Model( [obs, post_mu, post_cov_matrix_inv] )
mcmc = pm.MCMC()

mcmc.sample( 5000, 2000, 3 )

mu_samples = mcmc.trace("returns")[:]
mu_samples.mean(axis=0)
cov_inv_samples = mcmc.trace("cov_matrix_inv")[:]
mean_covariance_matrix = np.linalg.inv( cov_inv_samples.mean(axis=0) )
4

2 に答える 2