R: Создать индикатор запаса из данных OHLC - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть 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)))

Это две операции, которые я выполняю над кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...