我在Portfolio Analytics包中加入自定义预期回报时遇到问题.通常预期回报是一些专业期望/观点,或与基本指标分开计算.Portfolio Analytics允许创建自定义时刻函数来计算过去回报的时刻,但我不明白如何将已经计算的回报合并到优化问题中.感谢任何帮助,这里是一个小示例数据集:
#Download package and sample returns
library(PortfolioAnalytics)
library(PerformanceAnalytics)
data(edhec)
returns <- tail(edhec[,1:4], 10)
#Example expected return xts that I'm usually working with. Calculated separately.
N <- 10
M <- 4
views <- as.xts(data.frame(matrix(rnorm(N*M,mean=0,sd=0.05), N, M)), order.by = index(returns))
colnames(views) <- colnames(returns)
Run Code Online (Sandbox Code Playgroud)
让我们创建一些基本的投资组合.
pf <- portfolio.spec(assets = colnames(returns))
pf <- add.constraint(portfolio = pf, type = "full_investment")
pf <- add.constraint(portfolio = pf, type = "long_only")
pf <- add.objective(portfolio = pf, type = "return", name = "mean")
pf <- add.objective(portfolio = …Run Code Online (Sandbox Code Playgroud) 让我们创建示例数据:
df <- data.frame(date=c("2017-01-01","2017-01-02", "2017-01-03", "2017-01-04", "2017-01-05"), X1=c("A", "B", "C", "D", "F"),
X2=c("B", "A", "D", "F", "C"))
df2 <- data.frame(date=c("2017-01-01","2017-01-02", "2017-01-03", "2017-01-04", "2017-01-05"),
A=c("3", "4", "2", "1", "5"),
B=c("6", "2", "5", "1", "1"),
C=c("1", "4", "5", "2", "3"),
D=c("67", "67", "63", "61", "62"),
F=c("31", "33", "35", "31", "38"))
Run Code Online (Sandbox Code Playgroud)
所以我有两个数据框,我希望按日期和X1和X2匹配df2到df的值,并为这些创建新的变量.这对我来说很棘手的是df2中的匹配值是在colnames中.最终结果应如下所示:
> result
date X1 X2 Var1 Var2
1 2017-01-01 A B 3 6
2 2017-01-02 B A 2 4
3 2017-01-03 C D 5 63
4 2017-01-04 D F 61 31 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用map2比较嵌套的小标题列。这是我的数据格式:
> tbl
# A tibble: 3 x 3
ID data.x data.y
<chr> <list> <list>
1 a <tibble [2 x 2]> <tibble [2 x 2]>
2 b <tibble [2 x 2]> <tibble [2 x 2]>
3 c <tibble [2 x 2]> <tibble [2 x 2]>
Run Code Online (Sandbox Code Playgroud)
从列名的角度来看,data.x和data.y中的小滴是相同的,值可能不同。我想从val列中获取最大值。我认为这可以工作,但只会为data.x返回max。我不完全了解map2的工作原理。
tbl %>%
mutate(col1 = map2_dbl(data.x, data.y, ~ max(.$val)))
Run Code Online (Sandbox Code Playgroud)
结果应该是:
# A tibble: 3 x 4
ID data.x data.y col1
<chr> <list> <list> <dbl>
1 a <tibble [2 x 2]> <tibble [2 x 2]> 7. …Run Code Online (Sandbox Code Playgroud) 我在R中有多个级别列表有问题.这是我的数据结构的一个小例子.
library(purrr)
> example
[[1]]
[[1]][[1]]
id.value id.name value
1 2 Tim -1.68956
2 4 Jack 1.23950
3 5 Mary -0.10897
4 3 Joseph -0.11724
5 1 Kermit 0.18308
[[1]][[2]]
id.value id.name value
1 6 Tim 0.50381
2 2 Jack 2.52834
3 1 Mary 0.54910
4 4 Joseph 0.23821
5 5 Kermit -1.04889
6 3 Red 1.29476
[[1]][[3]]
id.value id.name value
1 4 Tim -0.47279
2 1 Jack -1.06782
3 2 Mary -0.21797
4 3 Joseph -1.02600
5 5 Kermit …Run Code Online (Sandbox Code Playgroud)