У меня есть OHLC (Open/High/Low/Close)
данные, которые мы можем получить, используя Finance API и все.
Я хочу создать целевой индикатор (-1,0,1)
, на котором я буду строить модель классификации акций.
Для создания этой целевой переменной.
Мне нужно создать еще один индикатор, log(tomorrow's CLOSE/today's CLOSE)
, который даст мне значение в (-inf to inf).
Теперь я хочу создать метки = c (-1, 0, 1) из breaks = c (-Inf, range_start, range_end, Inf) журнала (завтрашнее ЗАКРЫТО / сегодняшнее ЗАКРЫТО).
Мой первый вопрос - создать эту целевую переменную, не заглядывая в будущие данные, так как моя формула log(tomorrow's CLOSE/today's CLOSE)
смотрит в будущее, что неверно, я хочу сместить фрейм данных / ввод назадодна строка и обрабатывать сегодня как завтра и т. д.
, а затем вычислить целевую категорию, основываясь на range_start, range_end и заданных брейках, -1, 0,1.
Мой второй вопрос: как я могу определить его наилучшим образом, это значение, я принимаю это как -0,0015,0.0015 на данный момент.
здесь нужны комментарии и предложения, спасибо.
masterDF_close <- masterDF %>% dplyr::select('Date', 'Close')
# create a one-row matrix the same length as data
temprow <- matrix(c(rep.int(NA,length(masterDF))),nrow=1,ncol=length(masterDF))
# make it a data.frame and give cols the same names as data
newrow <- data.frame(temprow)
colnames(newrow) <- colnames(masterDF)
# rbind the empty row to data
masterDF <- rbind(newrow,masterDF)
###View(masterDF)
temprow2 <- matrix(c(rep.int(NA,length(masterDF_close))),nrow=1,ncol=length(masterDF_close))
# make it a data.frame and give cols the same names as data
newrow2 <- data.frame(temprow2)
colnames(newrow2) <- colnames(masterDF_close)
# rbind the empty row to data
masterDF_close <- rbind(masterDF_close, newrow2)
masterDF['Close_unshifted'] = masterDF_close$Close
###View(masterDF)
# Shifting data backwards, assuming today Close as tomorrow Close and yesterday Close as today Close
# close <- masterDF$Close
# lead_close <- lag(close, k = -1)
#
# close[1:10]
# lead_close[1:10]
#
# log(close/lead_close)
#
# plot(log(close/lead_close))
masterDF['TargetIndicator'] <- log(masterDF$Close_unshifted/masterDF$Close)
###View(masterDF)
masterDF = masterDF[-1,]
masterDF$TargetIndicator[is.na(masterDF$TargetIndicator)] <- 0
masterDF_ <- masterDF %>% mutate(category=cut(TargetIndicator,
breaks=c(-Inf, range_start, range_end, Inf),
labels=c(-1, 0, 1)))
Это две операции, которые я выполняю над кодом.