【问题标题】:Portfolio Optimization R - error投资组合优化 R - 错误
【发布时间】:2016-07-07 10:33:53
【问题描述】:

对不起,如果这是一个愚蠢的问题,但我已经尝试了 3 天来解决这个问题。每次我尝试运行投资组合优化并且无法弄清楚时,我都会收到此错误。

Error in assign(".objectivestorage", list(), envir = as.environment(.storage)) : 
  object '.storage' not found

我通常在第二个和第三个目标时也会收到此警告:

In addition: Warning message:
In is.na(le) : is.na() applied to non-(list or vector) of type 'NULL'

这是我的代码:

##Import Dataset
setwd("D:\\Dropbox\\FUND - SSIF\\Portfolio Analysis Package")
Stocktrak<- Return.read("SSIF_Data.csv", frequency = "d")
# Create Objects for data and column names

R <- Stocktrak[, 1:17]
colnames(returns) <- c("JEC", "BNS", "AAPL", "PEG", "SLB", "TSM", "HD",
  "MON", "GWO", "TOT", "XPH", "CVS", "UNP", "KORS", "GNTX", "NWC", "WFC")
funds <- colnames(R)

# Create an initial portfolio object with leverage and box constraints
init <- portfolio.spec(assets=funds)
init <- add.constraint(portfolio=init, type="leverage", min_sum=0.99, max_sum=1.01)
init <- add.constraint(portfolio=init, type="box", min=0.01, max=0.65)

# Create Objectives for eq_meanETL Portfolio Optimization
eq_meanETL <- add.objective(portfolio=init, type="return", name="mean")
eq_meanETL <- add.objective(portfolio=eq_meanETL, type="risk", name="ETL", arguments=list(p=0.95))
eq_meanETL <- add.objective(portfolio=eq_meanETL, type="risk_budget", name="ETL", min_concentration=TRUE, arguments=list(p=0.95))

# Optimize Portfolio
opt_eq_meanETL <- optimize.portfolio(R=R, portfolio=eq_meanETL, optimize_method="DEoptim", search_size=2000, trace=TRUE, traceDE=5)

【问题讨论】:

  • 我无法重现您的错误/警告。该代码适用于我的模拟回报nrs=600 Stocktrak=matrix(rnorm(nrs*17,0.1,0.05),nrow = nrs) #set any date Stocktrak&lt;- as.xts(Stocktrak,order.by = seq.Date(from=as.Date("2016-03-21")-nrs,by=1,length.out =nrs )) R &lt;- Stocktrak[, 1:17] colnames(R) &lt;- c("JEC", "BNS", "AAPL", "PEG", "SLB", "TSM", "HD", "MON", "GWO", "TOT", "XPH", "CVS", "UNP", "KORS", "GNTX", "NWC", "WFC") funds &lt;- colnames(R)

标签: r optimization finance portfolio


【解决方案1】:

将以下内容放在optimize.portfolio之前

.storage <<- new.env()

【讨论】:

    【解决方案2】:

    编辑

    更改跟踪 = FALSE

    它会起作用的。第一次来。

    优化组合

    opt_eq_meanETL

    【讨论】:

    • 这不是问题的答案。
    • 对不起,我改变了答案。第一次来这里。在包源代码中,我们有以下消息:#we can't pass trace=TRUE into constrained objective with DEoptim, because it requires a single numeric return 这就是我们收到错误的原因
    猜你喜欢
    • 2022-11-18
    • 1970-01-01
    • 2014-07-28
    • 2021-01-20
    • 2021-01-16
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多