Rblpapi для нескольких ценных бумаг с различными start.date end.date
Я недавно начал использовать Rblpapi. Я думаю, что это намного проще в использовании, чем аналоги Python. У меня есть фрейм Ddata с датами выпуска облигаций и датами погашения, и я хотел бы извлечь все дневные доходности между этими двумя датами для всех облигаций в моей выборке. Для этого потребуется либо указать даты начала / окончания в виде вектора, либо использовать sapply
для каждой строки в моем фрейме данных:
cusip issuance mat
1: 000361AA3 10/24/1989 11/01/2001
2: 000361AB1 10/12/1993 10/15/2003
3: 00077DAB5 01/07/1994 01/12/1996
4: 00077DAF6 07/27/1994 08/01/2009
5: 00077TAA2 05/20/1993 05/15/2023
Насколько я понимаю, я могу указать только даты начала / окончания в качестве символа. Мой первый подход состоял в том, чтобы поставить очень раннюю дату начала и очень позднюю дату окончания так, чтобы все сделки по облигациям для всех облигаций в выборке были между этими двумя датами:
require(data.table)
require(Rblpapi)
con <- blpConnect()
cusips <- c('00077DAB5 Corp', '00077DAF6 Corp', '44891AAF4 Corp' )
col <- "YLD_YTM_MID"
sdate <- as.Date("1985-01-01") #early date
edate <- as.Date("2017-04-01") #late date
periods <- c("periodicitySelection"="DAILY")
data <- bdh(sym, col,
start.date=sdate,end.date = edate, options=periods, con = con)
Это, однако, дал мне следующую ошибку:
Error: Choice sub-element not found for name 'securityData'.
Я бы предположил, что следующая лучшая альтернатива - это использовать sapply
1 ответ
Вот код, который я запускаю, который работает:
require(data.table)
require(Rblpapi)
con <- blpConnect()
cusips <- c('00077DAB5 Corp', '00077DAF6 Corp', '44891AAF4 Corp' )
col <- "YLD_YTM_MID"
sdate <- as.Date("1985-01-01") #early date
edate <- as.Date("2017-04-01") #late date
periods <- c("periodicitySelection"="DAILY")
data <- bdh(cusips, col, #changed sym to cusips
start.date=sdate,end.date = edate, options=periods, con = con)
str(data)
List of 3
$ 00077DAB5 Corp:'data.frame': 0 obs. of 2 variables:
..$ date :Class 'Date' int(0)
..$ YLD_YTM_MID: num(0)
$ 00077DAF6 Corp:'data.frame': 247 obs. of 2 variables:
..$ date : Date[1:247], format: "1997-11-18" "1997-11-19" "1997-11-20" ...
..$ YLD_YTM_MID: num [1:247] 6.77 6.74 6.77 6.74 6.77 ...
$ 44891AAF4 Corp:'data.frame': 262 obs. of 2 variables:
..$ date : Date[1:262], format: "2016-03-16" "2016-03-17" "2016-03-18" ...
..$ YLD_YTM_MID: num [1:262] 2.92 2.93 2.88 2.92 2.94 ...