【问题标题】:Calculating log returns with the Diff function使用 Diff 函数计算日志返回
【发布时间】:2018-10-24 21:16:53
【问题描述】:

我正在尝试从具有 2 个列的简单数据矩阵计算对数返回。我的以下代码全为零,我在这里缺少什么?

dataMatrix<-as.matrix(data[,2:ncol(data)])  #taking data from dataframe 
Log_returns<-diff(log(dataMatrix), lag=1)

View(log_returns)

这是数据的前几行

        Dates   APPL  AMZN
1   7-01-2005 4.9464 42.32
2  2005-01-14 5.0143 44.55
3  2005-01-21 5.0350 41.16
4  2005-01-28 5.2843 42.22
5  2005-02-04 5.6314 35.72
6  2005-02-11 5.8007 35.78
7  2005-02-18 6.2007 35.31
8  2005-02-25 6.3564 34.99
9  2005-03-04 6.1157 35.85
10 2005-03-11 5.7529 34.75

【问题讨论】:

  • 您能提供您使用dput(data) 使用的数据吗?您也可以edit your question 将行更改为列。
  • 我唯一的想法是它不工作,因为矩阵有列名,当我用随机制作的矩阵运行它时它工作......但我不知道为什么会这样
  • 确保您的数据是数字形式的?

标签: r finance


【解决方案1】:

我不确定您要计算什么。您的意思是计算每一行的APPLAMZN 的对数转换值之间的差异吗?

Log_returns <- apply(log(data[, 2:ncol(data)]), 1, diff)
#       1        2        3        4        5        6        7        8
#2.146600 2.184318 2.101053 2.078154 1.847353 1.819410 1.739504 1.705600
#       9       10
#1.768484 1.798475

或保存在新列中

data$Log_return <- apply(log(data[, 2:ncol(data)]), 1, diff)
data
#        Dates   APPL  AMZN Log_return
#1   7-01-2005 4.9464 42.32   2.146600
#2  2005-01-14 5.0143 44.55   2.184318
#3  2005-01-21 5.0350 41.16   2.101053
#4  2005-01-28 5.2843 42.22   2.078154
#5  2005-02-04 5.6314 35.72   1.847353
#6  2005-02-11 5.8007 35.78   1.819410
#7  2005-02-18 6.2007 35.31   1.739504
#8  2005-02-25 6.3564 34.99   1.705600
#9  2005-03-04 6.1157 35.85   1.768484
#10 2005-03-11 5.7529 34.75   1.798475

或者您的意思是计算每个APPLAMZN 的连续日期之间的对数转换值的差异

apply(log(data[, 2:ncol(data)]), 2, diff)
#           APPL         AMZN
#2   0.013633791  0.051352366
#3   0.004119696 -0.079145243
#4   0.048326634  0.025427131
#5   0.063617919 -0.167183286
#6   0.029620521  0.001678322
#7   0.066683589 -0.013222868
#8   0.024799990 -0.009103904
#9  -0.038602944  0.024281261
#10 -0.061155160 -0.031163995

样本数据

data <- read.table(text =
    "        Dates   APPL  AMZN
1   7-01-2005 4.9464 42.32
2  2005-01-14 5.0143 44.55
3  2005-01-21 5.0350 41.16
4  2005-01-28 5.2843 42.22
5  2005-02-04 5.6314 35.72
6  2005-02-11 5.8007 35.78
7  2005-02-18 6.2007 35.31
8  2005-02-25 6.3564 34.99
9  2005-03-04 6.1157 35.85
10 2005-03-11 5.7529 34.75", header = T)

【讨论】:

    猜你喜欢
    • 2016-12-05
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多