首页 文章

Rblpapi R Bloomberg数据下载

提问于
浏览
0

我试图从Bloomberg下载一些FX Forward点数据来计算一些收益率差异 . 为此,我需要降低 Value 日期和定价点的结算日期之间的天数(即期限) . 我尝试过如下,但是这些dows不起作用并返回NAs . 虽然poinst显示:

require(Rblpapi)
blpConnect()
bdh("AUD1M Curncy",field=c("PX_MID","DAYS_TO_MTY"),start.date=as.Date("2017-05-01"))


         date             PX_MID DAYS_TO_MTY
1  2017-05-01 -4.505000000000000          NA
2  2017-05-02 -4.350000000000000          NA
3  2017-05-03 -4.150000000000000          NA
4  2017-05-04 -4.210000000000000          NA
5  2017-05-05 -4.257000000000000          NA
6  2017-05-08 -4.710000000000000          NA
7  2017-05-09 -4.930000000000000          NA
8  2017-05-10 -4.800000000000000          NA
9  2017-05-11 -4.505000000000000          NA
10 2017-05-12 -4.500000000000000          NA
11 2017-05-15 -4.855000000000000          NA
12 2017-05-16 -4.525000000000000          NA
13 2017-05-17 -4.403000000000000          NA

现在我被彭普斯告知,你不能使用bdh下载期限,但是可以通过使用excel bdp公式来实现 . 因此我编写了一个循环如下:

mydates <-  c("20170510,"20170511,"20170512,."20170515","20170516
for(i in 1:length(mydates)){print(as.numeric(bdp("AUD1M Curncy",c("PX_BID","DAYS_TO_MTY"),overrides=c("Reference Date"=mydates[i]))))}

ansd这里是印刷品

[1] -4.49 32.00
[1] -4.49 31.00
[1] -4.49 31.00
[1] -4.49 33.00
[1] -4.49 32.00

我的问题是,当我覆盖参考日期时,PX_MID值会发生变化,因为它们应该如此 . 我的另一个问题是,这是有史以来最无益的代码行...我需要很长时间来处理与[mydate]中的查询一样多的查询 .

有没有办法一次下载上面的查询和/或更有效地编码?

任何帮助赞赏 .

亲切的问候

皮埃尔

1 回答

  • 1

    我的猜测是 PX_BID 字段不支持 REFERENCE_DATE 覆盖,而字段 DAYS_TO_MTY 则支持 REFERENCE_DATE 覆盖 . 如果查看Bloomberg终端中的 FLDS 命令,可以看到 REFERENCE_DATEDAYS_TO_MTY 一起出现,但不与 PX_BID 一起出现 . 正如Dirk在评论中指出的那样,确认这一点的最佳方法是通过终端的帮助 .

    就您的性能问题而言,此类查询的工作方式是发送多个请求并接收多个响应 . 如果您查看回复,就可以看到这一点 .

    mydates <- c("20170510","20170511","20170512")
    for(i in 1:length(mydates)){
        print(as.numeric(bdp("AUD1M Curncy",c("PX_BID","DAYS_TO_MTY"),
                             overrides=c("REFERENCE_DATE"=mydates[i]),
                             verbose=TRUE)))
    }
    
    ReferenceDataResponse = {
        securityData[] = {
            securityData = {
                security = "AUD1M Curncy"
                eidData[] = {
                }
                fieldExceptions[] = {
                }
                sequenceNumber = 0
                fieldData = {
                    PX_BID = -4.180000
                    DAYS_TO_MTY = 32
                }
            }
        }
    }
    [1] -4.18 32.00
    ReferenceDataResponse = {
        securityData[] = {
            securityData = {
                security = "AUD1M Curncy"
                eidData[] = {
                }
                fieldExceptions[] = {
                }
                sequenceNumber = 0
                fieldData = {
                    PX_BID = -4.180000
                    DAYS_TO_MTY = 31
                }
            }
        }
    }
    [1] -4.18 31.00
    ReferenceDataResponse = {
        securityData[] = {
            securityData = {
                security = "AUD1M Curncy"
                eidData[] = {
                }
                fieldExceptions[] = {
                }
                sequenceNumber = 0
                fieldData = {
                    PX_BID = -4.180000
                    DAYS_TO_MTY = 31
                }
            }
        }
    }
    [1] -4.18 31.00
    

    我相信所有彭博社在这里都在使用国内(例如澳大利亚)和外国(例如美国)假日日历来构建 DAYS_TO_MTY . 这些因假期和周末而波动 . 因此,实现此目的的一种方法是在内部复制该逻辑,而根本不使用Bloomberg . 这也有一个好处是不会限制你的数据限制,我似乎记得这是这类查询的不幸副作用 .

相关问题