我希望通过使用tq_mutate将无风险利率动态传递到投资组合分析函数SharpeRatio.annualized通过变异的PA函数rollapply。
编辑*目前,我无法通过组或列滚动无风险利率的时间段窗口以及投资组合。示例窗口将是120个月,并将延长退货和无风险利率。如下所示,我可以用“Rf =”代替数字或等式而不是滚动周期。如何在以下函数中包含此滚动无风险费率?
我有一个每月时间序列返回的元组,其中一个组(“组合”)包含RFR设置,看起来像这样,我还将RFR列为“return.rf”列,看看是否可行同样。
注意下面的tibble中的Sharpes没有减去RF
# A tibble: 2,133 x 13
# Groups: portfolio [9]
portfolio index return return.rf Sharpe_12 Sharpe_36 Sharpe_60
<chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl>
1 BH 1998-04-30 -0.0142 0.00430 NA NA NA
2 BH 1998-05-29 0.000259 0.00400 NA NA NA
3 BH 1998-06-30 -0.0525 0.00410 NA NA NA
4 BH 1998-07-31 -0.00949 0.00400 NA NA NA
5 BH 1998-08-31 0.000536 0.00430 NA NA NA
6 BH 1998-09-30 0.0486 0.00460 NA NA NA
7 BH 1998-10-30 0.00685 0.00320 NA NA NA
8 BH 1998-11-30 -0.00452 0.00310 NA NA NA
9 BH 1998-12-31 0.00615 0.00380 NA NA NA
10 BH 1999-01-29 0.0323 0.00350 NA NA NA
如果我注释掉Rf:
的传递,我的代码就会正常运行tidy_opt_roll_returns <- tidy_opt.returns %>%
tq_mutate(
# tq_mutate args
select = return,
mutate_fun = rollapply,
# rollapply args
width = 120,
align = "right",
FUN = SharpeRatio.annualized,
# mean args ## commented out next three lines ##
# Rf = return.rf,
# tq_mutate args
col_rename = "Sharpe_120")
谢谢!