2

パラメータの日付が Op-Ex Friday の場合に true を返す (はずの) シンプルな関数を作成しようとしています。

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 にバグがありますか?

4

1 に答える 1

0

タイムゾーンの問題だと思います。これを使用するとどうなりますか:

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

もう一度見てみると、おそらく as.Date(format(...)) 呼び出し内の format 呼び出し内に 'tz=' 引数を配置する必要があります。フォーマット関数は、その日付の値をテキストとして「凍結」します。

編集:しかし、テストでは、それがバグであることについてあなたは正しいと思います。(そして、この応答でバグレポートをメンテナーに送信しました。) さまざまなタイムゾーン仕様を挿入しようとし、RmetricsOptions で myFinCenter を設定しようとした後でも、選択した関数の奥深くでこのエラーに起因するものを取得します:

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 値は、クラスの型強制によって、「原点」からの秒から 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  
于 2011-09-23T13:35:54.330 に答える