2017-05-17 3 views
0

ブルームバーグからFXフォワードポイントデータを取得して、何らかの利回り差を計算しようとしています。そうするためには、価値の日付と決済日との間の日数を下げる必要があります(つまり、テナー)。私は以下のようにしようとしていますが、これはうまく動作せず、NAを返します。 poinstが表示されているものの:Rblpapi R Bloombergデータのダウンロード

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は、印刷は私の問題は、日(のようにしてくださいThgough私は基準日を上書きするときPX_MIDは、DOEノートの変更値ということである

[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 

です彼らはすべき)。私の他の問題は、それがこれまでにないコードの中で最も邪魔になることです...私は[mydate]のように多くのクエリを実行する必要があります。

上記のクエリをワンショットでダウンロードしたり、これをより効率的にコーディングする方法はありますか?

助けてください。

種類が

についてピエール

+0

問題チケットのGitHubレポで私たちに聞いたことはありませんか? –

+0

申し訳ありませんダーク、私はもっと広範な聴衆を得ようとしています...私は "礼儀正しい"を侵害していないことを願っています... – user3690243

+0

広いキャスティングには間違いはありませんが、既に与えられていた。要するに、ブルームバーグのターミナルであなたの最高の助けがF1を押すかもしれない。 –

答えて

1

は私の推測では、フィールドDAYS_TO_MTYがないのに対し、フィールドPX_BIDREFERENCE_DATEオーバーライド をサポートしていないということです。 ブルームバーグ端末でFLDSコマンドを見ると、が と表示され、DAYS_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を構築するために、国内(例えば、オーストラリア)と 外国(例えば米国)休日カレンダーを使用している、ここでやっていると信じています。 これらは休日や週末のために変動します。したがって、これを行う方法の1つは で、そのロジックを内部的に複製し、Bloombergをまったく使用しないことになります。これはまた、あなたのデータの制限を抑制しないという利点があります。私はこれらのタイプのクエリの不幸な副作用であることを思い起こさせるようです。

+0

ありがとう、これは非常に、detailledと簡潔な答え。私はあなたがこれを調べるのに感謝します。これは私にとって、そしてうまくいけば他の人にとって非常に役立ちます。 – user3690243

+0

うれしいことがわかりました@ user3690243。あなたの新しいので、チェックアウトする価値があるので、https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – mgilbert

関連する問題