2013-10-26 29 views
1

假設我在1990/01/01期間以EuroSTOXX 5O歐洲呼叫的價格購買了一個9年的成熟期。我想知道什麼是到期日。 有什麼想法?查找從給定日期開始工作X年的情況

我可以用quantmod包開始:

require(quantmod) 
getSymbols("^STOXX50E", from = "1990-01-01") 
maturity <- 9 
dates <- index(STOXX50E) 

的問題是,我不能使用

dates[1] + maturity*365 

dates[1] + maturity*252 

找到了到期日,因爲數量工作日在幾年內有所不同。

有什麼想法?

謝謝。

+0

365是一年的次優表示,因爲目前在技術上已經365.25天一年(閏年) – Statwonk

+0

@Statwonk其實有在平均一年,因爲幾年通過100整除的不是閏年約365.24天除非它們也可以被400整除。 – orizon

+0

@ @ @ @謝謝你指出這一點! – Statwonk

回答

1

我真的很喜歡這個問題的lubridate包。

require(quantmod) 
require(lubridate) 
getSymbols("^STOXX50E", from = "1990-01-01") 
maturity <- 9 # years 

dates <- as.POSIXct(as.character(index(STOXX50E)), tz = "UTC") # needs to be in POSIXct format to work with lubridate, I believe. 

maturity_dates <- dates + years(maturity) 

head(as.data.frame(list(dates = dates, 
         maturity_dates = maturity_dates))) 

    dates   maturity.dates 
1 1990-01-01  1999-01-01 
2 1990-01-02  1999-01-02 
3 1990-01-03  1999-01-03 
4 1990-01-04  1999-01-04 
5 1990-01-05  1999-01-05 
6 1990-01-08  1999-01-08 
+0

問題是:package'lubricate'不可用(對於R version 3.0.0) – marino89

+1

那麼,升級R和你的軟件包。見例如[這裏](http://www.r-statistics.com/2013/09/r-3-0-2-and-rstudio-0-9-8-are-released/)。 – Henrik

+2

@ marino89,它是''lubridate'''d''' Dumbo''。 – flodel

相關問題