【資產配置】風險管理
介紹如何衡量投資組合風險,包括股價最大回檔(Max Drawdown)與VaR(Value at Risk)
原創不易,若轉載請先告知,本人保有法律追訴權
警語:本文為學術目的探討,不表示任何實質投資建議,本部落格也不為投資損益負責,投資人須自負盈虧。
Abstract
本文介紹了標準差之外幾種衡量投資組合風險的方法,包括股價最大回檔(Max Drawdown),VaR(Value at Risk)的四種計算方法。
如合作投資組合的風險管理
在【資產配置】第二代資產配置理論:股債平衡中介紹只包含股票和債券的股債平衡投資組合,其原理和適用的經濟環境假設。現在,我們用風險管理的角度來看待這個投資組合,首先我們先回顧一下單純投資股票或債券,以及等比重分配三種不同情況下的報酬率時間序列
Drawdown
最大回檔描述的是日報酬從前一段時間最高點滑落的程度,可以看到如果單純只持有股票的話,最大回檔可以到恐怖的40%,也就是從年初投入了100萬,到年底只剩下40萬的概念,真的是一夜跌回解放前。不過,直得慶幸的是股債平衡的投資組合看起來能夠顯著的降低了單純持有股票的報酬率的最大回檔,甚至也比單純持有債券的最大回檔要來得小,可以說是十分穩健的方法。
VaR (Value at Risk)
VaR 借用了機率論中inverse cdf的概念,用來代表單位期間內在給定的信心水準下的最大損失。換句話說,99%的VaR=-2%代表我們有99%的信心最大損失不會超過2%,有了概念之後的下一個問題是:我們要如何估計報酬率的機率密度函數Prob(Return)呢?以下介紹4種估計算法:Historical VaR,Conditional VaR,Parameter VaR,Monte Calo VaR
Historical VaR
即直接透過歷史資料來當作機率分配函數
def get_VaR_historical(s, pct=99):
"""Default VaR at 99%
s: Accumalted portfolio returns
"""
assert len(s.shape)==1, 's should be a pandas seris !'
# Calculate historical VaR(%)
VaR = np.percentile(s, 100-pct)
# Sort the returns for plotting
sorted_rets = s.sort_values()
return VaR
VaR = get_VaR_historical(portfolio_dd['ret_portf'], pct=99)
Conditional VaR (CVaR)
和Historical VaR相同的是直接透過歷史資料來當作機率分配函數,不同的是會把尾端分配的報酬率損失分配取平均值,因此能夠周詳地考慮到尾端風險
def get_VaR_conditional(s, VaR):
"""conditoinal VaR
s: Accumalted portfolio returns
"""
# Historical CVaR 95
CVaR = np.mean(s[s<VaR])
# Sort the returns for plotting
sorted_rets = sorted(s)
get_VaR_conditional(portfolio_dd['ret_portf'], VaR)
Parameter VaR
假設一個機率分配後,透過報酬率的各階動差求得該分配的參數,之後在以inverse cdf求解,下圖是常態分配的例子:
def get_VaR_param(s, confd_level=99):
"""Default VaR at 99%
s: pandas seris
confd_level: confident level
"""
from scipy.stats import norm
pct = (100-confd_level)/100
mu = np.mean(s)
vol = np.std(s)
# Calculate Parametric VaR
VaR = norm.ppf(pct, mu, vol)
print('Mean: {0}\nVolatility: {1}\nVaR({2}%):{3} '.format(mu, vol, confd_level, VaR))
return mu, vol, VaR, pct*100Mean: 5.63625187478066
Volatility: 3.0208062854089834
VaR(99%):-1.3911944051697382
Monte Calo VaR
和Parameter VaR相同之處在於假設一個機率分配後,透過報酬率的各階動差求得該分配的參數,不同之處在於針對該分配或是多個機率分佈進行蒙地卡羅模擬,之後在以蒙地卡羅模擬的結果作為VaR的機率分配
Parametric VaR(99%): -129.98903765459687%
Conclusion
本文介紹了標準差之外幾種衡量投資組合風險的方法,包括股價最大回檔(Max Drawdown),VaR(Value at Risk)的四種計算方法。然而,要注意的2008年的次貸風暴有一部分的問題是因為VaR值的安全性和穩定度被高估了,事實上前兩種VaR的算法會受到out-of-sample bias的影響使我們低估其損失,後兩種則是會因常態分配的不適當假設使我們忽略了金融市場尾端事件的發生頻率,因此使用任何量化工具都務必釐清其侷限和缺陷,否則只會淪為data miner的loser