首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >彭博资讯下载

彭博资讯下载
EN

Stack Overflow用户
提问于 2017-05-17 12:12:59
回答 1查看 1.6K关注 0票数 0

我试图从彭博社( Bloomberg )获得一些外汇远期数据,以计算一些收益率差异。要做到这一点,我需要降低与价值日期和结算日期之前的天数,因为价格点是定价的(即男高音)。我已经尝试了,在下面,但这不工作和返回NAs。尽管观点显示:

代码语言:javascript
运行
复制
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公式来下载。因此,我编写了一个循环如下:

代码语言:javascript
运行
复制
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]))))}

这是印刷品

代码语言:javascript
运行
复制
[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值并不会发生变化(正如他们应该做的那样)。我的另一个问题是,代码中最难理解的代码行ever...it所需的时间就像我在mydate中查询的次数一样多。

是否有任何方法可以一次下载上述查询并/或更有效地编写此查询?

任何帮助都很感激。

亲切的问候

皮埃尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-18 14:13:08

我猜想字段PX_BID不支持REFERENCE_DATE重写,而字段DAYS_TO_MTY支持重写。如果您查看彭博终端中的FLDS命令,您可以看到REFERENCE_DATEDAYS_TO_MTY一起出现,而不是与PX_BID一起出现。正如Dirk在评论中所指出的,确认这一点的最好方法是在终端上提供帮助。

关于性能问题,这种查询的工作方式是发送多个请求和接收多个响应。如果你看看这些回复,你就会看到这个。

代码语言:javascript
运行
复制
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。这些波动是因为假日和周末。因此,要做到这一点,一种方法就是在内部复制这种逻辑,而根本不使用彭博。这也将有利于避免限制数据限制,我似乎记得这是这类查询的一个不幸的副作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44024538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档