我希望通过使用 tq_mutate 的变异 PA 函数 rollapply 将无风险利率动态传递到 PortfolioAnalytics 函数 SharpeRatio.annualized。
编辑* 目前,我无法通过组或列滚动无风险利率的时间段窗口以及投资组合。示例窗口为 120 个月,并且将针对回报和无风险利率进行延长。如下所述,我可以用“Rf =”代替数字或方程式,但不能代替滚动周期。如何在以下函数中包含此滚动无风险利率?
我有一个每月时间序列回报的小标题,其中一组(“投资组合”)包含看起来像这样的 RFR 设置,我还将 RFR 作为列“return.rf”包括在内,看看它是否也可以工作。
注意下面小标题中的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")
谢谢!