小编Vii*_*ama的帖子

Portfolio Analytics包中的自定义预期回报

我在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)

optimization portfolio r r-portfolioanalytics

8
推荐指数
1
解决办法
1065
查看次数

映射数据帧之间的值R.

让我们创建示例数据:

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)

r dataframe

5
推荐指数
1
解决办法
2423
查看次数

R嵌套的Tibble Map2比较

我正在尝试使用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 purrr

5
推荐指数
1
解决办法
178
查看次数

清理R中的清单清单

我在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)

r list purrr

5
推荐指数
1
解决办法
164
查看次数