【问题标题】:Using lapply with quantmod to get monthly returns使用 lapply 和 quantmod 获得每月回报
【发布时间】:2016-11-11 21:53:42
【问题描述】:

我有以下代码,其目的是下载精选股票,然后计算这些股票的每月回报。在我使用 lapply 函数之前一切正常。此示例为每只股票返回相同的结果。其他尝试也错了

NB符号也可以像symbols <- c("AAPL", "GOOG", "GE")

tickerlist <- "sp5001.csv"  #CSV containing tickers on rows
startDate = as.Date("2013-10-01") #Specify what date to get the prices from
endDate = as.Date("2016-09-30")
stocksLst <- read.csv("sp5001.csv", header = F, stringsAsFactors = F)
symbols <- read.csv("sp5001.csv", header = F)$V1
symbols <-as.character(symbols)
nrstocks = length(stocksLst[,1])

data.env <- new.env()
getSymbols(symbols, env = data.env ,from= startDate ,to= endDate)
dataX <-do.call(merge, eapply(data.env, Ad)[symbols])

Temp <- lapply(symbols, function(symbols) {monthlyReturn(dataX)})
What_I_need <- do.call(merge.xts,Temp)

What_I_needdata.frame/xts 看起来像这样 - 这是错误的。

            monthly.returns monthly.returns.1 monthly.returns.2
2013-10-31     0.071194294       0.071194294       0.071194294
2013-11-29     0.070052705       0.070052705       0.070052705
2013-12-31     0.008901793       0.008901793       0.008901793
2014-01-31    -0.107696737      -0.107696737      -0.107696737

【问题讨论】:

    标签: r lapply quantmod


    【解决方案1】:

    如果您将创建变量Temp 的行更改为:

    Temp <- lapply(1:length(symbols), function(x) {monthlyReturn(dataX[,x])})
    

    它有效。

    我认为一种更易于维护、更灵活的方法来进行这种计算(也可以保留正确的列名)是使用包qmao(find it here),它有两个非常有用的功能PFRF 代表PriceFrameReturnFrame。即

        library(qmao)
        symbols <- c('AAPL','AMZN')
        data.env <- new.env()
        getSymbols(symbols, env = data.env ,from= startDate ,to= endDate)
        pf <- PF(symbols,env = data.env,silent=TRUE) # consolidated xts-object
        pfMth <- pf[endpoints(pf,on='months'),]   # get monthly endpoints
        pfMthRets <- ROC(pfMth,type='discrete')       
        tail(pfMthRets)
                          AAPL         AMZN
        2016-04-29 -0.13992110  0.111094283
        2016-05-31  0.07177292  0.095817020
        2016-06-30 -0.04265974 -0.009919871
        2016-07-29  0.09006276  0.060353265
        2016-08-31  0.02365190  0.013639745
        2016-09-30  0.06550429  0.088603187
    

    【讨论】:

    • 非常感谢您提供的有用提示。和 R 一样,我升级到 3.3.1 并且 qmao 在这个版本中还没有。我想我将不得不获得旧版本的 R
    • 很抱歉只需要加载一些其他包,但现在一切都很好。
    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2012-10-16
    • 2014-12-25
    相关资源
    最近更新 更多