Nothing
context("Testing tk_make_future_timeseries - new")
# tk_make_future_timeseries_signature -----
test_that("tk_make_future_timeseries(datetime) test returns correct format.", {
# DATE-TIME -----
test_datetime <- c("2016-01-01 00:00:00",
"2016-01-01 00:00:03",
"2016-01-01 00:00:06") %>% ymd_hms()
# No skip values
test_1 <- tk_make_future_timeseries(test_datetime, length_out = 3)
test_2 <- tk_make_future_timeseries(test_datetime, length_out = "10 sec")
expectation <- c("2016-01-01 00:00:09", "2016-01-01 00:00:12", "2016-01-01 00:00:15") %>%
ymd_hms()
expect_identical(test_1, test_2, expectation)
# Skip values
skip <- ymd_hms("2016-01-01 00:00:15")
test_1 <- tk_make_future_timeseries(test_datetime, length_out = 3, skip_values = skip)
test_2 <- tk_make_future_timeseries(test_datetime, length_out = "12 sec", skip_values = skip)
expectation <- c("2016-01-01 00:00:09", "2016-01-01 00:00:12", "2016-01-01 00:00:18") %>%
ymd_hms()
expect_identical(test_1, test_2, expectation)
# Skip values not within sequence
skip <- ymd_hms("2016-01-01 00:00:10")
expect_message(test <- tk_make_future_timeseries(test_datetime, length_out = 3, skip_values = skip))
expectation <- c("2016-01-01 00:00:09", "2016-01-01 00:00:12", "2016-01-01 00:00:15") %>%
ymd_hms()
expect_equal(test, expectation)
# Inspect validation of skip_values
expect_error(test <- tk_make_future_timeseries(test_datetime, length_out = 10, skip_values = 1))
# Insert values
insert <- tail(test_datetime, 1)
test <- tk_make_future_timeseries(test_datetime, length_out = 3, insert_values = insert)
expectation <- c("2016-01-01 00:00:06", "2016-01-01 00:00:09", "2016-01-01 00:00:12") %>%
ymd_hms()
expect_equal(test, expectation)
# Test Time Zones
idx <- c("2015-04-05 00:00:00",
"2015-04-05 01:00:00",
"2015-04-05 02:00:00") %>%
ymd_hms(tz = 'Africa/Bujumbura')
test <- idx %>% tk_make_future_timeseries(length_out = "3 hours")
expectation <- c("2015-04-05 03:00:00",
"2015-04-05 04:00:00",
"2015-04-05 05:00:00") %>%
ymd_hms(tz = 'Africa/Bujumbura')
expect_equal(test, expectation)
# Test mid-month
test <- tk_make_timeseries(
start_date = "2011-01-15",
by = "1 month",
length_out = 10
) %>%
tk_make_future_timeseries(length_out = 3)
expectation <- c("2011-11-15", "2011-12-15", "2012-01-15") %>% lubridate::ymd()
expect_equal(test, expectation)
# Test end of month
test <- tk_make_timeseries(
start_date = "2011-01-31",
by = "1 month",
length_out = 10
) %>%
tk_make_future_timeseries(length_out = 4)
expectation <- c("2011-11-30", "2011-12-31", "2012-01-31", "2012-02-29") %>% lubridate::ymd()
expect_equal(test, expectation)
})
test_that("tk_make_future_timeseries(date) test returns correct format.", {
test_date <- FANG %>%
dplyr::filter(symbol == "FB") %>%
tk_index()
# DAILY SCALE ----
# No skip values, inspect_weekdays = FALSE
test_1 <- tk_make_future_timeseries(test_date, length_out = 3, skip_values = NULL, inspect_weekdays = FALSE)
test_2 <- tk_make_future_timeseries(test_date, length_out = "3 days", skip_values = NULL, inspect_weekdays = FALSE)
expectation <- c("2016-12-31", "2017-01-01", "2017-01-02") %>% lubridate::ymd()
expect_identical(test_1, test_2, expectation)
# No skip values, inspect_weekdays = TRUE
test_1 <- tk_make_future_timeseries(test_date, length_out = 3, skip_values = NULL, inspect_weekdays = TRUE)
test_2 <- tk_make_future_timeseries(test_date, length_out = "5 days", skip_values = NULL, inspect_weekdays = TRUE)
expectation <- c("2017-01-02", "2017-01-03", "2017-01-04") %>% lubridate::ymd()
expect_identical(test_1, test_2, expectation)
# Skip values, inspect_weekdays = TRUE
holidays <- c("2017-01-03", "2017-01-04") %>% lubridate::ymd()
test <- tk_make_future_timeseries(test_date, length_out = 8, skip_values = holidays, inspect_weekdays = TRUE)
expectation <- c("2017-01-02", "2017-01-05", "2017-01-06", "2017-01-09", "2017-01-10", "2017-01-11", "2017-01-12", "2017-01-13") %>%
ymd()
expect_equal(test, expectation)
# inspect_weekdays = T: Test when skip values are not within future index
skip <- ymd(c("2018-01-01", "2016-12-31"))
expect_message(test <- tk_make_future_timeseries(test_date, length_out = 4, skip_values = skip, inspect_weekdays = T))
expectation <- c("2017-01-02", "2017-01-03", "2017-01-04", "2017-01-05") %>%
ymd()
expect_equal(test, expectation)
# inspect_weekdays = F: Test when skip values are not within future index
skip <- ymd(c("2018-01-01", "2016-12-31"))
expect_message(test <- tk_make_future_timeseries(test_date, length_out = "5 days", skip_values = skip, inspect_weekdays = F))
expectation <- c("2017-01-01", "2017-01-02", "2017-01-03", "2017-01-04") %>%
ymd()
expect_equal(test, expectation)
# inspect_weekdays = T: length_out missing
expect_error(test <- tk_make_future_timeseries(test_date))
# Inspect validation of skip_values
expect_error(test <- tk_make_future_timeseries(test_date, length_out = 10, skip_values = 1))
# Insert dates
insert <- ymd(c("2017-01-03", "2017-01-01"))
expect_message(test <- tk_make_future_timeseries(test_date, length_out = 3, inspect_weekdays = TRUE, insert_values = insert))
expectation <- c("2017-01-01", "2017-01-02", "2017-01-03") %>%
ymd()
expect_equal(test, expectation)
# WEEKLY SCALE ----
# No skip
test_date <- c("2017-01-01", "2017-01-08") %>% lubridate::ymd()
expectation <- c("2017-01-15", "2017-01-22") %>% lubridate::ymd()
test_1 <- tk_make_future_timeseries(test_date, length_out = 2)
test_2 <- tk_make_future_timeseries(test_date, length_out = "2 weeks")
expect_identical(test_1, test_2, expectation)
# With skip
test_date <- c("2017-01-01", "2017-01-08") %>% lubridate::ymd()
skip_values <- c("2017-01-22") %>% lubridate::ymd()
expectation <- c("2017-01-15", "2017-01-29") %>% lubridate::ymd()
test <- tk_make_future_timeseries(test_date, length_out = 2, skip_values = skip_values)
expect_equal(test, expectation)
# With insert
test_date <- c("2017-01-01", "2017-01-08") %>% lubridate::ymd()
insert <- c("2017-01-29") %>% lubridate::ymd()
expectation <- c("2017-01-15", "2017-01-22") %>% lubridate::ymd()
expect_message(test <- tk_make_future_timeseries(test_date, length_out = 2, insert_values = insert))
expect_equal(test, expectation)
# With insert / Message
test_date <- c("2017-01-01", "2017-01-08") %>% lubridate::ymd()
insert <- c("2017-01-22") %>% lubridate::ymd()
expectation <- c("2017-01-15", "2017-01-22") %>% lubridate::ymd()
expect_message(test <- tk_make_future_timeseries(test_date, length_out = 2, insert_values = insert))
expect_equal(expectation, test)
# MONTHLY SCALE ----
# No skip
idx <- c("2017-01-15", "2017-02-15") %>% lubridate::ymd()
expectation <- c("2017-03-15", "2017-04-15") %>% lubridate::ymd()
test_1 <- tk_make_future_timeseries(idx, length_out = 2)
test_2 <- tk_make_future_timeseries(idx, length_out = "2 months")
expect_identical(test_1, expectation)
expect_identical(test_2, expectation)
# With skip
test_date <- c("2017-01-01", "2017-02-01") %>% lubridate::ymd()
skip_values <- c("2017-03-01") %>% lubridate::ymd()
expectation <- c("2017-04-01", "2017-05-01") %>% lubridate::ymd()
expect_equal(tk_make_future_timeseries(test_date, length_out = 2, skip_values = skip_values),
expectation)
# With insert
test_date <- c("2017-01-01", "2017-02-01") %>% lubridate::ymd()
insert <- c("2017-06-01") %>% lubridate::ymd()
expectation <- c("2017-03-01", "2017-04-01") %>% lubridate::ymd()
expect_message(test <- tk_make_future_timeseries(test_date, length_out = 2, insert_values = insert))
expect_equal(test, expectation)
# QUARTERLY SCALE ----
# No skip
test_date <- c("2017-01-15", "2017-04-15") %>% lubridate::ymd()
test_1 <- tk_make_future_timeseries(test_date, length_out = 2)
test_2 <- tk_make_future_timeseries(test_date, length_out = "6 months")
expectation <- c("2017-07-15", "2017-10-15") %>% lubridate::ymd()
expect_identical(test_1, expectation)
expect_identical(test_2, expectation)
# With skip
test_date <- c("2017-01-01", "2017-04-01") %>% lubridate::ymd()
skip_values <- c("2017-10-01") %>% lubridate::ymd()
expectation <- c("2017-07-01", "2018-01-01") %>% lubridate::ymd()
test <- tk_make_future_timeseries(test_date, length_out = 2, skip_values = skip_values)
expect_equal(test, expectation)
# YEARLY SCALE ----
# No skip
test_date <- c("2017-06-30", "2018-06-30") %>% lubridate::ymd()
expectation <- c("2019-06-30", "2020-06-30") %>% lubridate::ymd()
test_1 <- tk_make_future_timeseries(test_date, length_out = 2)
test_2 <- tk_make_future_timeseries(test_date, length_out = "2 years")
expect_identical(test_1, test_2, expectation)
# With skip
test_date <- c("2017-04-01", "2018-04-01") %>% lubridate::ymd()
skip_values <- c("2019-04-01") %>% lubridate::ymd()
expectation <- c("2020-04-01", "2021-04-01") %>% lubridate::ymd()
test <- tk_make_future_timeseries(test_date, length_out = 2, skip_values = skip_values)
expect_equal(test, expectation)
# 1.5X YEARLY SCALE ----
# No skip
test_date <- c("2017-07-01", "2019-01-01") %>% lubridate::ymd()
expectation <- c("2020-07-01", "2022-01-01") %>% lubridate::ymd()
test_1 <- tk_make_future_timeseries(test_date, length_out = 2)
test_2 <- tk_make_future_timeseries(test_date, length_out = "3 years")
expect_identical(test_1, test_2, expectation)
})
# YEARMON ----
test_that("tk_make_future_timeseries(yearmon) test returns correct format.", {
test_yearmon <- c("2016-01",
"2016-02",
"2016-03") %>% zoo::as.yearmon()
# No skip values
test <- tk_make_future_timeseries(test_yearmon, length_out = "3 months")
expectation <- c("2016-04", "2016-05", "2016-06") %>%
zoo::as.yearmon()
expect_equal(test, expectation)
# Skip values
skip <- zoo::as.yearmon("2016-05")
test <- tk_make_future_timeseries(test_yearmon, length_out = 2, skip_values = skip)
expectation <- c("2016-04", "2016-06") %>%
zoo::as.yearmon()
expect_equal(test, expectation)
# Test when skip values are not within future index
skip <- zoo::as.yearmon(c("2016-10", "2016-11"))
expect_message(tk_make_future_timeseries(test_yearmon, length_out = 3, skip_values = skip))
# Inspect validation of skip_values
expect_warning(test <- tk_make_future_timeseries(test_yearmon, length_out = 10, skip_values = 1))
expect_equal(test, NA)
# insert values
insert <- zoo::as.yearmon(c("2017-10", "2017-11"))
test <- tk_make_future_timeseries(test_yearmon, length_out = 3, insert_values = insert)
expectation <- c("2016-04", "2016-05", "2016-06") %>%
zoo::as.yearmon()
expect_equal(test, expectation)
})
# YEARQTR ----
test_that("tk_make_future_timeseries(yearqtr) test returns correct format.", {
test_yearqtr <- c("2016 Q1",
"2016 Q2",
"2016 Q3",
"2016 Q4") %>% zoo::as.yearqtr()
# No skip values
test <- tk_make_future_timeseries(test_yearqtr, length_out = "1 year")
expectation <- c("2017 Q1", "2017 Q2", "2017 Q3", "2017 Q4") %>%
zoo::as.yearqtr()
expect_equal(test, expectation)
# Skip values
skip <- zoo::as.yearqtr("2017 Q1")
test <- tk_make_future_timeseries(test_yearqtr, length_out = 4, skip_values = skip)
expectation <- c("2017 Q2", "2017 Q3", "2017 Q4", "2018 Q1") %>%
zoo::as.yearqtr()
expect_equal(test, expectation)
# Test when skip values are not within future index
skip <- zoo::as.yearqtr(c("2017 Q1", "2018 Q2"))
expect_message(test <- tk_make_future_timeseries(test_yearqtr, length_out = 4, skip_values = skip))
expectation <- c("2017 Q2", "2017 Q3", "2017 Q4", "2018 Q1") %>%
zoo::as.yearqtr()
expect_equal(test, expectation)
# Inspect validation of skip_values
expect_warning(test <- tk_make_future_timeseries(test_yearqtr, length_out = 10, skip_values = 1))
expect_equal(test, NA)
})
# Test prediction algorithm -----
idx_every_two <-
c("2017-01-02", "2017-01-03", "2017-01-04", "2017-01-05",
"2017-01-06",
"2017-01-09", "2017-01-10", "2017-01-11", "2017-01-12",
# "2017-01-13",
"2017-01-16", "2017-01-17", "2017-01-18", "2017-01-19",
"2017-01-20",
"2017-01-23", "2017-01-24", "2017-01-25", "2017-01-26",
# "2017-01-27",
"2017-01-30", "2017-01-31", "2017-02-01", "2017-02-02",
"2017-02-03",
"2017-02-06", "2017-02-07", "2017-02-08", "2017-02-09",
# "2017-02-10",
"2017-02-13", "2017-02-14", "2017-02-15", "2017-02-16",
"2017-02-17",
"2017-02-20", "2017-02-21", "2017-02-22", "2017-02-23",
# "2017-02-24",
"2017-02-27", "2017-02-28", "2017-03-01", "2017-03-02",
"2017-03-03") %>%
ymd()
expect_every_two <-
c("2017-03-06", "2017-03-07", "2017-03-08", "2017-03-09",
# "2017-03-10",
"2017-03-13", "2017-03-14", "2017-03-15", "2017-03-16",
"2017-03-17",
"2017-03-20", "2017-03-21", "2017-03-22", "2017-03-23",
# "2017-03-24",
"2017-03-27", "2017-03-28", "2017-03-29", "2017-03-30",
"2017-03-31",
"2017-04-03", "2017-04-04", "2017-04-05", "2017-04-06",
"2017-04-10", "2017-04-11", "2017-04-12", "2017-04-13",
"2017-04-14",
"2017-04-17"
) %>%
ymd()
test_that("tk_make_future_timeseries(predict_every_two) test returns correct format.", {
expect_warning(test <- tk_make_future_timeseries(idx_every_two, length_out = 7 * 4, inspect_weekdays = TRUE))
expect_equal(test, expect_every_two)
})
idx_every_three <-
c("2017-01-02", "2017-01-03", "2017-01-04", "2017-01-05",
"2017-01-06",
"2017-01-09", "2017-01-10", "2017-01-11", "2017-01-12",
"2017-01-13",
"2017-01-16", "2017-01-17", "2017-01-18", "2017-01-19",
# "2017-01-20",
"2017-01-23", "2017-01-24", "2017-01-25", "2017-01-26",
"2017-01-27",
"2017-01-30", "2017-01-31", "2017-02-01", "2017-02-02",
"2017-02-03",
"2017-02-06", "2017-02-07", "2017-02-08", "2017-02-09",
# "2017-02-10",
"2017-02-13", "2017-02-14", "2017-02-15", "2017-02-16",
"2017-02-17",
"2017-02-20", "2017-02-21", "2017-02-22", "2017-02-23",
"2017-02-24",
"2017-02-27", "2017-02-28", "2017-03-01", "2017-03-02"
# "2017-03-03"
) %>%
ymd()
expect_every_three <-
c("2017-03-06", "2017-03-07", "2017-03-08", "2017-03-09", "2017-03-10",
"2017-03-13", "2017-03-14", "2017-03-15", "2017-03-16", "2017-03-17",
"2017-03-20", "2017-03-21", "2017-03-22", "2017-03-23",
"2017-03-27", "2017-03-28", "2017-03-29", "2017-03-30", "2017-03-31",
"2017-04-03", "2017-04-04", "2017-04-05", "2017-04-06", "2017-04-07",
"2017-04-10", "2017-04-11", "2017-04-12", "2017-04-13",
"2017-04-17"
) %>%
ymd()
test_that("tk_make_future_timeseries(predict_every_three) test returns correct format.", {
expect_warning(test <- tk_make_future_timeseries(idx_every_three, length_out = 4 * 7 + 1, inspect_weekdays = TRUE))
expect_equal(test, expect_every_three)
})
test_that("tk_make_future_timeseries(): End of Month", {
series <- c("2011-01-31", "2011-04-30", "2011-07-31", "2011-10-31") %>% lubridate::ymd()
test <- tk_make_future_timeseries(series, length_out = 4)
expectation <- c("2012-01-31", "2012-04-30", "2012-07-31", "2012-10-31") %>% lubridate::ymd()
expect_equal(test, expectation)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.