我正在尝试对由一篮子ETF组成的投资组合的绩效进行建模。为此,我正在使用T型copula。目前,我已将边际(即各个ETF的表现)指定为正态,但是,我想使用Student t分布而不是正态分布。
我已经从QRM软件包中研究了fit.st()
方法,但是不确定如何将其与copula
软件包结合使用。
我知道如何实现正态分布的边距:
mv.NE <- mvdc(normalCopula(0.75), c("norm"),
list(list(mean = 0, sd =2)))
除了t分布外,我该怎么做?
答案 0 :(得分:2)
您需要做的就是使用tCopula
而不是normalCopula
。您需要设置t-copula的参数和自由度。并且您还需要指定边距。
因此,这里我们将normalCopula
替换为tCopula
,而df=5
是自由度。两种页边距都是正常的(根据需要)。
mv.NE <- mvdc(tCopula(0.75, df=5), c("norm", "norm"),
+ list(list(mean = 0, sd =2), list(list(mean = 0, sd =2))))
结果是:
Multivariate Distribution Copula based ("mvdc")
@ copula:
t-copula, dim. d = 2
Dimension: 2
Parameters:
rho.1 = 0.75
df = 5.00
@ margins:
[1] "norm" "norm"
with 2 (not identical) margins; with parameters (@ paramMargins)
List of 2
$ :List of 2
..$ mean: num 0
..$ sd : num 2
$ :List of 1
..$ mean:List of 2
.. ..$ mean: num 0
.. ..$ sd : num 2
对于t-margins
,请使用此:
mv.NE <- mvdc(tCopula(0.75), c("t","t"),list(t=5,t=5))
Multivariate Distribution Copula based ("mvdc")
@ copula:
t-copula, dim. d = 2
Dimension: 2
Parameters:
rho.1 = 0.75
df = 4.00
@ margins:
[1] "t" "t"
with 2 (not identical) margins; with parameters (@ paramMargins)
List of 2
$ t: Named num 5
..- attr(*, "names")= chr "df"
$ t: Named num 5
..- attr(*, "names")= chr "df"