使用数据帧中堆叠格式的协方差矩阵计算 R 中的投资组合方差

问题描述 投票:0回答:1

我的 cov 矩阵和权重位于 2 个独立的数据框中,我想计算投资组合方差(对于每个日期的每个投资组合,为了简单起见,我的示例只有 1 个投资组合和 1 个日期):

weights <- data.frame(Portfolio = c("P1", "P1", "P1"),
    Date = c("2008-03-31", "2008-03-31", "2008-03-31"),
    ID = c("Asset1", "Asset2", "Asset3"),
    Wgt = c(0.1, 0.2, 0.3))

covar <- data.frame(
    Date = c("2008-03-31", "2008-03-31", "2008-03-31", "2008-03-31", "2008-03-31", "2008-03-31"),
    ID1 = c("Asset1", "Asset2", "Asset3", "Asset2", "Asset3", "Asset3"),
    ID2 = c("Asset1", "Asset1", "Asset1", "Asset2", "Asset2", "Asset3"),
    cov = c(0.011, 0.012, 0.013, 0.022, 0.032, 0.033)
)
r variance portfolio
1个回答
0
投票

如果我正确理解您的问题,您需要按

Portfolio
Date
进行分组,并创建一个新列来计算
Wgt
列的方差。

library(dplyr)

P_Variance <- weights %>% 
  group_by(Portfolio, Date) %>% 
  mutate(Var = var(Wgt))
> P_Variance
# A tibble: 3 × 5
# Groups:   Portfolio, Date [1]
  Portfolio Date       ID       Wgt   Var
  <chr>     <chr>      <chr>  <dbl> <dbl>
1 P1        2008-03-31 Asset1   0.1  0.01
2 P1        2008-03-31 Asset2   0.2  0.01
3 P1        2008-03-31 Asset3   0.3  0.01

我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.