原文鏈接:http://tecdat.cn/?p=22862
原文出處:拓端數據部落公眾號
如何使用Python通過蒙特卡洛模擬自動計算風險值(VaR)來管理投資組合或股票的金融風險。
金融和投資組合風險管理中的VaR?
VaR是 "風險價值 "的縮寫,是許多公司和銀行用來確定其公司內部金融風險水平的工具。風險值是為公司的投資而計算的,也可能是為檢查銀行或公司所管理的投資組合的風險水平。
該計算可以被認為是一種統計方法。它也可以簡化為以下語句
風險值是在一定的概率水平(置信區間)下將產生的最小損失或在一定的概率水平下將實現的最大損失。

上圖顯示了一個公司在α%的置信水平下可能面臨的最大損失。在個人層面上,VaR可以幫助你預測或分析你的投資組合可能面臨的最大損失。
蒙特卡洛模擬
蒙特卡洛模型是Stanislaw Ulam和John Neumann的心血結晶,他們在第二次世界大戰后開發了這個模型。該模型是以摩納哥的一個賭博城市命名的,這是因為賭博中存在機會和隨機性。
蒙特卡洛模擬是一個概率模型,它使用產生的隨機變量與經濟因素(期望收益率、波動率),來預測結果。該模型經常被用來計算風險和不確定性。
我們現在將使用蒙特卡洛模擬為我們的資產組合生成一組預測收益,這將有助於我們找出我們投資的風險值。
在Python中計算VaR
我們將首先通過導入所需的庫和函數
-
#導入所有需要的庫
-
import matplotlib.pyplot as plt
-
import numpy as np
-
import pandas as pd
為了我們項目的目的,我考慮了過去兩年的 股票。
-
-
for i in range(len): web.get_data(tickers[i]
-
stocks.tail()

下一步,我們將計算每個資產的組合權重。可以通過實現最大夏普比率來計算資產權重。
-
#年化收益率
-
historical_return(stocks)
-
#投資組合的樣本方差
-
sample_cov#夏普比率
-
EffFro(mu, Sigma, weight_bounds=(0,1)) #負數的權重界限允許做空股票
-
max_sharpe() #可以使用增加目標來確保單個股票的最小零權重
![]()
最大夏普比率的資產權重
資產權重將被用於計算投資組合的期望收益。
-
#VaR計算
-
rx2 = []#換為最大夏普比率的資產權重
-
list(sharpe.values())
現在,我們將把投資組合的股票價格轉換為累計收益,這也可以被視為本項目的持有期收益(HPR)。
tick = (tick +1).cumprod()

-
#畫出所有股票的累積/HPR的圖形
-
tick[col].plot()plt

現在,我們將挑選出每個資產的最新HPR,並使用.dot()函數將收益率與計算出的資產權重相乘。
-
sigma = pre.std()
-
price=price.dot(sh_wt) #計算加權值

在計算了投資組合的期望收益和波動率(期望收益的標准差)后,我們將設置並運行蒙特卡洛模擬。我使用的時間是1440(一天中的分鍾數),模擬運行20,000次。時間步長可以根據要求改變。我使用了一個95%的置信區間。
-
for j in range(20000): #20000次模擬運行(rtn/Time,sigma/ sqrt(Time),Time)
-
plt(np.percentile(daily_returns,5)

1440分鍾內一天的收益范圍 | 紅色 - 最小損失 | 綠色 - 最小收益
將收益率的分布圖可視化,我們可以看到以下圖表
-
plt.hist(returns)
-
plt.show()

輸出上限和下限的准確值,並假設我們的投資組合價值為1000元,我們將計算出應該保留的資金數額彌補我們的最低損失。
print(percentile( returns,5),percentile( returns,95)) VaR - 在5%的概率下,最小損失為5.7%,同樣,在5%的概率下,收益可以高於15%
![]()
每天的最低損失是1.29%,概率為5%。
所得金額將標志着每天彌補你的損失所需的金額。這個結果也可以解釋為你的投資組合在5%的概率下將面臨的最低損失。
總結
上面的方法顯示了我們如何計算投資組合的風險價值(VaR)。對於使用現代投資組合理論(MPT)計算一定數量的投資組合,有助於鞏固你對投資組合分析和優化的理解。最后,VaR與蒙特卡洛模擬模型配合使用,也可用於通過股價預測損失和收益。這可以通過將產生的每日收益值與各自股票的最終價格相乘來實現。

最受歡迎的見解
1.R語言基於ARMA-GARCH-VaR模型擬合和預測實證研究
