Pythonプログラミングによる投資テクニカル分析の学習手順をマニュアル化

9月 19, 2021

これは「プログラミングして投資分析したいけど,何から学んでいけばよいかわからない」という人向けの記事です

Pythonで投資分析をしたいけど,どう手をつけたらいいの…?

確かに投資に関係するプログラミングといってもデータを取得したり,株価の描画したり,データを加工したりなど,いろいろな要素がありますからね.

今回は,どのような手順でスキルを身に付けていけば良いかを提案しますね.

助かる~!

ただし,基本的なテクニカル分析(例:移動平均線MACDボリンジャーバンドなど)は証券口座のページで見れたりするので,そこまで凝ったプログラミングをする予定のない人はこの記事を読む必要はないと思います.

証券口座で見れるものだけを時間をかけてプログラミングをしても虚しいからね~
反対に,凝ったプログラミングをしたいひとはプログラミングの基本が必要だから,この記事を見る必要があるってことね!

さて,提案する学習手順は以下です

学習手順

0.プログラミングする環境を整える

1.各種データを取得できるようになる

2.各指標の計算ができるようになる

3.各指標を使って少し高度な計算・処理できるようになる

4.分析力・考察力を鍛える

以降でひとつひとつ説明していきますが,あまり詳しくは説明しませんので手順だけ抑え,細かいところは他の記事や本で勉強しましょう

0.プログラミングする環境を整える

これは準備段階ですが,Pythonを実行できる環境がないと何もできませんので,まずはプログラミング環境を整えましょう.

といはいっても,Pythonなら初心者でも比較的簡単に,しかも無料でプログラミング環境を整えることができます.

なんなら,Google Colaboratoryを使えば環境を自分で整える必要はなく,すぐにでもプログラミングを始めることができます(ただしGoogle アカウントが必要です).

Google Colaboratoryの使い方は以下のリンクが分かりやすいです.

Web上でPythonを実行できるGoogle Colaboratoryの魅力!Hello,Worldまでの流れを紹介

最初のうちはコレを使うのが楽です.

ただし,Google ColaboratoryのようなツールはWebで動くためインターネットがつながっていないと使えません.したがって,慣れてきたら自分のパソコンにPythonをインストールすると良いでしょう.

Windowsを使っているひとは,以下のリンクを参考にしてください.

データ分析の第一歩! Python(パイソン)をインストールしましょう【Windows編】

ここまでで,pythonライブラリをインストールしたり,簡単な計算(足し算やprint)ができるくらいになれば次に進みましょう.

1.各種データを取得できるようになる

データを色々いじったり考察するのが分析というものなので,投資分析をするには投資商品に関するデータを取得しなければ始まりません.

データ取得のためのライブラリをインストールする

幸運なことに,Pythonではいろいろな投資商品に関するデータ(例:株価データ)が簡単に取得できるライブラリが用意されています.

ここでは株価に注目して話します.
例えば,『pandas_datareader』というライブラリを用いれば,株価の時系列データやPER(Price Earnings Ratio)などを取得できます.

pandas_datareaderを使用するには,自分のパソコンを利用しているひとはpipなどでインストールしてください.

pip install pandas_datareader

Google Colaboratoryを使っているひとはすでにpandas_datareaderが用意されているのでインストールは必要ないです.

データを取得するコード

例として,2008年1月1日から現在までの日経平均株価の時系列データをYahoo!financeから取得してみたいと思います.取得するコードは,以下の通りです(pandas_datareaderを使う場合).

import pandas_datareader.data as web
import datetime

start = datetime.date(2008,1,1)
end = datetime.date.today()

data = web.DataReader('^N225', 'yahoo', start, end)

たったこれだけ!?

たったこれだけです.「data」に取得したデータが詰まっているので,printして見てみましょう.

print(data)
                    High           Low          Open         Close       Volume     Adj Close
Date
2008-01-07  14667.849609  14438.610352  14549.379883  14500.549805  139800000.0  14500.549805
2008-01-08  14547.799805  14365.860352  14429.299805  14528.669922  146800000.0  14528.669922
2008-01-09  14602.650391  14271.570312  14364.709961  14599.160156  155500000.0  14599.160156
...                  ...           ...           ...           ...          ...           ...
2021-03-16  30026.400391  29755.470703  29770.390625  29921.089844   83800000.0  29921.089844
2021-03-17  29984.970703  29825.160156  29836.830078  29914.330078   74600000.0  29914.330078
2021-03-18  30485.000000  30041.500000  30148.480469  30216.750000          0.0  30216.750000

Highは高値,Lowは安値,Openは始値,Closeは終値,Volumeは出来高,Adj Closeは調整後終値を意味します.

ちなみに,このAdj Close(調整後終値)を描画してみると以下のようになります.

import matplotlib.pyplot as plt

data["Adj Close"].plot(figsize=(8,6),fontsize=18)

plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1, fontsize=18)
plt.grid(True)
plt.show()

この「株価データ取得と描画」に関しては
pandas datareaderをインストールして株価データを取得する方法【日本株・米国株】
で詳しく解説していますので必要のある方はご覧ください

ちなみに,PERの取得は以下でできます.ここでは米国個別株であるコカ・コーラ(KO)を例にしています.

KO = web.get_quote_yahoo('KO')['trailingPE']

printしてみると,

print(KO)
KO    28.508379

このPERの取得に関しては,詳しくは米国株のPERなどの指標を取得してスクリーニングするなどをご覧ください.

基本的には,データを一度取得したらCSVファイルなどに保存して,それ以降はAPI側のサーバーに負荷がかからないようにCSVファイルから呼び出すようにしましょう.

2.各指標の計算ができるようになる

データが取得できたので,それを使って投資に関係する指標を計算できるようになりましょう.

基本的な指標としては,例えば以下のようなものがありますね.

投資分析指標の例

移動平均線,ボリンジャーバンド,MACD,RSI,VIX指数,PER,EPS,などなど

先ほど見たように,PERやEPSなどはYahoo!financeなどから直接取得できる場合がありますから,その場合は株価などから計算して算出する必要はありません.VIX指数も取得できます.

一方,移動平均線やボリンジャーバンド,MACD,RSIなどは株価データの値を使って計算する必要があると思います(証券口座のページなどですでに計算されたデータを直接取得する方法もあるのかもしれませんが…).

基本的な考え方としては各指標の計算式を調べ,その計算を行うコードを書けばよいですが,幸いにもPythonでは株価さえ取得していれば自動的にこれらの指標を計算してくれるライブラリが存在しています.
つまり,多くの場合は計算式を書く必要はないということです.

例を出すと,『TA-Lib』というライブラリを用いると移動平均線やボリンジャーバンド,MACD,RSIを一行で計算してくれます.

以下の記事でTA-Libを使っていくつかのテクニカル指標を計算しているので,TA-Libを使ってみたい人は参考にしてみてください.

ひとつだけ例を出すと,終値のデータcloseを用いて,9日RSIや14日RSIは以下で計算できます.

rsi9 = ta.RSI(close, timeperiod=9)
rsi14 = ta.RSI(close, timeperiod=14)

これを描画すると,以下のようになっています.

plt.plot(rsi9,label='rsi9')
plt.plot(rsi14,label='rsi14')
plt.xlabel('date')
plt.ylabel('RSI')
plt.legend()
plt.show()

このコードについては

【Python】TA-LibによるRSIの取得・描画

を参照

Pythonを使えばこんなに簡単に指標が得られるのね!

簡単に計算できてしましますが,わけもかわらず指標を取得・計算するのではなく,並行して各指標の意味を理解しながら進めましょう
そうでなければ,分析することはできません.

3.各指標を使って少し高度な計算・処理できるようになる

とりあえずは分析の準備は整ったので,次はこの指標を使ってオリジナルな分析をしていきましょう.

オリジナルな分析!?何をすればいいの!?

なぜPythonで投資分析をしようと思ったのかを思い出せばよいと思います.
たとえば,『割安な銘柄を見つけたい』,『オリジナルな売買シグナルを構築して自動で検出したい』,『株価や指標の相関を見たい』だったり,『機械学習で株価を予測したい』などです.

少し高度な計算・処理の例

割安な銘柄を見つける

自己流の売買判断を構築して自動で検出する

株価や指標の相関を見る

機械学習で株価を予測

例1:割安な銘柄を見つける

株価の割安・割高を判断する指標として,先ほど紹介したPER(Price Earnings Ratio)やPBR(Price Book-value Ratio)などがあり,これを抽出(スクリーニング)することで銘柄選定を行ったりできます.

以下の記事では低PERの米国個別株をスクリーニング方法を紹介していますから,参考にしてみてください.

米国株のPERなどの指標を取得してスクリーニングする【Python, pandas datareader】

他にも,ROE(自己資本利益率)が高い銘柄やEPS(Earnings Per Share)が高い銘柄をスクリーニングしたり,複数の指標でより絞ってスクリーニングするのも良いでしょう(例:低PERかつ高ROEなど).

例2:自己流の売買判断を構築して自動で検出する

テクニカル指標を用いて売買判断をする手法が提案されています.

例えば,複数の移動平均線の交差するときに売買する(ゴールデンクロス,デッドクロス)方法や,ローソク足の形を見て売買する方法などがあります.

しかしながら,個人によって狙っている銘柄は異なり,各銘柄に適したシグナルがあると思うので,銘柄を分析したうえで,オリジナルなシグナルを構築すると良いでしょう.

例3:株価や指標の相関を見る

たとえば長期金利と株価の相関を見ることで,「長期金利が上がったら株価が下がる」といった傾向が分かり,投資判断の参考にできるかもしれません(あくまで例です).

ただし,それを見るときには統計学の知識が必要になるかもしれませんので,合わせて勉強していきましょう.

例4:機械学習で株価を予測

近年では,機械学習で株価を予測しようとする研究が広まっています.

Pythonでは初心者でも比較的簡単に機械学習ができるライブラリが揃っています.一例として,FaceBook社が開発したProphetがあり,モデルの構築も自動でやってくれます.

Facebook製時系列予測「Prophet」で株価を予測してみました

ただし,現在,機械学習で株価を精度よく予測できている手法・ツールの例はほとんど見られないので,あくまで参考までにする必要がありますし,また結果を見るには機械学習の背景知識が必要になります.

やはり,機械学習に任せるのはデータ分析・計算に留めて,株価の予測は自分の頭でやるのが良いと思います.

4.分析力・考察を鍛える

プログラミング能力が上がっても,得られたデータを用いて正しい分析・考察ができなければ投資としてはあまり意味がありません.

また,データだけで判断するのではなく,時事ニュースやファンダメンタルズ分析と組み合わせてデータを眺めると良いでしょう.

そのためには各テクニカル指標の意味を正しく理解し,また決算書や財務諸表を読めるようになることが必要ですね.

まとめ

学習手順

0.プログラミングする環境を整える

1.各種データを取得できるようになる

2.各指標の計算ができるようになる

3.各指標を使って少し高度な計算・処理できるようになる

4.分析力・考察力を鍛える

・各指標の意味を理解しながら進めましょう

・各指標の知識だけでなく,時事ニュースやファンダメンタルズ分析,統計学,場合によっては機械学習の知識が必要になるかもしれません

・細かいところは改めて他の記事や本で勉強しましょう

投資に関する免責事項
本記事は投資に関する考え方を提供するものであり,投資勧誘を目的とするものではありません.投資は自己責任でお願い致します.