こんにちは。TATです。
今日のテーマは「異なる株価データを横並びで比較する」です。
テーマの通り、異なる株価データを用いてパフォーマンスを比較します。
当然ながら、株価は銘柄によって異なります。
1,000円代のものもあれば、2万円代のものもあります。
こういったデータを横並びで比較するには少し工夫が必要です。
ここでは、異なる株価データを横並びで比較するということをPythonを使って実装してみます。
また、Pythonで株価データを扱う記事については記事が散在しているのでこちらにまとめています。
株価データの取得方法やテクニカル分析の計算方法、チャートの可視化などについてはこちらからどうぞ。
Pythonで株価データを扱う方法まとめ【データの取得・分析・可視化等、なんでもできます】
続きを見る
目次
【コード解説】Pythonで異なる株価データを横並びで比較する
株価データを用意する
まずは比較に用いる株価データを用意します。
(おさらい)株価データの取得
今回用意した株価データはこちらです。
2020年1月1日〜2020年12月31日までのデータを用意しました。
用意するデータ
- 日経平均
- NYダウ
- トヨタ(7203)
- 任天堂(7974)
個別銘柄のみでなく指数データも入れて、アメリカの指数(NYダウ)も入れました。
株価データの取得方法には過去記事で解説しているので割愛します。
【日本株対応】Pythonで株価のローソク足データを取得する方法まとめ【CSV、ライブラリ、スクレイピング】
続きを見る
こちらの記事で紹介しているpandas_datareaderを使って株価データを取得しました。
比較の際には終値しか使わないので、調整後の終値だけを抽出しています。
from pandas_datareader import data # 株価データを取得 d = data.DataReader(["^DJI", "^N225", "7203.T", "7974.T"] , "yahoo", "2020-01-01", "2020-12-31") # 調整後の終値を抽出 df = d["Adj Close"]
こんなに短いコードで株価データが取得できてしまうPythonの便利さを痛感します。
^DJIがNYダウ、^N225が日経平均を示します。
このティッカーシンボルについてはhttps://finance.yahoo.comから該当の銘柄を探すと確認できます。
取得したデータがこちらです。
データの整形
アメリカ市場は年末年始も1月1日以外は開いているのでデータがありますね。
ここは全て統一するために2020-01-06以降のデータだけにしてしまいます。
さらにアメリカと日本は祝日が異なるので、日ごとのデータをみているとどちらかのデータが欠損している日がちょくちょくあります。
ゴールデンウィークあたりを見るとわかりやすいです。
こうしたデータはチャートにする際にバグるので、補完する必要があります。
ここでは直前の値で補完してしまいましょう。
fillnaを使うと1行で完了します。
先ほどNaNだった箇所が直前の値で補完されていることがわかります。
ffillと指定すると、直前の値で補完されます。bfillと指定すると直後の値で補完されます。
また、fillna(0)みたいに値を指定すると、NaNは全て0に置換されます。
fillnaは、データ整理の時、欠損データを補完するのに役立ちます。
これでデータの準備が完了しました。
株価データを横並びで比較する
データの準備ができたので比較していきます。
そのまま比較してみる
まずはノリでそのまま比較してみましょうw
手っ取り早くplot関数で可視化してみます。(jupyterの場合は%matplotlib inlineをお忘れなく)
ご覧の通り、それぞれのデータのスケールが違うので比較しにくいことが確認できます。
任天堂の株価は6万円を超えていますが、トヨタは1万円未満なので、株価の低いトヨタの株価の変動が見えづらいですね。
さらに言えばNYダウはドルなのでそもそも単位が違いますw
そのまま比較するにはあまりにも無理があることが、チャートをみてもよくわかるかと思います。
相対値で比較する
ではどうしたらいいか。
答えはシンプルで、相対値で比較することです。
ある日の株価を基準として、そこからの変化を比較します。
こうすること、「基準日から何%上がっている」みたいにデータをみることができるので、スケールの違うデータでも横並びで比較することができます。
よく経済ニュースでも「2020年末の株価を1とした際のチャートがこちらです」みたいに紹介されていることがあります。
これからやろうとしているのはまさにこれです。
この方法を用いれば、スケールが違くても単位が違くても横並びで比較することができます。
Pythonで相対値を計算する
それではPythonを使って相対値を計算していきます。
今回は統一して2020年1月6日以降のデータに揃えたので、この日を基準日としてここからの変化率を見ていくことにします。
この計算もPythonなら1行で完了します。
計算結果をdf2に格納しました。
locを使って該当する行のデータを取得します。
Dateはデータの型がDatetimeになっているので文字列で指定すると失敗します。
datetimeを使ってDate型で指定してあげるとうまくいきます。
抽出したデータでdfを割れば完成です。
それぞれのカラムに対応して割り算してくれます。
1行目のデータは全て1になってるので正しく計算されていることが確認できます。
相対値データを確認する
計算結果を確認してみます。
先ほどと同様にplot関数を使ってパパッと確認しましょう。
ご覧の通り、全てのラインが1からスタートしており、パフォーマンスを横並びで比較することができていますね。
結果を見ると任天堂の圧勝です。
巣篭もり需要で業績が好調でしたからね。
決算を受けて爆上げしました。
年始と年末で見ると60%の上昇です。
凄まじいですね。
またNYダウと日経平均などといった異なる単位のデータもきちんと比較することができます。
概ね、NYダウと日経平均の動きは似ていることがわかります。。
このように、相対値を利用すると、異なるスケールや単位のデータでも横並びで比較することができます。
データの分析・可視化にはPythonが最適!
本記事で紹介したコードは、全てPythonを使って書いています。
Pythonはデータの分析や可視化を得意とするプログラミング言語で、さらにAI関連のライブラリーも豊富で昨今のAIブームで需要が急拡大しています。
→ 【いますぐ始められます】データ分析をするならPythonが最適です。
また、Pythonは比較的学びやすい言語でもあります。
実際、僕は社会人になってからPythonを独学で習得して転職にも成功し、Python独学をきっかけに人生が大きく変わりました。
→ 【実体験】ゼロからのPython独学を決意してから転職を掴み取るまでのお話。
Pythonの学習方法についてはいろいろな方法があります。
僕はUdemyを選びましたが、書籍やプログラミングスクールも選択肢になります。
→ 【決定版】Python独学ロードマップ【完全初心者からでもOKです】
→ 【まとめ】Pythonが学べるおすすめプログラミングスクール
→ プログラミングの独学にUdemyをおすすめする理由!【僕はUdemyでPythonを独学しました!】
まとめ
いかがでしたでしょうか。
今回は「異なる株価データを横並びで比較する」というテーマで、Pythonで相対値を使って株価データを比較する方法をご紹介しました。
相対値を使うことで、スケールが異なる、単位の異なるデータを横並びで比較することができるようになります。
ここで紹介しているコードは自由にコピっていただいて問題ないので、分析のお役に立てていただければと思います。
また、本記事を含めてPythonで株価データを扱う記事については記事が散在しているのでこちらにまとめています。
株価データの取得方法やテクニカル分析の計算方法、チャートの可視化などについてはこちらからどうぞ。
Pythonで株価データを扱う方法まとめ【データの取得・分析・可視化等、なんでもできます】
続きを見る
ここまで読んでくださり、ありがとうございました。