日銀BOTottoについて

日銀BOTotto「日銀の事をつぶやきたいBotで、前場の終わりにその日のETF購入見込み、日銀の資産購入の動き」をつぶやきます。

ゴールデンウィークのStay Home企画でプログラムを勉強し始め、「何か作ろう」と考え、思いついただけで、深い意味はあんまりないですが、フォローして頂ければ嬉しいです。

日銀BOTottoの紹介です。

機能1. 前場終わりにETF購入予測をつぶやく

前場終了11:30の後に「前日のTOPIXの終値」からの騰落率を見て、午後に日銀の購入見込みを呟きます。

「前場終わりで前日終値-0.5%以上下落」だと、ほぼ確実に購入と言われていましたが、それより低い下落率でも日銀購入が入ることも20-30%の割合であります。

この記事を書いた時点で

 「かなりの確率で買い入れますよ」→100%買い入れ

 「買い入れはないです」→ 100%買い入れなし。

 「買い入れるか微妙です」→ 1回だけ買い入れ

って感じです。

Python勉強したので語らせて!

仕組みは、Google Cloud Schedulerで定期起動させたGoogle Cloud Function上の関数でChromedriverを動かし「東京証券取引所が発表しているデータ」を取得しています。途中から前場の分足のキャプチャ画像も入れる様にしました。(プログラムなのに画面キャプチャ出来ると知ってビックリしました。)  

 

機能2.日銀のETF購入実績をつぶやく

その日の夜に実際に日銀のETFの購入があったかを呟きます。

購入がないとアッさりしてますが、実際ETFの購入があった際には「復習」として「その日の日経平均のチャート」を呟きます。下記例は明らかに後場になって上昇していて日銀の影響が想像できるチャートです。

Python勉強したので語らせて!

周期起動は他と同じ仕組みですが、日銀が毎日更新・公開している「指数連動型上場投資信託受益権(ETF)および不動産投資法人投資口(J-REIT)の買入結果ならびにETFの貸付結果」を利用しています。「エクセルファイルをダウンロード→データ整形・作成→グラフ作成→ツイート」をプログラムで自動化しています。Pythonはグラフのデザイニングが難しいですね。

 

機能3.日銀の資産実績について呟く

3-1 日銀のバランスシート上の資産

日銀の総資産は決算以外に、営業毎旬報告として10日毎に更新・公開されます。こちらは約定金額ベースの資産になります。

更新された翌日に「国債保有額」「ETF保有額」「社債保有額」「REIT保有額」を呟きます。また一カ月前からの増減も記載してます。

Python勉強したので語らせて!

HTMLのWebページからのスクレイピングです。最新ファイルのURLの作成→最新バランスシートのHTMLを取得→テーブルタグ情報から文字列サーチと値取得と典型的な手法です。

3-2 今年の国債の購入額

今年の国債の保有増加額を更新時に呟きます。年間80兆円の上限が撤廃されていますが、上半期はペースが遅いと思っていましたが、コロナの対応で国債が30兆円位追加で発行されるので、受け皿としては準備OKですね。(皮肉ってます)

 

3-3 今年のETFの購入額

今年のETFの購入額を更新時に呟きます。2019年は6兆円が上限でしたが、2020年は上限が12兆円まで拡大されています。「状況に応じて」ということで12兆円買い入れるかは未定です。

 

3-4 なぜかFRBの資産額も

週に一度つぶやきます。日銀が600兆のバランスシートに対して、FRBは7兆ドルほどになっています。世界の中央銀行の緩和政策と連携していくという意味で気になります。

3-5 資産額グラフをチャート付で呟く

しつこいですが、月例で「ETF」「国債」「社債」「J-REIT」の保有額が過去最高だったらば更新します。

Python勉強したので語らせて!

Pythonのグラフ表現を勉強したものの、使いづらくギブアップしてグラフ機能はGoogle Spreadsheetを使うことにしまた。

1)クラウドストレージに日銀資産をファイル(CSV)を保存。月初に更新

2)定期的にデータをスプレッドシートに読み込み。グラフを自動更新

3)スプレッドシートのグラフをBotのプログラムから読み込んでつぶやく。

これでExcelを使う様にデザインしたグラフを自動更新し、Botで利用できる様になりました。この時AppScript(JavaScriptみたいの)でスプレッドシートが定期更新できる簡単なプログラムを書きました。当然AppScriptも初めてですが一度プログラムを覚えると別の言語でも抵抗感が減りますね。

.PNG

機能4.日銀/ETFのニュースについて呟く

毎日お昼頃に、過去24時間に「日銀」関連のニュースがあればつぶやきます。ニュースの質の問題から現在は敢えて「日経新聞」に限定しています。

 

Python勉強したので語らせて!

Googleでのニュース検索でRSSフィードを「キーワード」と「期間指定」で作成できます。これを1日一回チェックし、24時間以内の該当ニュースだけツイートするプログラムを書きました。重複でツイートしない様に時間を厳密にするのが、少し面倒でしたが、サンプルコードはたくさん落ちているので、30分もかからず動きました。

機能5.「教えて!にちぎん」を呟く

日銀が出している「教えて!にちぎん」は、日本銀行や金融、経済に関する質問についてQ&A形式で解説したコンテンツです。

こちらをランダムで呟きます。Twitterの文字数制限があるので簡易化する場合がありますが、本コンテンツへのリンク付きで呟きます。

Python勉強したので語らせて!

日銀のサイトに約200程のQ&Aがあったので、日銀のサイトをスクレイピングし、データフレームを作成しました。日銀のサイトはシンプルで綺麗に作られているので練習台にも良いです。Twitterの文字数制限の140文字に収める様に

・「2文以上のものは1文のみ利用する」

・回答で「トータルで制限の140文字を超えた場合は削り(…続く)等をつける

・実際のコンテンツへのリンクを短縮URLに変換し付与する。

等の処理をしました。処理済のシナリオを「クラウドのストレージ」に保存しています。ストレージを使うと幅が広がりますね。

今後の日銀BOTottoの展望

ネタがマイナーなだけに拡張性があまりないですね。

日銀が公開している情報の開示場所や内容が変われば、動かなくなりますが、日銀はフォルダ構成や情報開示のフォーマットが安定しているのでリスクは低いかと思っています。

日銀の買い入れ予測は、現在、トライアルで毎日分足データを取得してみています(下記、キャプチャ)。前場の終わりと購入実績のデータが溜まったら機械学習にかけてみたいな、と思いました。

趣味を続けるのに重要な「コスト」ですが、Google Cloudを使っていますが、今までに「36円のコスト」しか発生していません。しかも「無料枠300ドル」があるので支払いはゼロですね。コストの心配をしなくても良いというのは続けやすいですね。

何事にも言えますが、興味を持てて続ける事ができれば良いですね。

Python初めて一カ月の記事です。

オッサンがゼロから一か月Pythonプログラムして感じた事