2011-09-23 14 views
2

我想寫一個簡單的函數,(應)返回true如果參數日期(s)是一個Op-Ex星期五。找到一個特定的日期是否是一個期權到期星期五 - 問題與timeDate包

require(timeDate) 
require(quantmod) 

getSymbols("^GSPC", adjust=TRUE, from="1960-01-01") 
assign("SPX", GSPC, envir=.GlobalEnv) 
names(SPX) <- c("SPX.Open", "SPX.High", "SPX.Low", "SPX.Close", 
       "SPX.Volume", "SPX.Adjusted") 

dates <- last(index(SPX), n=10) 
from <- as.numeric(format(as.Date(min(dates)), "%Y")) 
to <- as.numeric(format(as.Date(max(dates)), "%Y")) 

isOpExFriday <- ifelse(
    isBizday(
    timeDate(as.Date(dates)), 
    holidayNYSE(from:to)) & (as.Date(dates) == as.Date(
     format(timeNthNdayInMonth(timeFirstDayInMonth(dates), nday=5, nth=3))) 
), TRUE, FALSE) 

現在,結果應該是[1] "2011-09-16"。而是我得到[1] "2011-09-15"

dates[isOpExFriday] 
[1] "2011-09-15" 

上午我做錯了什麼,期待的東西,TIMEDATE包沒有被設計做的或者是有在TIMEDATE的錯誤嗎?

+0

您的代碼在我的計算機上正常工作。 – Andrie

回答

0

我猜這是一個時區問題。如果你用這個,會發生什麼:

format(dates[isOpExFriday], tz="UTC") 

在第二次看,你可能需要把「TZ =」參數的as.Date內部格式調用(格式(...))調用中。格式化函數「凍結」,將文本值作爲日期值。

編輯:在測試但是我認爲你是正確的是它是一個錯誤。 (我打發一個bug報告維護者與此響應)甚至試圖插入不同的時區功能和設置myFinCenter在RmetricsOptions後,我仍然得到從這個錯誤源於深你選擇的函數中:

timeNthNdayInMonth(as.Date("2011-09-01"), nday=5, nth=3) 
America/New_York 
[1] [2011-09-15] 

我懷疑這是因爲這個代碼,因爲據我瞭解朱利安日期不同時區或夏令時調整:

ct = 24 * 3600 * (as.integer(julian.POSIXt(lt)) + 
      (nth - 1) * 7 + (nday - lt1$wday)%%7) 
class(ct) = "POSIXct" 

在幾秒鐘內的CT值,因爲「出身」,然後coverted到POSIXct從第二簡單地通過強迫課。如果我將代碼更改爲:

ct=as.POSIXct(ct, origin="1970-01-01") # correct results come back 

我的quantmod和timeDate版本都是當前每個CRAN。以美國語言環境在64位模式下運行R 2.13.1的Mac。我還沒有嘗試使用最小會話進行復制,因此仍然可能與其他軟件包發生碰撞或劫持:

> sessionInfo() 
R version 2.13.1 RC (2011-07-03 r56263) 
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] grid  splines stats  graphics grDevices utils  datasets 
[8] methods base  

other attached packages: 
[1] quantmod_0.3-17 TTR_0.20-3  xts_0.8-2   
[4] Defaults_1.1-1 timeDate_2130.93 zoo_1.7-4   
[7] gplots_2.10.1  KernSmooth_2.23-6 caTools_1.12  
[10] bitops_1.0-4.1 gdata_2.8.1  gtools_2.6.2  
[13] wordnet_0.1-8  ggplot2_0.8.9  proto_0.3-9.2  
[16] reshape_0.8.4  plyr_1.6   rattle_2.6.10  
[19] RGtk2_2.20.17  rms_3.3-1   Hmisc_3.8-3  
[22] survival_2.36-9 sos_1.3-0   brew_1.0-6  
[25] lattice_0.19-30 
+0

迪文,非常感謝您爲他的問題找到解決方案,並且爲r-metrics找到錯誤報告。 – Samo

相關問題