【发布时间】:2012-12-21 03:06:49
【问题描述】:
这可能是一个无关紧要的问题,但不幸的是我无法解决它。我有 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 无法从中读取价格。
【问题讨论】:
-
您的数据日期如何? 2001-09-11 ?
-
如果我能用
quantomod做到这一点,我的第一反应就是格式化我的数据以使用这个好包。 -
@agstudy 是对的:编写一两行代码来读取 IndianStock 格式并将其写入
quantmod识别的格式会简单得多。 -
@CarlWitthoft 也是对的。将数据导入 R 应该不是很困难。但是,如果是,您很可能使用 yahoo 作为数据源。例如,尝试
getSymbols(c("BPCL.NS", "HPCL.BO"), src="yahoo")
标签: r for-loop finance portfolio