日々変動する株価データを題材にPythonにおけるデータ分析のいろはを学んでいく本連載。第3回は複数のテクニカル指標の計算と可視化を説明します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
連載第2回では株価データの取得、データフレームの基本的な取り扱い、簡単な可視化方法を紹介しました。第3回は、複数のテクニカル指標の計算と可視化、株価データの考察をしてみましょう。
連載の趣旨がデータ分析である以上、Python自体の言語仕様や文法に関しては詳しい説明を割愛する場合があることをご了承ください。
サンプルファイルを実行する場合は、サンプルファイルのリンクを開いた後に、メニューの「ファイル」から「ドライブにコピーを保存」を選択して保存したコピーを「Google Colaboratory」で実行してください。
Pythonでは外部ライブラリをインストールすることで、より高度な機能を利用することができます。本稿では、Google Colaboratoryでデータを可視化するためのライブラリをインストールし、株価データを詳細に可視化できるような環境を構築します。
今回は「TA-Lib」という金融データを分析するためのライブラリを利用します。Ta-Libは、株価の推移から将来の値動きを予想する「テクニカル指標」を200以上計算できるライブラリです。Ta-Libでよく利用されるオシレーターには次のものがあります。
名前 | 概要 |
---|---|
MACD | 売買シグナルを検出 |
RSI | 買われ過ぎ、売られ過ぎを判断 |
stochastic | 変動幅の中で終値の位置を判断 |
パラボリック | 相場、トレンドの転換点を検出 |
表1 よく利用されるオシレーター |
TA-Libで算出できる全てのテクニカル指標は、公式ドキュメント(https://ta-lib.org/function.html)で確認できます。
Ta-Libは、pipによるインストールには対応していません。ソースコードを入手した後で、Google Colaboratoryでコンパイル、バイナリを作成してインストールします。
!wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz !tar -xzvf ta-lib-0.4.0-src.tar.gz !cd ta-lib && ./configure --prefix=/usr && make && make install !pip install Ta-Lib
Google Colaboratoryは仮想環境を備えており、オープンソースのソフトウェアをインストールすることが可能です。今回はTa-Libをソースコードからコンパイルして、バイナリを作成後、pipコマンドでインストールしました。実行した後に「Successfully installed」というメッセージが確認できればインストール完了です。なお、インストールには数分かかります。
株価を売買すべき転換点を「売買シグナル」といいます。株価が上下する転換点と考えておいてください。売買シグナルが分かると、どの時点で株を売る/買うというタイミングが分かります。この売買シグナルに注目して株価を分析してみます。
移動平均線の売買シグナルを利用したテクニカル指標の一つに「MACD」(Moving Average Convergence Divergence)があります。MACDでは、MACDラインとシグナルラインの2本の線で売買シグナルを検出します。
ライン | 概要 |
---|---|
MACDライン | 短期/長期の移動平均の差 |
シグナルライン | MACDラインの移動平均 |
表2 MACDで利用する線 |
TA-Libを利用してMACDを計算し、その結果を可視化してみましょう。
MACDは、TA-LIbで簡単に計算できます。実際に計算したMACDの値を確認してみましょう。今回は「MCJ(6670)」の株価を例に説明します。
MACDの計算
import talib as ta df = get_stock_data(6670) # (株)MCJ(6670)の株価を取得 # 終値からMACDを計算 close = df['Close'] macd, macdsignal, _ = ta.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9) df['macd'] = macd df['macd_signal'] = macdsignal df.tail()
TA-LibのMACDメソッドに終値のシリーズと短期日数、長期日数、シグナル日数を渡すと、MACD、シグナル、2つの差分がそれぞれシリーズで得られます。利用するのは、MACD、シグナルのみなので、その2つを取得してデータフレームに格納しています。MACDを計算する書式は次の通りです。
%MACD%, %シグナルライン%, %2つの差分% = %TA-Libオブジェクト%.MACD(%終値のシリーズ%, fastperiod=短期日数, slowperiod=長期日数, signalperiod=シグナル日数)
MACDを計算する際のパラメーターは、MACDを考案したジェラルド・アペル氏が勧める、12日、26日、9日を利用しています。算出したMACDとMACDシグナルを、それぞれmacd, macd_signalの名前でデータフレームに格納します。サンプルを実行すると、次のようにMACDとMACDシグナルが計算できていることが分かります。
各テクニカル指標を計算する際のパラメーターは、一般的によく利用されている値を用いています。本連載では、株価分析の手法の解説が趣旨なので、テクニカル指標のパラメーターは1つの例として考えてください。
計算したMACDをmplfinanceで可視化してみます。直近100日分のMACDをローソク足、出来高とともに表示します。
import mplfinance as mpf mdf = df.tail(100) # 直近100日分のデータ apd = [ mpf.make_addplot(mdf['macd'], panel=2, color='red'), # パネルの2番地に赤で描画 mpf.make_addplot(mdf['macd_signal'], panel=2, color='blue'), ] mpf.plot(mdf, type='candle', volume=True, addplot=apd)
連載第2回で説明したように、make_addplotメソッドでMACDとMACDシグナルを追加しています。その際に、panelプロパティで表示する領域、colorプロパティで線の色を指定します。panelプロパティは、表示する領域を上から順に「0,1,2,,,N」で指定します。今回は、ローソク足と出来高の下にMACDを表示するので、panelプロパティには2を指定しました。
MACDラインがシグナルラインを下から上に追い抜いたところ(①、②)で、株価が上昇に転じていることが分かります。逆に、MACDラインがシグナルラインを上から下に追い抜いたところ(③、④)で、株価が下落に転じていることが分かります。①、②が買い、③、④が売りのタイミングと判断できます。
このようにMACDの2本の線で売買シグナルが検出できました。
Copyright © ITmedia, Inc. All Rights Reserved.