かずきち。の日記

サーバサイドエンジニアのつぶやき

【21行】vix指数(恐怖指数)を10分おきに通知するSlackBotを作成する【GoogleAppsScript】


VIX指数とは?

金融市場においてはチキンレースかのようにどこまで価格が吊り上がるか、降りるかの駆け引きがおこなわれている。

いかに崖の手前で車を止められるか?のように
暴落の直前まで株に投資し続けて、暴落直前で売ることができればよい。
そんな民衆の金融市場における恐怖指数を表したものを「VIX指数」と呼ぶ。

VIX指数とは「Volatility Index」の略で、シカゴオプション取引所がS&P500種指数のオプション取引の値動きをもとに算出・公表している指数です。一般的に、数値が高いほど、投資家が先行きに対して不安を感じているとされます。

つまりVIX指数とは民衆の金融市場に対する恐怖度の表れであり、
このVIX値が高ければ高いほど、投資家が恐怖のあまり投げ売りをしてしまう可能性があるという数値である。
そんな数値を毎時投稿するプログラムを立ててみる。

使うツールはビジネスコラボレーションツール「Slack」

コミュニケーションツールと言えば、LINEを使っている方も多いだろうが、
ビジネス分野では「Slack」と呼ばれるコラボレーションツールが存在する。
端的に言えば、プロジェクトごとのトークルームがあるチャットツールなのが特徴だ。
主にはプロジェクトの進捗を報告するために使われる。

「~~の会議の予定変更になりました」
「今月の売り上げ数値~~」

のようなことを報告すると考えていただければよい。

投稿できるのは人間だけじゃない

メールやチャットに流れてくるメッセージを送っているのは人間とは限らない。
プログラミングさえされていれば、自動化することは可能である。

今回はGoogleFinanceを利用する。

function postSlackbot() {
  //作者:kazukichi_0914
  //SlackAPIで登録したボットのトークンを設定する
  let token = "xoxbからはじまる自身のトークン";
  //ライブラリから導入したSlackAppを定義し、トークンを設定する
  let slackApp = SlackApp.create(token);
  //Slackボットがメッセージを投稿するチャンネルを定義する
  let channelId = "投稿したいSlackのチャンネルID";
  //Slackボットが投稿するメッセージを定義する
  let message = "SlackボットによるGASからの投稿メッセージです。"
  //SlackAppオブジェクトのpostMessageメソッドでボット投稿を行う
  //slackApp.postMessage(channelId, message);

  //ここからニュース指定
  const sheet1 = SpreadsheetApp.openById("自身のスプレッドシートID").getSheetByName("値");
  const vix = sheet1.getRange('B2').getValues();
  let message2 = vix+"\n\nvix動向\n"+"https://www.google.com/finance/quote/VIX:INDEXCBOE?sa=X&ved=2ahUKEwi_yOa8_8yEAxWOiK8BHTLsAWAQ3ecFegQIKBAf #vix";

  //vix値投稿
  slackApp.postMessage(channelId, message2);
}

の21行で完成である。

動作確認は下記である

あとは定期実行すれば、定期的にVIXという恐怖指数を通知し、
あまりに急変動が起きた際には持っている金融資産を売りに出せばよいというプログラムである。