问题
I am new to R. I am using package "PerformanceAnalytics" to calculate Component VaR of portfolio.
If I use gaussian method, it returns contribution.
> VaR(edhec, p=.95, method="gaussian", portfolio_method="component")
no weights passed in, assuming equal weighted portfolio
$VaR
[,1]
[1,] 0.01193358
$contribution
Convertible Arbitrage CTA Global Distressed Securities Emerging Markets Equity Market Neutral Event Driven Fixed Income Arbitrage
0.0014400703 0.0003687009 0.0012961865 0.0032090406 0.0003479361 0.0013848605 0.0010051944
Global Macro Long/Short Equity Merger Arbitrage Relative Value Short Selling Funds of Funds
0.0011151866 0.0015860006 0.0004412756 0.0009265836 -0.0027498306 0.0015623733
$pct_contrib_VaR
Convertible Arbitrage CTA Global Distressed Securities Emerging Markets Equity Market Neutral Event Driven Fixed Income Arbitrage
0.12067381 0.03089608 0.10861675 0.26890849 0.02915606 0.11604738 0.08423244
Global Macro Long/Short Equity Merger Arbitrage Relative Value Short Selling Funds of Funds
0.09344947 0.13290235 0.03697764 0.07764507 -0.23042800 0.13092245
>
But If I use historical method it just returns a single portfolio level value
> VaR(edhec, p=.95, method="historical", portfolio_method="component")
no weights passed in, assuming equal weighted portfolio
[1] 0.01439231
>
Is this correct? Am I missing something?
EDIT
I want to calculate component VaR of each part using historical simulation method.
回答1:
The 'historical' method is not a 'simulation' method. It is a measure of the realized historical loss quantile.
I have added historical contribution to PerformanceAnaltytics
in v 1.4.3574 on R-Forge.
Your example now produces:
> VaR(edhec, p=.95, method="historical", portfolio_method="component")
no weights passed in, assuming equal weighted portfolio
$hVaR
hVaR 95%
0.01419502
$contribution
Convertible.Arbitrage CTA.Global Distressed.Securities Emerging.Markets Equity.Market.Neutral Event.Driven Fixed.Income.Arbitrage Global.Macro Long.Short.Equity
-0.0006396664 -0.0001887839 -0.0007621405 -0.0020091076 -0.0001331756 -0.0008771216 -0.0004113300 -0.0006202640 -0.0010782781
Merger.Arbitrage Relative.Value Short.Selling Funds.of.Funds
-0.0002735736 -0.0005046562 0.0012263158 -0.0008257281
$pct_contrib_hVaR
Convertible.Arbitrage CTA.Global Distressed.Securities Emerging.Markets Equity.Market.Neutral Event.Driven Fixed.Income.Arbitrage Global.Macro Long.Short.Equity
0.09012547 0.02659862 0.10738139 0.28307218 0.01876371 0.12358159 0.05795412 0.08739178 0.15192344
Merger.Arbitrage Relative.Value Short.Selling Funds.of.Funds
0.03854501 0.07110328 -0.17278113 0.11634054
It is available from SVN now, should be available in binary form 'soon', and will be included in the next release of PerformanceAnalytics
回答2:
Leaving off the portfolio_method="component"
part returns all of the individual percent contributions.
> VaR(edhec, p=.95, method="historical")
Results:
Convertible Arbitrage CTA Global Distressed Securities Emerging Markets
VaR -0.01916 -0.0354 -0.018875 -0.044605
Equity Market Neutral Event Driven Fixed Income Arbitrage Global Macro
VaR -0.006385 -0.02254 -0.00929 -0.01624
Long/Short Equity Merger Arbitrage Relative Value Short Selling Funds of Funds
VaR -0.02544 -0.013455 -0.013175 -0.07848 -0.021265
Though why that is, I'm not sure, as I'm not familiar with the package or VaR in general.
help(VaR)
does seem explicit to the behaviour. Not to my untrained eyes anyway.
来源:https://stackoverflow.com/questions/27243094/no-contribution-in-component-var-using-historical-method-in-r