根据Panel Data R计算月收益

时间:2018-09-05 16:27:41

标签: r finance

不幸的是,我有一个很大的数据集,而VBA却要处理很多问题。因此,我希望R能帮助我。

我有以下数据:

ID month Price      
1   1    0,1   
1   2    0,2  
1   3    0,3  

2   1    0,1   
2   2    0,2  
2   3    0,2   

我想添加一个标记为“收益”的第四列,其中显示每月收益。我尝试了一个循环,但不幸的是,它没有产生我想要的结果。

所需结果和收益计算:returnt = Pt / Pt-1 -1

ID month Price   return   
1   1    0,1   
1   2    0,2     1
1   3    0,3     0,5

2   1    0,1   
2   2    0,2     1
2   3    0,2     0,5


In VBA my code looks like this:

Dim i as integer
dim j as integer

for i= 1 to 10
j= i + 1

If cells(i,1) = cells (j,1) then
cells(j, 4) = cells(j,3) / cells(i,3) - 1 
Else cells(j, 4)  = 0
End if
next i

2 个答案:

答案 0 :(得分:1)

最后使用注释中的数据创建一个返回函数returnfun,然后使用Price将其分别应用于每个ID的{​​{1}}向量。不使用任何软件包。

ave

给予:

returnfun <- function(x) c(NA, diff(x) / head(x, -1))
transform(DF, Returns = ave(Price, ID, FUN = returnfun))

或者像这样用动物园定义 ID month Price Returns 1 1 1 0.1 NA 2 1 2 0.2 1.0 3 1 3 0.3 0.5 4 2 1 0.1 NA 5 2 2 0.2 1.0 6 2 3 0.2 0.0

returnfun

注意

library(zoo)
returnfun <- function(x) diff(zoo(x), arithmetic = FALSE, na.pad = TRUE) - 1

答案 1 :(得分:0)

R包TTR非常适合财务计算:https://cran.r-project.org/web/packages/TTR/TTR.pdf

以下是ROC(变更率)命令中的代码: 描述计算n个周期内一系列变化的(速率)。 用法 ROC(x,n = 1,type = c(“ continuous”,“ discrete”),na.pad = TRUE)

动量(x,n = 1,na.pad = TRUE)

在您的情况下,只需在您选择的时间段内修改n。