Я пытаюсь рассчитать дневную реализованную / историческую волатильность для большого набора данных по акциям, используя функцию spotvol из высокочастотного пакета. По какой-то причине я продолжаю получать ошибки POSIX (временная метка) и пробовал несколько различных методов для преобразования моего образца в объект xts.
Образец набора данных:
2015-01-02 10:00:00 80.15
2015-01-02 11:00:00 81.00
2015-01-02 12:00:00 80.50
2015-01-02 13:00:00 80.40
2015-01-02 14:00:00 80.15
2015-01-02 15:00:00 81.00
2015-01-02 16:00:00 80.50
2015-01-05 10:00:00 80.40
2015-01-05 11:00:00 80.95
2015-01-05 12:00:00 81.05
2015-01-05 13:00:00 80.85
2015-01-05 14:00:00 80.50
2015-01-05 15:00:00 80.40
2015-01-05 16:00:00 80.95
Код, который я использовал для преобразования в объект xts, выглядит следующим образом:
vol_df2 <- vol_df1 %>%
mutate(time_stamp = as.POSIXct(time_stamp, format = "%Y-%m-%d %H:%M:%S"))
vol_df3 <- as.xts(vol_df2, order.by = vol_df2$time_stamp, tz = "", unique = F)
Код для попытки расчета дневного спотвола из часовых периодов времени выглядит следующим образом: ПРИМЕЧАНИЕ: Мои фактические данные носят высокочастотный характер, поэтому я предоставил агрегированные данные за каждый час за 2 дня.
spotvol(vol_df3, method = "detper", on = "hours", k = 1,
marketopen = "10:00:00", marketclose = "16:00:00")
Я получаю следующие ошибки:
Error in as.POSIXlt.character(x, tz, ...):
character string is not in a standard unambiguous format
do not know how to convert 'time' to class “POSIXct”
In addition: Warning messages:
1: All formats failed to parse. No formats found.
2: All formats failed to parse. No formats found.
3: In min.default(numeric(0), na.rm = FALSE) :
no non-missing arguments to min; returning Inf
4: In max.default(numeric(0), na.rm = FALSE) :
no non-missing arguments to max; returning -Inf
5: All formats failed to parse. No formats found.
и
Error in set(x, j = name, value = value) :
Supplied 1054304 items to be assigned to 1054377 items of column
'PRICE'. If you wish to 'recycle' the RHS please use rep() to make this
intent clear to readers of your code.
Проведенное мною исследование ничего не дало, поскольку я просто следовал инструкциям по преобразованию своей временной метки, а также преобразованию в объект xts. Поскольку я использую систему Linux, я столкнулся с этим: https://github.com/Rdatatable/data.table/issues/1619
Я также попытался использовать метод data.table, и это также выдает ошибку, касающуюся однозначного формата метка времени POSIX.
Как будто я пропускаю аргументы в командах для spotvol, однако я не мог выяснить, есть ли значения по умолчанию, которые можно изменить из документации, найденной здесь: https://www.rdocumentation.org/packages/highfrequency/versions/0.6.3/topics/spotvol
РЕДАКТИРОВАТЬ: единственная ошибка, которую я получаю сейчас, является последней в списке, касающейся ошибки в наборе ... Когда я изменяю fill=TRUE
на fill=FALSE
в aggregatePrice
часть spotvol
функции, которую spotvol, кажется, хочет вычислить немного, но все равно выдает ошибку Error in set
.
Любая помощь по этому вопросу будет принята с благодарностью. Ура:)