栗’s diary

Python勉強中。トレードに役立つようなTwitter bot開発中。暗号通貨の自動売買もやってみたい。

最近よく聞く利上げ確率

私が最近気にし出しただけかもしれませんが、米国の利上げ確率という文字を様々なメディアでよく目にするようになりました。

イエレンFRB議長:緩やかな利上げ見込む-具体的な時期触れず - Bloomberg

FF金利先物の動向に織り込まれた7月利上げの確率は5月末の時点で53%、今月3日は27%だったが、その後、約22%に低下した。

利上げ確率と一口に言っても様々なものがあるとは思いますが、ここでは記事中にあるFF金利先物から導出する利上げ確率について少々述べたいと思います。

ここでFF金利先物と言っているのは、正式名称は30日フェデラルファンド先物。各限月先物の値はその月のフェデラルファンド(の実行)金利の平均値を予想しています。(各限月先物の値はここで確認できます。)

いま現在、2016年6月物の値は99.6325。この値を用い、

100-99.6325=0.3675

が現段階での2016年6月FF実行金利の平均値予想となります。

この各限月の平均値予想の値が跳ね上がる(FF金利先物の値は下がる)月があるとします。それはその月にあるFOMCで利上げが実施されると市場が予想している、そういうことになるわけです。(FOMCの日程が月末とかだとそうも言えないんですが、詳しくは続く計算方法を理解して!)

 

さて、具体的な確率の計算方法ですが、

フェデラルファンド( FF )金利先物の FOMC 予想確率の計算(2010年4月)

CME Group FedWatch Tool – Fed Funds  Futures Probability Tree Calculator

です!(手抜き)

要は直近のFOMC(現在に当てはめると6月15日)で利上げするかどうかは、その当月(直近は6月物)とその前(後)の先物の値の変化幅から確率を求める。値が全く一緒なら市場参加者全員が変更なしを予想、大幅に変化していればFF金利変更の可能性が高し、という事。(比較する相手はその月にFOMCがない事が求められ、7月にFOMCがあるために5月物と比較して確率を求めます。5月中はそれでよかったんですが、限月終わったらどうすれば...。)

それ以降に関しては、前回利上げしたか維持したかの場合分けを行い確率を計算します。(例えば、7月までに2回利上げが行われるのは6月・7月ともに利上げされる場合、7月までに1回利上げが行われるのは6月で利上げが行われ7月では維持される場合と、6月は維持され7月で利上げされる場合、7月までに利上げが全く行われないのは6月・7月ともに利上げが行われなかった場合としてその確率を求める。9月までに3回(以下略))

個人的感想ですが、直近のFOMCの利上げ確率の計算には英語版の方が、2回目のFOMCの利上げ確率の計算は日本語版がわかりやすかったです。それぞれ例示が。

(正直、日本語版はきみ何言ってるのって箇所が幾つかあって理解するのに苦労しました。)

 

このモデルの問題点は利上げ・利下げ一方通行でしか考えられないこと、利上げ(下げ)幅に一定の値(現状は0.25)を用いないといけないことでしょうか。

例えば、現状利下げを予想する人はさすがにいないとは思いますが、今後複雑な状況になった(例:利上げか維持か利下げかの三択が考えられる)時とかはこのモデルの枠内では無理。その可能性はかなりなさげだが...。

また、利上げ幅が0.25か0.50かを迷う局面(これは将来的にありそう)では、改良を求められます。

 

とはいえ、求めてみました。9月までしかないのは単に文字数制限...。

 

答え合わせはCountdown to FOMC - CME Groupで。

スクレイピングでこの値を持ってこればいいんだが、その技術はなかった。6月の利上げ確率は5月先物がなくなってどうしたもんじゃろの~と思ったが、逆算して5月平均を0.365として計算しています。)

おまけでどの月に行われると見てるのかも算出。正直、この値の算出にはやや問題がある事を自覚してまする。

 

ツイッターbot作成の道(その4)

定期的にWeb情報を取得し呟く事は出来るようになりました。次はいよいよサイトの更新がされるや否や呟く、そういうこと。cronを知ってから薄々想像してましたが、次のサイトでやっぱりって感じでした。

qiita.com

つまり頻繁にサイトを訪れて、更新されたかどうかを調べるわけですね。なかなか迷惑(笑)GAEでは最短1分単位で対象サイトを訪れられます。

 

これならこれまでの知識の延長で出来るわけですが、ただ一つ、比較するためのログを残しておく必要があります。より壮大なことをやろうとするとそのうちデータベースとのデータのやり取りが必要になる事は覚悟してますが、今回はもっとお手軽にデータをやり取りしたいなと思いググってみました。そうして辿り着いたのがJSON (JavaScript Object Notation)

d.hatena.ne.jp

英語はサクサクッとクリア。でもやっぱり日本語...。プログラムは動くけど出力されたファイルが読めない、私が。そこでちゃんと見つけてきました。

d.hatena.ne.jp

テスト環境では成功。if文比較も出来ました。

 

さて、それではGAEにDeploy

IOError: [Errno 30] Read-only file system

も、もしかして・・・

 書き込み不可かよ ><

 

 

 

現在のbot機能

我がbot

twitter.com

基本、平日に活動します。

現在の機能は、

  • 1時間に一回、ドル円と日経平均先物を呟く。(日経平均先物は残念ながら10分遅れ。時間帯によってSGXとCMEを使い分け。リアルタイムで日経平均先物の情報を取得できる無料サイトがあれば教えてね。)
  • 6:50にCMEのFF金利先物から利上げ確率を計算して呟く。答え合わせはCountdown to FOMC - CME Groupで。計算方法についてはそのうち記事で紹介する予定。
  • TDnetの開示情報を場中30分単位で若干のフィルターをかけて呟く。来週からは5分単位に切り替えていく所存。

現在取り組んでいるのは、指定した企業サイトからPR情報が更新されたら即呟く事。これが出来れば、当初目論んでいたツイッターbotのための技術は取得できたことになるのだが。

ツイッターbot作成の道(その3):細かいcron

※本記事は別ブログで書いた内容を多少の加筆修正の上、転載したものです。

 

マーケット情報を呟く定期botを作るのが目標なので土日は静かにしていたい。
具体的には月曜の7時から土曜の7時までの間1時間おきにツイートしたい。

cronでそこら辺の指定ないのかなって探してみたけど見つからず。
公式のレファレンスには、

every 5 minutes from 10:00 to 14:00 (10時から14時までの間5分おきに)
every monday 09:00 (毎週月曜9時に)
2nd,third mon,wed,thu of march 17:00 (3月の第2第3の月曜水曜木曜に)

とかならあるけど、直接参考になるものはなかった。

試行錯誤していくつかの組み合わせパターンを試してみたけど、すべてエラー。
こういうニーズってあんまりないのだろうか。

cronをいくつも書いちゃうという荒業もあろうが、
今回はpython側でdatetimeモジュールを使って曜日や時間を調べて分岐させるという方法を取りました。
(でもこれだと無駄にURL叩いちゃうことになるんだよな。)

「月曜の7時から土曜の7時までの間1時間おきに」をcronでシンプルに書く方法があれば教えてくださいませ。