Beispiel #1
0
def gaussian_portfolio(p, w, mu, sigma):
	alpha = utils.set_alpha_prob(p)
	p = alpha
	location = w.dot(mu)
	pm2 = portm2(w, sigma)
	dpm2 = derportm2(w, sigma)
	qnorm = stats.norm.ppf(alpha)
	VaR = -location -  qnorm * np.sqrt(pm2)
	derVaR = mu - qnorm * (0.5 * dpm2) / np.sqrt(pm2)
	contrib = w.dot(derVaR)
	pct_contrib = contrib / VaR
	if (abs(contrib.sum() - VaR) > 0.01 * abs(VaR)):
		raise Exception("Contribution does not add up")
	else:
		ret = 
	return ret
Beispiel #2
0
def gaussian(R, p):
	alpha = utils.set_alpha_prob(p)
	m2 = utils.centered_moment(R, 2)
	VaR = -R.mean() - stats.norm.ppf(alpha) * np.sqrt(m2)
	return VaR