r - 用 R 计算每月返回

标签 r for-loop finance portfolio

这可能是一个微不足道的问题,但不幸的是我无法解决它。我有 50 家公司的股票投资组合。我有每家公司在那一天的日期和收盘价。每家公司的数据因股票交易的日期而异。

我使用此代码来计算每日返回:

return=matrix(NA,nrow(companies),ncol(companies)-1)


for (j in 2:52){
  k=0
  for (i in 1:nrow(companies)){
    if (!is.na(companies[i,j]) & k==0) {
      base= companies[i,j]
      k=k+1
    }
    else {if ( k==1) {return[i,j-1] = ((companies[i,j]-base)/base)*100} 
          else {temp=0}
    }
  }
}
return[1:30,]

我现在想计算相同公司投资组合的每月返回。我用来计算这个的公式是:
Return = [(Price on Last day of month) - (Price on other day)]*100/(Price on last day of month)

我想在一年中重复这个过程 12 个月,并持续 12 年(因为这是我拥有的数据的持续时间)。我打算写一个 for 循环来做这个计算。有人可以帮我解决这个问题。不幸的是,我无法使用 quantmod 包,因为股票价格来自印度证券交易所,quantmod 无法从中读取价格。

最佳答案

你绝对应该使用 quantmod ,你可以。 quantmod方法 monthlyReturn, dailyReturn, ..., allReturns需要 xts时间序列作为输入。因此,如果您有每日数据(例如收盘价)和相应的日期,您可以构建您的时间序列并将其传递给所需的 quantmod方法。

例子:

library(package="quantmod")

prices <- c(7655.88, 7612.39, 7612.39, 7778.78, 7756.44, 7776.37)
dates <- as.Date(c("2012-12-26", "2012-12-27", "2012-12-30", "2013-01-01", "2013-01-02", "2013-01-03"))
ts <- xts(prices, dates)

dailyReturn(ts)
monthlyReturn(ts) # this will return bogus data because we don't have one month of data in this example

关于r - 用 R 计算每月返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14195059/

相关文章:

r - 基于平行向量的滤波向量

r - 在 tidymodels `predict()` dplyr::select( "Error in ` t 不存在的子集列中运行 )`: Can' 时出错。”

css - Shiny 的用户界面在最小化时扭曲

Java for 循环语法 : "for (T obj : objects)"

finance - FIX 消息分隔符

r - 在 R 中执行和采购脚本有什么区别

python - python中select语句中的mysql for循环

javascript - 如何将三维数组分割为三个 for in 循环?

r - 在 R 中使用协方差矩阵进行投资组合优化

web-services - 雅虎!金融 API DOW