Цикл R для разрыва доступа к данным Wrds TAQ
Я использую .sh-файл (оболочку) для активации через PuTTY моего Rscript. Rscript просматривает торговые таблицы за 10 лет TAQ в миллисекундах для 20 символов. Если я запускаю цикл для этих 20 символов только на очень короткое время (например, 1 неделю), я получаю все необходимые данные. Точно так же, если я запускаю цикл для данных за 10 лет, но только для 2 символов, я также получаю данные. Однако проблема в том, что если я запускаю цикл в течение 10 лет (2010-2020) для всех двадцати символов, цикл прерывается, и я получаю сообщение «/usr/local/sas/grid/R-3.6.2-linux/lib64 / R / bin / BATCH: строка 60: 28764 Убита ${R_HOME} / bin / R -f ${in} ${opts} ${R_BATCH_OPTIONS}> ${out} 2>&1". Что я делаю неправильно?
library(RPostgres)
# Connect to WRDS
wrds <- dbConnect(Postgres(),
host = 'wrds-pgdata.wharton.upenn.edu',
port = 9737,
dbname = 'wrds',
sslmode = 'require',
user = 'XXX',
password = 'XXX')
# Get list of all available dates
res <- dbSendQuery(wrds, "select distinct table_name
from information_schema.columns
where table_schema='taqmsec'
order by table_name")
df_dates <- dbFetch(res, n = -1)
dbClearResult(res)
# Df_dates contains also quotes table names and indices
dates_trades <-
df_dates %>%
filter(grepl("ctm",table_name), !grepl("ix_ctm",table_name)) %>%
mutate(table_name = substr(table_name, 5, 12)) %>%
unlist()
# Store all table names relevant analysis
dd <- dates_trades[1591:4366]
# All tickers in WRDS-SQL format
tickers <- "('INTC', 'WMT','PG','MSFT','BLX','KO',
'XOM','GILD','NKE','CAT','JPM',
'VTR','AXP','IBM','JNJ', 'PFE',
'DIS','BA')"
# Fetch data from Wrds Via SQL loop
list <- lapply(dd, function(iter){
res <-
dbSendQuery(wrds,
paste0(" select concat(date, ' ',time_m) as DT,",
" ex, sym_root, price, size, tr_corr, tr_scond",
" from taqmsec.ctm_", iter,
" where (ex = 'N' or ex = 'T' or ex = 'Q' or ex = 'A')",
" and sym_root IN ", tickers,
" and price != 0 and tr_corr = '00'",
" and time_m between '09:30:00.00' and '16:00:00.00'"))
dtaq <- dbFetch(res, n = -1)
dbClearResult(res)
dtaq
})