【问题标题】:Calculating monthly returns based on Panel Data R根据面板数据 R 计算月收益
【发布时间】:2018-09-05 16:27:41
【问题描述】:

不幸的是,我有一个大型数据集,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

【问题讨论】:

  • 您如何计算每月回报?所需输出的样本也会有所帮助
  • 我添加了所需的信息。谢谢

标签: r finance


【解决方案1】:

使用最后注释中的数据创建一个返回函数returnfun,然后使用ave将其分别应用于每个IDPrice向量。没有使用任何包。

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

使用 zoo 交替定义 returnfun,如下所示:

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

注意

Lines <- "
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"

DF <- read.table(text = Lines, header = TRUE)

【讨论】:

  • 之后如何将列添加到我的数据框中?
  • transform 语句的结果分配给DF 以覆盖它,或者分配给DF2,例如,使用额外的列创建一个新版本。
  • 难以置信!!非常感谢。有什么推荐可以让我了解更多关于创建自己的函数的信息吗?
  • 请参阅 R 附带的 Introduction to R 手册和 R 语言定义 手册。cran.r-project.org/manuals.html 这里还有一些贡献的文档: cran.r-project.org/other-docs.html
  • 能否解释一下函数中的“diff”和“head”是什么意思?
【解决方案2】:

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

以下是 ROC(变化率)命令的代码: 描述 计算一个序列在 n 个周期内的(变化率)。 用法 ROC(x, n = 1, type = c("连续", "离散"), na.pad = TRUE)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2021-02-08
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    相关资源
    最近更新 更多