「AIで株分析!知らないと損」
グローバルゴリラー李です!
私は、まだ20代の頃にAIの時代を迎えられたのがラッキーだなと思っています。
AIの急速な発展により、自動運転もできるようになり、単純なPCでやる業務もAIが代わりにやってくれる時代になってきました。でも一方で、そんな時代に適用できるか慌ててしまいますよね。もはや、自分の仕事もAIに奪われるかもしれない?との危機感すら出てきたくらいです。
ですから、少しでもAIの知識を身につけたいと思いました。
さて、今回はPythonを使った、株の分析の方法について話していきたいと思います。よろしくお願い致します。
株を分析することは、多少専門的な知識が必要になってくるため、知らなくてはいけないことがたくさんあります。もちろん、0から基礎知識をしっかり学んでいくことが大事かとは思います。ですが、そればっかりに注力しますと、中途半端になりがちです。
そこで必要なのが、AIに沿って、株のトレンドを整理して、必要に応じて知識を身に着けていくことかと思います。
個人的には、株の分析とは、データを取得、整理、可視化にするという3つのステップがあると思っています。この3つのステップを補うために活用できるのが、pythonを使った分析です。pythonにはパワフルのライブラリがありますので、この工程の難易度は比較的低くなるかと思います。では、早速説明を始めさせていただきましょう。
目次
1. 必須知識
株の分析をするためには、まずは必須の知識として下記2つが必要です。
1-1. 基礎
・Python
まずは、pythonでコードを書いたり、内容を理解する基礎的な知識が必要です。もちろん一見難しそうに聞こえますが、下記にてpythonのコードの書き方を説明致しますので、ここで諦めずに、最後までご覧いただければと存じます。
1-2. 環境
・anaconda
Anaconda はデータサイエンス向けのPythonパッケージなどを提供するプラットフォームです。科学技術計算などを中心とした、多くのモジュールやツールのコンパイル済みバイナリファイルを提供しており、簡単にPythonを利用する環境を構築できます。
上記の準備が整いましたら、次は分析に必要なデータを集め、分析に移っていきます。
2. データ収集
2-1. データ取得
・pandas_datareader
これを設定することで、グラフ上にロウソクのような図を表現出来ます。これによって、株価の変動がわかるようになります。
2-2. データ整理
・numpy(配列計算を高速にするためのPythonのライブラリのことです)
・pandas(これを使うと、データ統計量を表示したり、グラフ化、データ分析のような作業を簡単に行うことができます)
numpyによって、処理速度が早くてコードがシンプルになり、pandasによってビジュアル的に分析しやすくなります。
2-3. データの可視化
・matplotlib seaborn
matplotlibとseabornをインストールすることによって、グラフが見やすいようにスタイルを設定することができるようになります。
3. データ分析
上記1.2. によって、データの可視化が容易になり、分析するための環境は整ったかと思います。
では、ここからはそのデータをどのように分析していくかを記載させていただきます。
- 複数株のトレンド
- 複数株のリレーション
株を分析する上で、各会社のトレンドの推移を確認する必要があります。次に、会社間の関係性をご覧いただくことで、ミクロとマクロでの視野で株を分析することが可能になります。
下記にて、この2つの分析を行うべく、順を追って説明させていただきます。
# basic
まずは、下記のコードをpythonに記載し、データを整理します。
import numpy as np import pandas as pd from pandas import Series, DataFrame
# get data
こちらのコードで欲しいデータを取得します。
import pandas_datareader as pdr
# pandas_datareader
株のデータを取得するAPIを提供します。
# visual
ここでは集めたデータをどのような図にし、見せるかを設定します。
import matplotlib.pyplot as plt import seaborn as sns
# time
時間軸を追加し、株の分析に必要な過去のデータをビジュアル化させます。
from datetime import datetime
# get_data_yahoo
下記の’BABA’ は中国のアリババのコードで、アリババのデータをyahoo様から集めてみた例です。
df = pdr.get_data_yahoo('BABA') df.head()
# high ,low ,open ,close ,volume の指標
株は、株価がどこから始まってどこで終わるのか、高いのか低いのかなどの指標が大事になってきますので、ビジュアル化した図でその指標に注目して分析いただければと思います。
例を挙げて説明させていただきます
以下の5社の2015年1月1日~2019年10月04日の株を分析しようとしてみようと思います。
- マイクロソフト(MSFT)
- アップル(AAPL)
- アマゾン(AMZN)
- フェイスブック(FB)
- グーグル(GOOG)
start = datetime(2015,1,1) company = ['MSFT', 'AAPL', 'AMZN', 'FB', 'GOOG'] top_df = pdr.get_data_yahoo(company, start=start)
# matplotlibで 株のトレンドを描く
top_df['Close'].plot()
上記までのコードを入れていただけますと、下記のようなグラフを作成でき、会社別での過去の推移を比べる際に使用できます。
# 株のトレンドによって,株価のゆらぎを可視化する
top_df_dr = top_df['Close'].pct_change() top_df_dr.plot()
このコードは、会社それぞれの株価の変動を表せられるようにすることができ、pct_changeによって変化の比率を示すことができるようになります。上記は過去からの株価の推移に対して、このコードは、その月での変動の比率を確認することが出来ます。
上記によってグラフで記載させてはいただきましたが、株価のゆらぎを図にすると見づらいかもしれません。
そんな時は、下記のコードを記載いただければ、散布図で表すことも可能です。
例としてアマゾン様とグーグル様の2社の散布図のコードを記載してみます。
sns.jointplot('AMZN', 'GOOG', top_df_dr)
いかがだったでしょうか。
お客様が気になっている会社をピックアップいただき、pythonにてビジュアル化し、分析してみるのも楽しいかと思います。
私も本当に初心者レベルですが、どんどん知識を高めていきたいと思います。