VIX 指数とは
恐怖指数とよばれる指数です。
S&P 500 が下落するのか安定するのかをこの指数で予測する投資家が多いです。
こんな感じで、15-30 の間を行ったり来たりしています。
現在は、28.21 ですね。
この値が高ければ高いほど、みんながビビっている(暴落する可能性が高いと感じている)です。
投資する際の一つの指標としてよく使われるやつです。
と、これ以上書くと株に関する記事になるし、そんなに詳しくないのでこの辺で。
やりたいこと
この記事では、現在の VIX 指数を自動で取得する方法について紹介します。
この先の展望としては、取った値を LINE に送信しようと思っています。
環境
Windows 10
Anaconda Jupyter Lab で開発
Selenium 3.141.0
実は、Selenium はもう 4.1.3 がでていますが、書き方ががらりとかわっていて
古風な方が好きなのでそのやり方でやります。
https://www.selenium.dev/downloads/
いや、最新の方法でやりたいんだ!という方はコードは参考にならないかもです。
手順
1 : Selenium をバージョンを指定してインストール
pip install selenium==3.141.0
2 : Webページにアクセスする。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
driver = webdriver.Chrome(ChromeDriverManager().install())
URL = r"https://www.yahoo.co.jp/"
driver.get(URL)
Selenium では、WebDriver というものを使います。
この WebDriver でブラウザを自動操作できるんですが、Chrome のバージョンが更新されたら
エラーが起きたりするんですよね。これがまぁやっかい。
上のコードだと、自動で調整してくれるので、とりあえずこれにしておけば便利です。
詳しいことが気になる人は、「selenium chromedriver バージョンエラー」で調べてみてください。
今回は、VIX 指数を Bloomberg から取得します。
以下のコードでまずは、Bloomberg の VIX 指数のページまでぶっ飛びます。
[注意] 大量にリクエストを送るとサーバーに負荷がかかります。アクセス元が禁止していないか、負荷がかかるほどのリクエストを送っていないかは必ず確認しましょう。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
driver = webdriver.Chrome(ChromeDriverManager().install())
mf_URL = r"https://www.bloomberg.co.jp/quote/VIX:IND"
driver.get(mf_URL)
実行すると、こんなページがでてきます。
奥に、欲しいデータがあるけども、その前にクッキーに関する情報がでてきていますね。
こいつを突破する必要がありそうです。
3 : クッキーを突破する必要がなかった。
とりあえず、以下のコードで奥にある VIX の値を取ってみました。
vix_value = driver.find_element_by_xpath(r"/html/body/div[5]/main/div/div/div[1]/div/div[3]/div[2]")
print(vix_value.text)
結果 : 28.21
エラーなく取れてしまった。のでクッキーどうこうはなかったことにします。(適当)
これで、VIX 指数を取ることができました。コードをまとめるとこんな感じ。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
driver = webdriver.Chrome(ChromeDriverManager().install())
URL = r"https://www.bloomberg.co.jp/quote/VIX:IND"
driver.get(URL)
vix_value = driver.find_element_by_xpath(r"/html/body/div[5]/main/div/div/div[1]/div/div[3]/div[2]")
print(vix_value.text)
driver.quit()
これを実行するとわかるけど、いちいちブラウザが開かれます。
値さえ取れれば、ブラウザは表示される必要ないので、
ブラウザを表示せずに値だけを取ってみます。
先に webdriver-manager をインストールしてください。
pip install webdriver-manager
これも必要だ。
pip install chromedriver-binary
次に以下のコードを使います。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
import time
option = Options()
option.add_argument('--headless')
driver = webdriver.Chrome(ChromeDriverManager().install(),options=option)
URL = r"https://www.bloomberg.co.jp/quote/VIX:IND"
driver.get(URL)
vix_value = driver.find_element_by_xpath(r"/html/body/div[5]/main/div/div/div[1]/div/div[3]/div[2]")
print(vix_value.text)
driver.quit()
これで完成。つぎは、取った値を LINE Notify で通知するというのをやってみます。
https://qiita.com/karaage_0921/items/ed18a9c543a83e0b8eed