Python 中的定量风险管理
Jamsheed Shorish
Computational Economist
asset_returns 的收益开始weights 计算 portfolio_returnsportfolio_returns 转为 losseslosses 计算 np.quantile()(如 95% 置信水平)
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 导入正态分布 normtotal_steps(1 天 = 1440 分钟)Nportfolio_losses 的均值 mu 与标准差 sigmafrom scipy.stats import normtotal_steps = 1440N = 10000mu = portfolio_losses.mean() sigma = portfolio_losses.std()
N 次运行初始化 daily_loss 向量N 次运行loss 向量norm.rvs() 从标准正态分布反复抽样total_steps 缩放的 mu 和 sigma 进行抽样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_lossnp.quantile() 在 daily_loss 上计算 VaR(如 95% 置信水平)
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 中的定量风险管理