程式

從 R 中的不完美數據計算日內收益

  • February 23, 2018

目的是計算 R 中的分鐘回報。Given 是 a 中的分鐘價格數據tbl_df僅當確實有交易時才添加一行

 datetime              close
1 1998-01-02 08:31:00   0.484
2 1998-01-02 08:41:00   0.436
3 1998-01-02 08:44:00   0.436
4 1998-01-02 09:02:00   0.436
5 1998-01-02 09:15:00   0.440
6 1998-01-02 09:20:00   0.440
7 1998-01-02 09:26:00   0.437

是否有一個預程式的功能可以在0沒有交易的情況下自動填寫幾分鐘的回報?如果沒有,最好的方法是什麼?

創建一個每分鐘都有價值的新價格序列,例如通過將最後的觀察結果向前推進。然後計算這個新價格系列的回報。

(對於這種特殊情況有更簡單的方法,但我更喜歡上面概述的方法,因為它在概念上很清楚。)

R 中的草圖。(披露:我是 packages 的維護者,PMwR我從中使用 functionreturns和 package datetimeutils,我從中使用 function timegrid。)

library("PMwR")   ## https://github.com/enricoschumann/PMwR
library("zoo")
library("datetimeutils")

## the example data
timestamp <- c("1998-01-02 08:31:00",
              "1998-01-02 08:41:00",
              "1998-01-02 08:44:00",
              "1998-01-02 09:02:00",
              "1998-01-02 09:15:00",
              "1998-01-02 09:20:00",
              "1998-01-02 09:26:00")   
timestamp <- as.POSIXct(timestamp)

p <- c(0.484, 0.436, 0.436, 0.436, 0.440, 0.440, 0.437)


## create a new series with NA when
## there is no price
start <- as.POSIXct("1998-01-02 08:30:00")
end   <- as.POSIXct("1998-01-02 09:30:00")

all_times <- timegrid(start, end, interval = "1 min")
all_p <- rep(NA, length(all_times))

i <- match(timestamp, all_times, nomatch = 0L)
all_p[i] <- p[i > 0]


## create a zoo series and replace
## missing values with the previous
## price
P <- zoo(all_p, all_times)
P <- na.locf(P)
returns(P)

引用自:https://quant.stackexchange.com/questions/38407