我想你在這裏有兩個問題。首先是如何在OHLC季度數據中獲得平均值。第二個是如何在每個季度開始時使用日期戳,而不是「最後」日期戳。 xts/quantmod包假設你想要「最後」的日期戳,所以按照流程去做,只需在最後替換日期戳即可。
對OHLC有意義我發現最好只是自己做OHLC計算。因此,而不是通過mean
到apply.quarterly()
,這樣做:
bars = apply.quarterly(xts(SPY[,6]), FUN = function(x){
d=coredata(x);
c(first(d),max(d),min(d),last(d),mean(d))
})
colnames(bars)=c("open","high","low","close","mean")
這給:
...
2013-09-30 159.71 171.28 159.56 167.10 165.9822
2013-12-31 168.43 184.69 164.59 184.69 176.1416
2014-01-08 182.92 183.52 182.36 183.52 183.0340
然後修復日戳:
index(bars) = as.Date(as.yearqtr(index(bars)))
要理解的是,通過查看index(bars)
啓動,然後看看as.yearqtr(index(bars))
,它給出:
[1] "2000 Q1" "2000 Q2" "2000 Q3" ...
... "2013 Q3" "2013 Q4" "2014 Q1"
然後,如果運氣好的話,as.Date()
會給出每個季度開始的日期戳。
最後一點是將新索引指定回bars
對象,其中index(bars) = ...
(或index(bars) <- ...
,如果您願意的話)。
順便說一句,還有一個indexAt="lastof"
或indexAt="firstof"
參數,你可以給to.quarterly()
。試驗這個,但在我的測試中,它不夠用。
該季度的平均值直到本季度末才知道。如果您將時間戳更改爲本季度初,您可能會引入重大偏差。你確定你要這麼做嗎? –
我需要這樣做,因爲我有一些其他數據系列的索引是由本季度開始而不是本季度末 –
這些其他系列的數據是在本季度末,將它們的時間戳移到季度末是否更有意義? –