Pythonで学ぶ定量的リスク管理
Jamsheed Shorish
Computational Economist
asset_returns のリターンから開始weights で portfolio_returns を計算portfolio_returns を losses に変換losses の 95% 信頼水準などで np.quantile() を計算
weights = [0.25, 0.25, 0.25, 0.25]portfolio_returns = asset_returns.dot(weights)losses = - portfolio_returnsVaR_95 = np.quantile(losses, 0.95)
scipy.stats から正規分布 norm をインポートtotal_steps を定義(1日=1440分)N を定義portfolio_losses の平均 mu と標準偏差 sigma を算出from scipy.stats import normtotal_steps = 1440N = 10000mu = portfolio_losses.mean() sigma = portfolio_losses.std()
N 回分の daily_loss ベクトルを初期化N 回のループloss ベクトルを計算norm.rvs() で標準正規から反復サンプルmu と sigma を 1/total_steps でスケールdaily_loss = np.zeros(N)for n in range(N):loss = ( mu * (1/total_steps) + norm.rvs(size=total_steps) * sigma * np.sqrt(1/total_steps) )
n の累積 daily_loss を生成np.quantile() で daily_loss の 95% 信頼水準などのVaRを算出
daily_loss = np.zeros(N) for n in range(N):loss = mu * (1/total_steps) + ... norm.rvs(size=total_steps) * sigma * np.sqrt(1/total_steps)daily_loss[n] = sum(loss)VaR_95 = np.quantile(daily_loss, 0.95)
e_covPythonで学ぶ定量的リスク管理