程式
從 R 中的不完美數據計算日內收益
目的是計算 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
和 packagedatetimeutils
,我從中使用 functiontimegrid
。)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)